Opened 7 months ago

Last modified 6 months ago

#69786 new defect

R-quanteda now fails on 10.12 and earlier with libc++: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.13 or newer

Reported by: barracuda156 Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.9.3
Keywords: sierra, elcapitan, yosemite, mavericks, mountainlion, lion, snowleopard, leopard, tiger Cc:
Port: R-quanteda

Description

using C++ compiler: ‘clang version 15.0.7’
using SDK: ‘NA’
/opt/local/bin/clang++-mp-15 -std=gnu++17 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/Rcpp/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/RcppArmadillo/include' -I/opt/local/include   -DTBB -I/opt/local/libexec/onetbb/include -I../inst/include -fPIC  -pipe -Os -stdlib=libc++ -arch x86_64  -c RcppExports.cpp -o RcppExports.o
/opt/local/bin/clang++-mp-15 -std=gnu++17 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/Rcpp/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/RcppArmadillo/include' -I/opt/local/include   -DTBB -I/opt/local/libexec/onetbb/include -I../inst/include -fPIC  -pipe -Os -stdlib=libc++ -arch x86_64  -c fcm.cpp -o fcm.o
In file included from fcm.cpp:1:
In file included from ../inst/include/lib.h:15:
In file included from /opt/local/libexec/onetbb/include/tbb/tbb.h:17:
In file included from /opt/local/libexec/onetbb/include/tbb/../oneapi/tbb.h:35:
In file included from /opt/local/libexec/onetbb/include/oneapi/tbb/combinable.h:22:
In file included from /opt/local/libexec/onetbb/include/oneapi/tbb/enumerable_thread_specific.h:36:
In file included from /opt/local/libexec/onetbb/include/oneapi/tbb/task.h:22:
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_task.h:216:13: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.13 or newer
    virtual ~task() = default;
            ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_task_handle.h:49:5: note: in defaulted destructor for 'tbb::detail::d1::task' first required here
    task_handle_task(d1::wait_context& wo, d1::task_group_context& ctx, d1::small_object_allocator& alloc)
    ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_task.h:216:13: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic
    virtual ~task() = default;
            ^
In file included from fcm.cpp:1:
In file included from ../inst/include/lib.h:15:
In file included from /opt/local/libexec/onetbb/include/tbb/tbb.h:17:
In file included from /opt/local/libexec/onetbb/include/tbb/../oneapi/tbb.h:40:
In file included from /opt/local/libexec/onetbb/include/oneapi/tbb/collaborative_call_once.h:20:
In file included from /opt/local/libexec/onetbb/include/oneapi/tbb/task_arena.h:29:
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_task_handle.h:56:5: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.13 or newer
    ~task_handle_task() override {
    ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_task_handle.h:56:5: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic
In file included from fcm.cpp:1:
In file included from ../inst/include/lib.h:15:
In file included from /opt/local/libexec/onetbb/include/tbb/tbb.h:17:
In file included from /opt/local/libexec/onetbb/include/tbb/../oneapi/tbb.h:49:
In file included from /opt/local/libexec/onetbb/include/oneapi/tbb/flow_graph.h:161:
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_flow_graph_impl.h:126:7: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.13 or newer
class graph_task : public task {
      ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_flow_graph_impl.h:128:5: note: in implicit destructor for 'tbb::detail::d1::graph_task' first required here
    graph_task(graph& g, small_object_allocator& allocator
    ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_flow_graph_impl.h:126:7: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic
class graph_task : public task {
      ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_flow_graph_impl.h:160:7: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.13 or newer
class priority_task_selector : public task {
      ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_flow_graph_impl.h:162:5: note: in implicit destructor for 'tbb::detail::d1::priority_task_selector' first required here
    priority_task_selector(graph_task_priority_queue_t& priority_queue, small_object_allocator& allocator)
    ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_flow_graph_impl.h:160:7: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic
class priority_task_selector : public task {
      ^
In file included from fcm.cpp:1:
In file included from ../inst/include/lib.h:15:
In file included from /opt/local/libexec/onetbb/include/tbb/tbb.h:17:
In file included from /opt/local/libexec/onetbb/include/tbb/../oneapi/tbb.h:54:
/opt/local/libexec/onetbb/include/oneapi/tbb/parallel_for.h:61:8: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.13 or newer
struct start_for : public task {
       ^
/opt/local/libexec/onetbb/include/oneapi/tbb/parallel_for.h:74:5: note: in implicit destructor for 'tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<int>, (lambda at fcm.cpp:106:58), const tbb::detail::d1::auto_partitioner>' first required here
    start_for( const Range& range, const Body& body, Partitioner& partitioner, small_object_allocator& alloc ) :
    ^
/opt/local/libexec/onetbb/include/oneapi/tbb/detail/_small_object_pool.h:63:57: note: in instantiation of member function 'tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<int>, (lambda at fcm.cpp:106:58), const tbb::detail::d1::auto_partitioner>::start_for' requested here
        auto constructed_object = new(allocated_object) Type(std::forward<Args>(args)...);
                                                        ^
/opt/local/libexec/onetbb/include/oneapi/tbb/parallel_for.h:107:42: note: in instantiation of function template specialization 'tbb::detail::d1::small_object_allocator::new_object<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<int>, (lambda at fcm.cpp:106:58), const tbb::detail::d1::auto_partitioner>, const tbb::detail::d1::blocked_range<int> &, const (lambda at fcm.cpp:106:58) &, const tbb::detail::d1::auto_partitioner &, tbb::detail::d1::small_object_allocator &>' requested here
            start_for& for_task = *alloc.new_object<start_for>(range, body, partitioner, alloc);
                                         ^
/opt/local/libexec/onetbb/include/oneapi/tbb/parallel_for.h:101:9: note: in instantiation of member function 'tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<int>, (lambda at fcm.cpp:106:58), const tbb::detail::d1::auto_partitioner>::run' requested here
        run(range, body, partitioner, context);
        ^
/opt/local/libexec/onetbb/include/oneapi/tbb/parallel_for.h:229:60: note: in instantiation of member function 'tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<int>, (lambda at fcm.cpp:106:58), const tbb::detail::d1::auto_partitioner>::run' requested here
    start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
                                                           ^
fcm.cpp:106:14: note: in instantiation of function template specialization 'tbb::detail::d1::parallel_for<tbb::detail::d1::blocked_range<int>, (lambda at fcm.cpp:106:58)>' requested here
        tbb::parallel_for(tbb::blocked_range<int>(0, H), [&](tbb::blocked_range<int> r) {
             ^
/opt/local/libexec/onetbb/include/oneapi/tbb/parallel_for.h:61:8: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic
struct start_for : public task {
       ^
5 errors generated.

Change History (2)

comment:1 Changed 6 months ago by aeiouaeiouaeiouaeiouaeiouaeiou

This can definitely be fixed by adding the -fno-aligned-allocation flag to CXX environment, but this trick doesn't work with the GCC compiler (mentioned in madness portfile).

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

Replying to aeiouaeiouaeiouaeiouaeiouaeiou:

This can definitely be fixed by adding the -fno-aligned-allocation flag to CXX environment, but this trick doesn't work with the GCC compiler (mentioned in madness portfile).

We do not have a problem with GCC here, it builds fine on my 10.6. (Perhaps it may fail with gcc + libc++, but such a configuration is not used anywhere presently.)

Note: See TracTickets for help on using tickets.