In some circumstances, calling Thread.interrupt() will result in _Jv_MonitorEnter entering an infinite loop. This is because _Jv_MonitorEnter uses _Jv_CondWait, which is interruptable, without checking the return value.
There are more details in this thread: http://gcc.gnu.org/ml/java/2005-05/msg00006.html -- Summary: Hash synchronization: Thread.interrupt() can make _Jv_MonitorEnter hang Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mckinlay at redhat dot com 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=21557