SIGSEGVis a synchronous signal. It will be delivered to the thread that caused invalid memory access. From signal(7):
A signal can be generated (and therefore expected) for the process as a whole (for example, when sent using kill(2)) or for a specific stream (for example, certain signals, such as SIGSEGVand SIGFPEgenerated as a result of a certain machine instruction are streaming, and signals aimed at using pthread_kill(3)). A process-oriented signal can be delivered to any of the threads that currently have no signal blocked. If more than one of the streams has an unlocked signal, the Core selects an arbitrary stream to which the signal is transmitted.
source
share