Java 7 should fix these bugs. In the meantime, Jetty includes several work arounds that deal with these problems. When Jetty employs these work arounds, you see messages in your logs like the following:
JVM BUG(s) - cancelled keys 16 times
JVM BUG(s) - recreating selector 4 times, cancelled keys 32 times
JVM BUG(s) - injecting delay 8 times
Konstantin Preisser made an interesting discovery, after reading my article “PHP Hangs On Numeric Value 2.2250738585072011e-308”: Java — both its runtime and compiler — go into an infinite loop when converting the decimal number 2.2250738585072012e-308 to double-precision binary floating-point.
I recently diagnosed the root cause of a concurrency bug, CR6822370,
and thought it sufficiently interesting to share the details. (CR 6822370 actually represents a
cluster of bugs that are now thought to be related by a common underlying issue).
Briefly, we have a lost wakeup bug in the native C++ Parker::park() platform-specific
infrastructure code that implements java.util.concurrent.LockSupport.park().
The lost wakeup arises from a race that itself arises because of architectural
reordering that in turn occurs because of missing memory barrier instructions.
The lost wakeup may manifest as various 'hangs' or instances of progress failure.
java_plugin:plugin, Option to turn off codebase lookup in AppletClassLoader during resource requests,State: closed,Reported: 15-APR-2002,Release Reported Against: 1.3,1.4,1.4.1,1.2fcs,1.3.1_03,1.3.1_07,1.4.0_00