[PATCH] D18496: [tsan] Fix a crash when exiting the main thread (e.g. dispatch_main)

Kuba Brecka via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 27 07:39:02 PDT 2016

kubabrecka added inline comments.

Comment at: test/tsan/Darwin/dispatch_main.mm:28
@@ +27,3 @@
+      sleep(3);
+      exit(0);
+    });
dvyukov wrote:
> kubabrecka wrote:
> > dvyukov wrote:
> > > This is exit which should terminate whole process. How is calling pthread_exit? Where? 
> > pthread_exit is called immediately from dispatch_main below, not here.
> I am confused. You do "// CHECK: Done.", so NSLog is executed. But then exit is not executed? And this is executed on the main thread? How does dispatch_main calls pthread_exit while we are blocked in sleep in the very same thread? From a signal handler? Why does it do it?
> I seem to be missing something.
This is not executed on the main thread, the main thread is terminated from dispatch_main.  This gets executed on a different thread, but technically still on the "main queue".


More information about the llvm-commits mailing list