Opened 3 years ago
Last modified 3 years 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 follow-up: 2 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
comment:2 Changed 3 years ago by barracuda156
Replying to ryandesign:
I submitted a fix for this issue upstream which is simply to include
<cstdlib>which is wheremallocandfreeare defined for C++ code.
Great, thank you!
Note: See
TracTickets for help on using
tickets.

I submitted a fix for this issue upstream which is simply to include
<cstdlib>which is wheremallocandfreeare 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.