[ http://issues.apache.org/jira/browse/DIRMINA-202?page=comments#action_12373553 ]
John K Peterson commented on DIRMINA-202: ----------------------------------------- I found the problem. Classpath utilizes Thread.interrupt in it's Selector.wakeup call. However, the way JamVM implements Thread.interrupt, it will only interrupt monitors, not system calls like select. I've modified JamVM so that it sends SIGUSR2 on interrupt and installed a null signal handler for it. That's enough to interrupt the select system call and allow Selector.select to notice that the thread is interrupted. > Race condition in SocketAcceptorDelegate.unbind > ----------------------------------------------- > > Key: DIRMINA-202 > URL: http://issues.apache.org/jira/browse/DIRMINA-202 > Project: Directory MINA > Type: Bug > Reporter: John K Peterson > > On my system (Linux 2.4.22/JamVM 1.4.2/Classpath 0.90), ApacheDS gets stuck > in SocketAcceptorDelegate.unbind. > SocketAcceptorDelegate.unbind does the following: > 1) creates a cancellation request > 2) starts up a worker thread > 3) puts the cancellation request on the cancelQueue > 4) wakes up the worker thread's selector > 5) waits for the cancellation request to be done > The problem is that 4) assumes that 2) has gotten the worker thread to point > where it has called selector.select(). However, there's no guarantee that > the worker thread has gotten that far, in which case the wakeup occurs before > the select and then the select hangs. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
