https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64177
Bug ID: 64177 Summary: Various cilk+ testsuite failures Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: testsuite Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Over the last 2 weeks, I've seen many Cilk+ test hangs (across various x86_64-linux and i686-linux regtests), grepping the test_summary outputs reveals: FAIL: c-c++-common/cilk-plus/CK/fib.c -O1 execution test FAIL: c-c++-common/cilk-plus/CK/fib_init_expr_xy.c -O2 -std=c99 execution test FAIL: c-c++-common/cilk-plus/CK/fib.c -g execution test FAIL: g++.dg/cilk-plus/CK/for1.cc -g -O2 -fcilkplus execution test FAIL: c-c++-common/cilk-plus/CK/fib_no_sync.c -g -O2 execution test FAIL: c-c++-common/cilk-plus/CK/spawnee_inline.c -g execution test FAIL: g++.dg/cilk-plus/CK/fib-opr-overload.cc -O1 -fcilkplus execution test FAIL: c-c++-common/cilk-plus/CK/cilk_for_ptr_iter.c -O1 execution test FAIL: c-c++-common/cilk-plus/CK/fib_no_sync.c -O3 -flto -g execution test FAIL: c-c++-common/cilk-plus/CK/spawning_arg.c -O3 -g execution test FAIL: c-c++-common/cilk-plus/CK/fib_init_expr_xy.c -O1 execution test FAIL: c-c++-common/cilk-plus/CK/spawnee_inline.c -g execution test FAIL: c-c++-common/cilk-plus/CK/cilk-for-2.c -g execution test FAIL: c-c++-common/cilk-plus/CK/cilk_for_ptr_iter.c -O3 execution test FAIL: c-c++-common/cilk-plus/CK/fib_no_sync.c -O3 execution test FAIL: c-c++-common/cilk-plus/CK/spawner_inline.c -O3 execution test FAIL: g++.dg/cilk-plus/CK/catch_exc.cc -O3 -fcilkplus execution test FAIL: c-c++-common/cilk-plus/CK/fib.c -g execution test FAIL: c-c++-common/cilk-plus/CK/steal_check.c -O2 -std=c99 execution test FAIL: c-c++-common/cilk-plus/CK/fib_no_sync.c -O2 -ftree-vectorize execution test FAIL: c-c++-common/cilk-plus/CK/spawning_arg.c -O1 execution test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O1 execution test This is on a i7-5960X CPU, i.e. 8 core, 16 threads, but usually happens only when the system is under high load (make -j16 toplevel check). I've managed to (after about 30 iterations) reproduce steal_check.c hang, and in that case it seems the Cilk+ runtime decided to schedule foo in the initial thread (the one which called main2), so obviously it then busy loops forever until killed, because the test relies on foo being run in a different thread from the initial thread. From what I've browsed on the web, seems _Cilk_spawn doesn't guarantee that the function is executed in a different thread, so it looks invalid to me (not to mention that it doesn't use any proper barriers in the busy waiting loop, so at least on non-i?86/x86_64 CPUs I'd say it would fail miserably very often). The question is if the other tests I saw failing are also bugy, or if there are races in the library. I'm using 3.17.4-300.fc21.x86_64 kernel (if that matters).