We pass cc the -mt switch, but at least with this version that switch isn't enough to pull in libpthread. Can anybody confirm that with a more recent Sun compiler APR apps are getting libpthread?
This apparently results in apr_proc_create() forking more than just the calling thread, and you can get anoying stuff like this when running Apache's mod_ext_filter with the worker MPM:
[Mon Mar 31 13:52:20 2003] [error] (9)Bad file number: apr_accept: (client socket)
(By the time the fork()-ed child of the calling thread got around to exec()-ing the external filter program, the copy of the listener thread in the forked() child reached the accept() call.)
There was other undiagnosed havoc going on, including a child process exiting with a fatal error code which led to the parent bailing out with a large number of children left to clean up manually. This was probably the neatest failure:
ibthread panic: fault in libthread critical section : dumping core (PID: 4894 LWP 12)
stacktrace:
ff0faaa8
ff0fa8fc
ff103498
ff0ff8f0
ff105558
ff2d2bac
36964
ff2d29bc
ff10b728
ff2d2978
Cool, huh?
I haven't gotten to the point of teaching APR to pull in libpthread in this situation and rebuilding Apache's httpd and retesting, but I thought I'd put this out there to see if somebody with a newer compiler is getting better results.