http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48750
--- Comment #14 from Seth Heeren <bugs at sehe dot nl> 2011-04-27 09:48:57 UTC --- I just built a debian SID chroot and applied the diff to it's libstdc++6 (4.6.0-2), and tested your patch with the minimal.cpp from this bug report patch -p1 < ~sehe/attachment.cgi?id=24108 patching file parallel/multiway_merge.h patching file parallel/losertree.h patching file parallel/par_loop.h Hunk #1 succeeded at 91 with fuzz 1. patching file parallel/quicksort.h patching file parallel/random_shuffle.h patching file parallel/multiway_mergesort.h patching file parallel/partial_sum.h g++-4.6 -g -O0 -fopenmp minimal.cpp -o minimal -save-temps valgrind --leak-check=full ./minimal ==5960== LEAK SUMMARY: ==5960== definitely lost: 0 bytes in 0 blocks ==5960== indirectly lost: 0 bytes in 0 blocks ==5960== possibly lost: 456 bytes in 3 blocks ==5960== still reachable: 1,748 bytes in 3 blocks ==5960== suppressed: 0 bytes in 0 blocks The allocation possibly lost are attributed to GOMP_parallel_start from numeric:99). Helgrind gives quite the array of possible data races. I don't know whether I need to worry about them (as I don't know what kind of thread primitives GOMP uses internally and if helgrind supports them). If you want I can attach precompiled sources + val/helgrind outputs