regression in uts_{omp,threads} on el-captain with gcc 6

Issue #403 resolved
Dan Bonachea created an issue

Nightly CI shows that uts_{omp,threads}-par have apparently regressed as of 2ba7f73 on (at least) el-captain with gcc 6 and debug. Strangely, these tests use no backend and very little UPC++ at all (just persona-specific progress and lpc_ff).

Here is the crash stack for uts_threads, with one thread:

    frame #7: 0x00000001000135c9 a.out`upcxx::assert_failed(func="upcxx::detail::persona_scope_redundant::~persona_scope_redundant()", file="/Users/bonachea/UPC/bxx-gcc-6/bld/upcxx.assert1.optlev0.dbgsym1.gasnet_par.smp/include/upcxx/persona.hpp", line=468, str=0x00007fff5fbff010) + 57 at diagnostic.hpp:14
  * frame #8: 0x00000001000144ac a.out`upcxx::detail::persona_scope_redundant::~persona_scope_redundant(this=0x00007fff5fbff080) + 140 at persona.hpp:468
    frame #9: 0x0000000100002d96 a.out`void upcxx::detail::persona_tls::foreach_active_as_top<upcxx::detail::persona_tls::persona_only_progress()::'lambda'(upcxx::persona&)>(this=0x0000000100a003a8, fn=0x00007fff5fbff110)::'lambda'(upcxx::persona&)&&) + 130 at persona.hpp:756
    frame #10: 0x0000000100001b19 a.out`upcxx::detail::persona_tls::persona_only_progress(this=0x0000000100a003a8) + 125 at persona.hpp:821
    frame #11: 0x0000000100001be5 a.out`vranks::progress() + 31 at vranks_threads.hpp:34
    frame #12: 0x0000000100002aa8 a.out`qd_progress(local_quiescence=true) + 23 at uts.cpp:257
    frame #13: 0x00000001000023ee a.out`uts_parallel(par_node_n=0x00007fff5fbff270, par_hash=0x00007fff5fbff260) + 521 at uts.cpp:149
    frame #14: 0x0000000100001e06 a.out`operator(__closure=0x00007fff5fbff3c0, vrank_me1=0, vrank_n1=1) + 262 at uts.cpp:50
    frame #15: 0x0000000100003052 a.out`operator(__closure=0x00007fff5fbff330, vrank_me=0) + 184 at vranks_threads.hpp:60
    frame #16: 0x0000000100003197 a.out`::spawn<main()::<lambda(int, int)> >(fn=<lambda(int, int)> @ 0x00007fff5fbff3c0)>) + 317 at vranks_threads.hpp:66
    frame #17: 0x0000000100001e63 a.out`main + 18 at uts.cpp:53

I'm still investigating.

Comments (1)

  1. Dan Bonachea reporter

    fixup: test/uts/uts_{omp,threads}: fixes for backend-free operation

    Turns out that #undef UPCXX_BACKEND_GASNET_PAR breaks our ABI leading to subtle breakage when linking libupcxx-par.

    These tests have now been upgraded to full headers and defines, they just skip the upcxx::init() to fire up the backend.

    Resolves issue #403

    → <<cset 9d21a3f36c01>>

  2. Log in to comment