Skip to content

[6.0.14] ambiguous queue class reference on Solaris 11.4 compilation #2440

@danowar2k

Description

@danowar2k

Issue report

Preface: I'm currently building an Ansible playbook to finally reproduce the current state of my Redmine installation in a development environment. My local Redmine installation runs on a supported Solaris 11.4, but my dev VM can only run 11.4 release.
My Redmine install is still a super old Redmine 3.3.0 running on Ruby 2.3.8. I'm trying to upgrade, but before that I want to reproduce the environment on my VM. So I'm currently using the old a** versions...

When compiling mod_passenger 6.0.14 integration with apache 2.4.53 on Solaris 11.4 (yeah, sorry), I'm running into this error:

/usr/bin/g++ -m32 -o buildout/apache2/module_libpassenger_common/LoggingKit.o  -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Isrc/cxx_supportlib/vendor-copy/libuv/include -O3 -fPIC -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -I/app/tools/apache2/2.4.53/include -I/app/tools/apache2/2.4.53/include -I/app/tools/apache2/2.4.53/include -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -feliminate-unused-debug-symbols -feliminate-unused-debug-types -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -DHAS_ALLOCA_H -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -ggdb -std=gnu++11 -Wno-unused-local-typedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -pthreads -D__EXTENSIONS__ -D__SOLARIS__ -D_FILE_OFFSET_BITS=64 -DBOOST_HAS_STDINT_H -c src/cxx_supportlib/LoggingKit/Implementation.cpp
In file included from src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp:17:0,
                 from src/cxx_supportlib/vendor-modified/boost/config.hpp:57,
                 from src/cxx_supportlib/vendor-modified/boost/cstdint.hpp:36,
                 from src/cxx_supportlib/LoggingKit/Implementation.cpp:43:
src/cxx_supportlib/vendor-modified/boost/config/detail/posix_features.hpp:27:0: warning: "BOOST_HAS_STDINT_H" redefined
 #        define BOOST_HAS_STDINT_H

<command-line>:0:0: note: this is the location of the previous definition
In file included from src/cxx_supportlib/LoggingKit/Implementation.cpp:55:0:
src/cxx_supportlib/LoggingKit/Context.h:81:2: error: reference to ‘queue’ is ambiguous
  queue< pair<ConfigRealization *, MonotonicTimeUsec> > oldConfigs;
  ^~~~~
In file included from /usr/include/netinet/in.h:66:0,
                 from /usr/include/sys/socket.h:32,
                 from src/cxx_supportlib/oxt/system_calls.hpp:32,
                 from src/cxx_supportlib/oxt/thread.hpp:33,
                 from src/cxx_supportlib/LoggingKit/Implementation.cpp:46:
/usr/include/sys/stream.h:86:16: note: candidates are: struct queue
 typedef struct queue {
                ^~~~~
In file included from /usr/gcc/7/include/c++/7.3.0/queue:64:0,
                 from src/cxx_supportlib/LoggingKit/Implementation.cpp:35:
/usr/gcc/7/include/c++/7.3.0/bits/stl_queue.h:96:11: note:                 template<class _Tp, class _Sequence> class std::queue
     class queue
           ^~~~~
/usr/gcc/7/include/c++/7.3.0/bits/stl_queue.h:96:11: note:                 template<class _Tp, class _Sequence> class std::queue

Question 1: What is the problem?

  • What is the expected behavior?

At least this part of the compilation should finish

  • What is the actual behavior?

The queue class reference is ambiguous. There was already an issue dealing with this, at least in part, see #2016, but it was closed.

#2016 (reference) In this comment, there is a linked commit which fixes the issue, see bed9011.
This hasn't been merged to current stable yet, see https://github.com/phusion/passenger/blob/stable-6.0/src/cxx_supportlib/LoggingKit/Context.h

The easiest thing I think would be to merge the commit, but of course I don't know of any side effects.

Question 2: Passenger version and integration mode:

  • For example: open source 5.0.26 standalone; enterprise 5.0.21/nginx

Passenger open source 6.0.14 running on Ruby 2.3.8 (yeah, sorry, I'm trying to fix this right now) against a self-compiled 32 Bit Apache httpd 2.4.53 to build mod_passenger.

Question 3: OS or Linux distro, platform (including version):
Solaris 11.4 Release, x86_64

Question 4: Passenger installation method:

Your answer:
[x] RubyGems + Gemfile
(Gemfile.local for Redmine 3.3.0)

Question 5: Your app's programming language (including any version managers) and framework (including versions):
Ruby 2.3.8 without RVM, Rails 4.2.6

Question 6: Are you using a PaaS and/or containerization? If so which one?

No containerization. Using Vagrant 2.2.16 + VirtualBox 6.1.22 plus private Vagrant boxes.

Question 7: Anything else about your setup that we should know?

No, I think.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions