ProcessManager on Solaris

Bryce McKinlay mckinlay@redhat.com
Wed Feb 16 02:41:00 GMT 2005


Eric Botcazou wrote:

>As exhibited in http://gcc.gnu.org/ml/gcc-testresults/2005-02/msg00579.html ,
>we have a problem with the ProcessManager on SPARC/Solaris: it randomly 
>deadlocks.
>
>The proper solution would be to block SIGCHLD in the Boehm GC thread, but I 
>don't know whether this is easily doable.
>
>What's the best approach to solving this problem?  Thanks in advance.
>  
>

It should be pretty trival to fix boehm-gc to block SIGCHLD. Basically 
you should just need to copy the pthread_sigmask() code from 
block_sigchld in posix-threads.cc into GC_pthread_create in 
solaris_pthreads.c. I think it would be fine to make that change in 
order to fix this problem, so please submit a patch.

This problem does expose a underlying flaw in our java.lang.Process 
implementation, however - If an application creates non-Java threads 
independently of libgcj, then ProcessManager may break as the signals 
could be delivered to the wrong thread. Unfortunately nobody has come up 
with a better solution for this, yet.

Regards

Bryce



More information about the Java mailing list