- edited description
Warning on GCC 11 w/LTO and default eager completion about deleting non-heap object the_always
Issue #485
resolved
Replication on Dirac:
$ export 'CC=/usr/local/pkg/gcc/11.1.0/bin/gcc -flto=4 -fuse-linker-plugin -ffat-lto-objects' 'CXX=/usr/local/pkg/gcc/11.1.0/bin/g++ -flto=4 -fuse-linker-plugin -ffat-lto-objects'
$ ./configure --disable-auto-conduit-detect --with-default-network=smp --enable-single=opt --disable-kind-cuda-uva
$ make
$ ./bin/upcxx -O -DUPCXX_DEFER_COMPLETION=0 bench/nebr_exchange.cpp
INFO: may need to build the required runtime. Please be patient.
In function ‘operator delete’,
inlined from ‘drop_for_proxied’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp:862:55,
inlined from ‘__ct_base ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:166:52,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:217:65,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:226:9,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:63:9,
inlined from ‘make_header’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:87:11,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:149:87,
inlined from ‘then’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/future1.hpp:279:7,
inlined from ‘operator()’ at bench/nebr_exchange.cpp:194:12,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/bind.hpp:229:62,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:132:64,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_then_lazy.hpp:264:9,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:132:64,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_then_lazy.hpp:264:9,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:121:85,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:211:126,
inlined from ‘leave_active’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:68:14:
/home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp:46:7: warning: ‘operator delete’ called on unallocated object ‘the_always’ [-Wfree-nonheap-object]
46 | UPCXX_OPNEW_AS_STD
| ^
/home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp: In member function ‘leave_active’:
/home/pagoda1/akamil/upcxx/src/future/core.cpp:20:15: note: declared here
20 | future_header future_header_result<>::the_always = {
| ^
In function ‘operator delete’,
inlined from ‘drop_for_proxied’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp:862:55,
inlined from ‘__ct_base ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:166:52,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:217:65,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:226:9,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:63:9,
inlined from ‘make_header’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:87:11,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:149:87,
inlined from ‘then’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/future1.hpp:279:7,
inlined from ‘operator()’ at bench/nebr_exchange.cpp:194:12,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/bind.hpp:229:62,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:121:85,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:211:126,
inlined from ‘leave_active’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:68:14:
/home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp:46:7: warning: ‘operator delete’ called on unallocated object ‘the_always’ [-Wfree-nonheap-object]
46 | UPCXX_OPNEW_AS_STD
| ^
/home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp: In member function ‘leave_active’:
/home/pagoda1/akamil/upcxx/src/future/core.cpp:20:15: note: declared here
20 | future_header future_header_result<>::the_always = {
| ^
In function ‘operator delete’,
inlined from ‘drop_for_proxied’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp:862:55,
inlined from ‘__ct_base ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:166:52,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:217:65,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_shref.hpp:226:9,
inlined from ‘__ct ’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:63:9,
inlined from ‘make_header’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:87:11,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:149:87,
inlined from ‘then’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/future1.hpp:279:7,
inlined from ‘operator()’ at bench/nebr_exchange.cpp:194:12,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/bind.hpp:229:62,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:132:64,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/impl_then_lazy.hpp:264:9,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:121:85,
inlined from ‘operator()’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/apply.hpp:211:126,
inlined from ‘leave_active’ at /home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/then.hpp:68:14:
/home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp:46:7: warning: ‘operator delete’ called on unallocated object ‘the_always’ [-Wfree-nonheap-object]
46 | UPCXX_OPNEW_AS_STD
| ^
/home/pagoda1/akamil/upcxx/bld/upcxx.assert0.optlev3.dbgsym0.gasnet_seq.smp/include/upcxx/future/core.hpp: In member function ‘leave_active’:
/home/pagoda1/akamil/upcxx/src/future/core.cpp:20:15: note: declared here
20 | future_header future_header_result<>::the_always = {
| ^
Using the same pattern as for the_nil
(issue 181) should hopefully fix this.
Comments (3)
-
reporter -
Related GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98753
-
reporter - changed status to resolved
Reimplement the_always using the same pattern as the_nil. Fixes
#485.→ <<cset 58ebce704bcb>>
- Log in to comment