4 ms·
> The test for spawning threads is fine when I run it under 'sudo dtruss test/spawn', but as soon as it's not under dtruss, it fails to spawn the thread. Ah, t
by ndesaulniers 11y ago
> The test for spawning threads is fine when I run it under 'sudo dtruss test/spawn', but as soon as it's not under dtruss, it fails to spawn the thread.
Ah, the fated Heisenbug.
I skipped over all of the calls in my dtruss example in this post, but I recall dtruss listing itself making a few syscalls. I wonder if a missing signal handler is to blame?
Also, thanks for pointing out Apple's pthread implementation! Great idea!
- ori_b 11y agoYes, I've also seen those issues with dtruss -- it seems to work better when you run it separately in another terminal: sudo dtruss -n myprocname It doesn't seem to trace itself, and now your program can run as a regular user. And in my case, it even catches the failure for bsdthread_create, although it drops some of the arguments, and the ones it does show seem identical enough. (And no, it's not the sudo that's making it work.)
- ndesaulniers 11y agoI'm reading through https://opensource.apple.com/source/libpthread/libpthread-138.10.4/src/pthread.c https://opensource.apple.com/source/libpthread/libpthread-13... and https://opensource.apple.com/source/Libc/Libc-1082.20.4/gen/nanosleep.c https://opensource.apple.com/source/Libc/Libc-1082.20.4/gen/... now!