Hello, I am using the Boehm GC myself, and noticed that some system calls (in particular select) can be blocked by the GC (which is using signals and signal handlers to block threads) and return with an error of -1 and errno set to EINTR. I looked at gcj's libjava implementation to see if you handled it better than I did, and I noticed that you do handle EINTR in the select system call by using _Jv_select, and you also handle it when reading/writing to local files, but I think you omitted the reading/writing of network sockets and accept system calls. There might be other places too: basically what I understand of the Boehm GC is that it can block any thread at any place in order to do a GC, and when that happens in a thread within a system call that can return an error of EINTR, you have to treat that error specially and redo that system call.
-- Summary: Potential problems in libjava system calls with gc-boehm Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Stephane dot Epardaud at sophia dot inria dot fr CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19003