Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
  • Sign in / Register
GHC
GHC
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
    • Insights
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
    • Locked Files
  • Issues 3,609
    • Issues 3,609
    • List
    • Boards
    • Labels
    • Milestones
  • Merge Requests 201
    • Merge Requests 201
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Security & Compliance
    • Security & Compliance
    • Dependency List
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Glasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #16150

Closed
Open
Opened Jan 08, 2019 by gnezdo@trac-gnezdo
  • Report abuse
  • New issue
Report abuse New issue

Data races in itimer_thread_func reported by ThreadSanitizer

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
Trac metadata
Trac field Value
Version 8.4.4
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC dvyukov@google.com
Operating system
Architecture

Related issues

  • Discussion
  • Designs
Assignee
Assign to
8.6.4
Milestone
8.6.4
Assign milestone
Time tracking
None
Due date
None
5
Labels
bug incorrect runtime result P::normal RTS Trac import
Assign labels
  • View project labels
Reference: ghc/ghc#16150