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

Reply via email to