Opened 4 months ago

Last modified 4 months ago

#69098 new defect

dispenso fails to build on 10.10–10.11: error: no member named 'malloc' in the global namespace

Reported by: barracuda156 Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: elcapitan, yosemite Cc:
Port: dispenso

Description

[ 33%] Building CXX object dispenso/CMakeFiles/dispenso.dir/pool_allocator.cpp.o
cd /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/build/dispenso && /usr/bin/clang++ -DDISPENSO_LIB_EXPORT -DDISPENSO_SHARED_LIB -Ddispenso_EXPORTS -I/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/.. -I/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/third-party/moodycamel -I/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/build -pipe -Os -DNDEBUG -I/opt/local/include -stdlib=libc++ -arch x86_64 -mmacosx-version-min=10.11 -fPIC -fvisibility=hidden -Wall -Wextra -pedantic -Wconversion -Wno-sign-conversion -Werror -std=c++14 -MD -MT dispenso/CMakeFiles/dispenso.dir/pool_allocator.cpp.o -MF CMakeFiles/dispenso.dir/pool_allocator.cpp.o.d -o CMakeFiles/dispenso.dir/pool_allocator.cpp.o -c /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/pool_allocator.cpp
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/detail/per_thread_info.cpp:8:
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/detail/per_thread_info.h:10:
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/platform.h:130:41: error: no member named 'malloc' in the global namespace
  char* ptr = reinterpret_cast<char*>(::malloc(bytes + alignment));
                                      ~~^
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/platform.h:152:5: error: no member named 'free' in the global namespace
  ::free(reinterpret_cast<void*>(recovered));
  ~~^
2 errors generated.
make[2]: *** [dispenso/CMakeFiles/dispenso.dir/detail/per_thread_info.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/pool_allocator.cpp:8:
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/pool_allocator.h:21:
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/platform.h:130:41: error: no member named 'malloc' in the global namespace
  char* ptr = reinterpret_cast<char*>(::malloc(bytes + alignment));
                                      ~~^
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/platform.h:152:5: error: no member named 'free' in the global namespace
  ::free(reinterpret_cast<void*>(recovered));
  ~~^
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/graph_executor.cpp:8:
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/graph_executor.h:9:
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/concurrent_vector.h:80:23: error: default initialization of an object of const type 'const dispenso::ReserveTagS' without a user-provided default constructor
constexpr ReserveTagS ReserveTag;
                      ^
                                {}
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/graph.cpp:8:
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/graph.h:17:
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/platform.h:130:41: error: no member named 'malloc' in the global namespace
  char* ptr = reinterpret_cast<char*>(::malloc(bytes + alignment));
                                      ~~^
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/../dispenso/platform.h:152:5: error: no member named 'free' in the global namespace
  ::free(reinterpret_cast<void*>(recovered));
  ~~^
2 errors generated.
make[2]: *** [dispenso/CMakeFiles/dispenso.dir/pool_allocator.cpp.o] Error 1
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/graph.cpp:151:55: error: no member named 'malloc' in the global namespace
          sizeof(NodeType), 128 * sizeof(NodeType), ::malloc, ::free);
                                                    ~~^
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_dispenso/dispenso/work/dispenso-1.2.0/dispenso/graph.cpp:151:65: error: no member named 'free' in the global namespace
          sizeof(NodeType), 128 * sizeof(NodeType), ::malloc, ::free);
                                                              ~~^
4 errors generated.
make[2]: *** [dispenso/CMakeFiles/dispenso.dir/graph.cpp.o] Error 1
1 error generated.

Change History (2)

comment:1 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

I submitted a fix for this issue upstream which is simply to include <cstdlib> which is where malloc and free are defined for C++ code. Presumably on other systems that don't see this problem, <cstdlib> gets included by some other system header.

The errors that occur after that are ones I've encountered before in QuantLib which reminds me that I haven't finished verifying the fix for that issue, so I'm working on that now, and if successful I can hopefully apply the same fix to dispenso. In the meantime, the workaround that worked for QuantLib was to prevent the use of clang < 900.

comment:2 in reply to:  1 Changed 4 months ago by barracuda156

Replying to ryandesign:

I submitted a fix for this issue upstream which is simply to include <cstdlib> which is where malloc and free are defined for C++ code.

Great, thank you!

Note: See TracTickets for help on using tickets.