[kaffe] patch for unix-jthread hang

Guilhem Lavaux guilhem at kaffe.org
Fri Aug 6 00:06:09 PDT 2004


jrandom wrote:

>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Hi y'all,
>
>Here's a small patch for a bug in unix-jthreads that i've been
>running into for a while.  Basically if there aren't any ready
>threads when reschedule() is called, control will enter handleIO(),
>which in turn will block on poll/select indefinitely until data
>is available.  The problem with this is that it doesn't take into
>account threads that are on the alarm queue - I saw this scenario
>occur when my JVM would hang for several minutes in handleIO, only
>to have a whole truckload of things fire up when I open a new socket.
>
>The OS I've tested this on uses poll, so I've only gone down the
>#if USE_POLL branch, but I modified the #else logic according to what
>I think should do the trick.  My C is /very/ rusty though, so please
>double check this :)
>
>muchas gracias,
>=jr
>  
>

Hi !

 Thank you very much for fixing that bug. All looks ok for me but for 
one line:
maxWait is is milliseconds and timeval.tv_usec is in microseconds.
So we must have (maxWait % 1000) * 1000 there.

>+               struct timeval maxWaitVal = { maxWait/1000, maxWait % 1000 };
>+               r = select(maxFd+1, &rd, &wr, 0, &maxWaitVal);
>+       }
>  
>

Cheers,

Guilhem.



More information about the kaffe mailing list