Entering f Entering g Entering h E1 handler before continue ================== WARNING: ThreadSanitizer: data race (pid=) Write of size 8 at by main thread (mutexes: write M): #0 camlReperform$race_ () #1 camlReperform$fun_ () #2 camlReperform$fiber1_ () #3 camlReperform$main_ () #4 camlReperform$entry () #5 caml_program () Previous read of size 8 at by thread T1 (mutexes: write M): #0 camlReperform$other_domain_ () #1 camlStdlib__Domain$body_ () As if synchronized via sleep: #0 nanosleep () #1 wg_wait () #2 camlReperform$entry () #3 caml_program () Mutex M () created at: #0 pthread_mutex_init () #1 caml_plat_mutex_init () #2 caml_init_domains () #3 caml_init_gc () Mutex M () created at: #0 pthread_mutex_init () #1 caml_plat_mutex_init () #2 caml_init_domains () #3 caml_init_gc () Thread T1 (tid=, running) created by main thread at: #0 pthread_create () #1 caml_domain_spawn () #2 caml_c_call () #3 camlStdlib__Domain$spawn_ () #4 camlReperform$entry () #5 caml_program () SUMMARY: ThreadSanitizer: data race (:) in camlReperform$race_ ================== ================== WARNING: ThreadSanitizer: data race (pid=) Write of size 8 at by main thread (mutexes: write M): #0 camlReperform$race_ () #1 camlReperform$h_ () #2 camlReperform$g_ () #3 camlReperform$f_ () #4 caml_runstack () #5 camlReperform$fiber2_ () #6 caml_runstack () #7 camlReperform$fun_ () #8 camlReperform$fiber1_ () #9 camlReperform$main_ () #10 camlReperform$entry () #11 caml_program () Previous read of size 8 at by thread T1 (mutexes: write M): #0 camlReperform$other_domain_ () #1 camlStdlib__Domain$body_ () As if synchronized via sleep: #0 nanosleep () #1 wg_wait () #2 camlReperform$entry () #3 caml_program () Mutex M () created at: #0 pthread_mutex_init () #1 caml_plat_mutex_init () #2 caml_init_domains () #3 caml_init_gc () Mutex M () created at: #0 pthread_mutex_init () #1 caml_plat_mutex_init () #2 caml_init_domains () #3 caml_init_gc () Thread T1 (tid=, running) created by main thread at: #0 pthread_create () #1 caml_domain_spawn () #2 caml_c_call () #3 camlStdlib__Domain$spawn_ () #4 camlReperform$entry () #5 caml_program () SUMMARY: ThreadSanitizer: data race (:) in camlReperform$race_ ================== Leaving h Leaving g Leaving f Value handler E1 handler after continue Result=42 ================== WARNING: ThreadSanitizer: data race (pid=) Write of size 8 at by main thread (mutexes: write M): #0 camlReperform$race_ () #1 camlReperform$entry () #2 caml_program () Previous read of size 8 at by thread T1 (mutexes: write M): #0 camlReperform$other_domain_ () #1 camlStdlib__Domain$body_ () As if synchronized via sleep: #0 nanosleep () #1 wg_wait () #2 camlReperform$entry () #3 caml_program () Mutex M () created at: #0 pthread_mutex_init () #1 caml_plat_mutex_init () #2 caml_init_domains () #3 caml_init_gc () Mutex M () created at: #0 pthread_mutex_init () #1 caml_plat_mutex_init () #2 caml_init_domains () #3 caml_init_gc () Thread T1 (tid=, running) created by main thread at: #0 pthread_create () #1 caml_domain_spawn () #2 caml_c_call () #3 camlStdlib__Domain$spawn_ () #4 camlReperform$entry () #5 caml_program () SUMMARY: ThreadSanitizer: data race (:) in camlReperform$race_ ================== ThreadSanitizer: reported 3 warnings