From: Jonathan Peyton Date: Mon, 21 Nov 2016 16:18:57 +0000 (+0000) Subject: Fix for D25504 - segfault because of double free()-ing in shutdown code. X-Git-Tag: llvmorg-4.0.0-rc1~3994 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7ca7ef0478003e2649963246aee7f07b6cb95843;p=platform%2Fupstream%2Fllvm.git Fix for D25504 - segfault because of double free()-ing in shutdown code. Paul Osmialowski pointed out a double free bug in shutdown code. This patch Moves the freeing of the implicit task to above the freeing of all fast memory to prevent the double-free issue. Differential Revision: https://reviews.llvm.org/D26860 llvm-svn: 287551 --- diff --git a/openmp/runtime/src/kmp_runtime.c b/openmp/runtime/src/kmp_runtime.c index c875f58..da602d9 100644 --- a/openmp/runtime/src/kmp_runtime.c +++ b/openmp/runtime/src/kmp_runtime.c @@ -5707,6 +5707,8 @@ __kmp_reap_thread( --__kmp_thread_pool_nth; }; // if + __kmp_free_implicit_task(thread); + // Free the fast memory for tasking #if USE_FAST_MEMORY __kmp_free_fast_memory( thread ); @@ -5762,7 +5764,6 @@ __kmp_reap_thread( }; // if #endif /* KMP_AFFINITY_SUPPORTED */ - __kmp_free_implicit_task(thread); __kmp_reap_team( thread->th.th_serial_team ); thread->th.th_serial_team = NULL; __kmp_free( thread );