[GHC] #16150: Data races in itimer_thread_func reported by ThreadSanitizer
GHC
ghc-devs at haskell.org
Tue Jan 8 17:35:48 UTC 2019
#16150: Data races in itimer_thread_func reported by ThreadSanitizer
-------------------------------------+-------------------------------------
Reporter: gnezdo | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Runtime | Version: 8.4.4
System |
Keywords: | Operating System: Linux
Architecture: x86_64 | Type of failure: Incorrect result
(amd64) | at runtime
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Our local environment allows running Haskell programs under
ThreadSanitizer. Even though the GHC runtime and compiled Haskell code are
not instrumented, ThreadSanitizer still found a bug through interceptor
instrumentation. I'll try to minimize the case and create a reproducer,
but in case somebody wants to look at this with just the report, here it
is (mildly massaged to remove irrelevant addresses):
{{{
==================
WARNING: ThreadSanitizer: data race (pid=2367)
Write of size 1 at 0x55986a3e4f10 by thread T1:
#0 pthread_mutex_destroy llvm/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:1245:3
#1 itimer_thread_func
vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:152:5
Previous atomic read of size 1 at 0x55986a3e4f10 by main thread:
#0 pthread_mutex_lock llvm/compiler-
rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:4097:3
#1 startTicker vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:184:5
#2 exitTicker vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:206
#3 __libc_start_main <null> (libc.so.6+0x38bbc)
Location is global 'mutex' of size 40 at 0x55986a3e4f10
Thread T1 'ghc_ticker' (tid=2369, running) created by main thread at:
#0 pthread_create llvm/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:980:3
#1 initTicker vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:171:11
#2 __libc_start_main <null> (libc.so.6+0x38bbc)
SUMMARY: ThreadSanitizer: data race
vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:152:5 in itimer_thread_func
==================
==================
WARNING: ThreadSanitizer: data race (pid=2367)
Write of size 8 at 0x55986a3e4ee0 by thread T1:
#0 pthread_cond_destroy llvm/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:1216:3
#1 itimer_thread_func
vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:153:5
Previous read of size 8 at 0x55986a3e4ee0 by main thread (mutexes: write
M146179626018688784):
#0 pthread_cond_signal llvm/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:1202:3
#1 signalCondition vendor_src/v8_4_4/rts/posix/OSThreads.c:111:11
#2 __libc_start_main <null> (libc.so.6+0x38bbc)
Location is global 'start_cond' of size 48 at 0x55986a3e4ee0
Mutex M146179626018688784 is already destroyed.
Thread T1 'ghc_ticker' (tid=2369, running) created by main thread at:
#0 pthread_create llvm/compiler-
rt/lib/tsan/rtl/tsan_interceptors.cc:980:3
#1 initTicker vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:171:11
#2 __libc_start_main <null> (libc.so.6+0x38bbc)
SUMMARY: ThreadSanitizer: data race
vendor_src/v8_4_4/rts/posix/itimer/Pthread.c:153:5 in itimer_thread_func
==================
ThreadSanitizer: reported 2 warnings
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16150>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list