Something I've discovered through (painful) experience is that threaded programs cannot portably
fork()
in one thread and then
wait()
for the forked process in another one.
This will work in some environments but fail explosively in others; the one I stubbed my toe on was a Linux 2.4 kernel based system (without NPTL , which is the usual state of affairs for 2.4-based Linux distributions).
Admittedly, mixing threads and
fork()
is a bit perverse, but sometimes it's what you need to do.
(I saw this in a Python program, but Python isn't doing anything special in the POSIX threads department so I have to expect that it's completely generic.)