Hi,

I'm trying to use dtrace to signal threads in my app when certain events 
happen, and the raise() action seemed adequate -- looking at the kernel 
sources, it sends a signal to the currently executing thread, and a quick 
microbenchmark confirmed this. However, further testing showed that if lots of 
threads hit the event simultaneously, the signal only gets delivered once, and 
may also get delivered to a different thread entirely (ie the main thread 
blocked in pthread_join). This makes sense given that raise() only promises to 
target the process, not a given thread.

Would it be possible to add an equivalent to lwp_kill() that specifically 
targets a thread? 

(I also tried setting a watchpoint using procfs, but copyout errors out instead 
of raising the thread-specific SIGTRAP I had hoped for...)

Thanks,
Ryan
--
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to