1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- # this file simulates a program that has been built with ThreadSanitizer
- # options
- message("TSAN_OPTIONS = [$ENV{TSAN_OPTIONS}]")
- string(REGEX REPLACE ".*log_path=\'([^\']*)\'.*" "\\1" LOG_FILE "$ENV{TSAN_OPTIONS}")
- message("LOG_FILE=[${LOG_FILE}]")
- set(error_types
- "data race"
- "data race on vptr (ctor/dtor vs virtual call)"
- "heap-use-after-free"
- "thread leak"
- "destroy of a locked mutex"
- "double lock of a mutex"
- "unlock of an unlocked mutex (or by a wrong thread)"
- "read lock of a write locked mutex"
- "read unlock of a write locked mutex"
- "signal-unsafe call inside of a signal"
- "signal handler spoils errno"
- "lock-order-inversion (potential deadlock)"
- )
- # clear the log file
- file(REMOVE "${LOG_FILE}.2343")
- # create an error of each type of thread santizer
- # these names come from tsan_report.cc in llvm
- foreach(error_type ${error_types} )
- file(APPEND "${LOG_FILE}.2343"
- "==================
- WARNING: ThreadSanitizer: ${error_type} (pid=27978)
- Write of size 4 at 0x7fe017ce906c by thread T1:
- #0 Thread1 ??:0 (exe+0x000000000bb0)
- #1 <null> <null>:0 (libtsan.so.0+0x00000001b279)
- Previous write of size 4 at 0x7fe017ce906c by main thread:
- #0 main ??:0 (exe+0x000000000c3c)
- Thread T1 (tid=27979, running) created by main thread at:
- #0 <null> <null>:0 (libtsan.so.0+0x00000001ed7b)
- #1 main ??:0 (exe+0x000000000c2c)
- SUMMARY: ThreadSanitizer: ${error_type} ??:0 Thread1
- ==================
- ")
- endforeach()
|