Encountered a problem where our Java application running in a sMash environment on Linux hangs because of unreleased monitor locks. According to the javacore file, the offending thread is holding locks on 11 different objects, yet the thread is designed to call very short-lived synchronized methods from other objects, but in a serial fashion, so it should never have more than one lock at a time. Furthermore, the current stack trace of the thread shows it in "park" state, which is normal when it has no work to do. So, there should be no locks at all held by this thread, not the 11 we see in the javacore file. It appears the JRE has not released locks after the thread exited from a synchronized method.
The symptom does not occur all the time, but every few days in the long-running application. The workaround is to restart the JVM.
Are there any known bugs of this nature in the IBM JRE for Linux?
JRE version, etc:
1CIJAVAVERSION JRE 1.6.0 Linux x86-32 build jvmxi3260sr10fp1-20120202_101568 (pxi3260sr10fp1-20120321_01(SR10 FP1))
1CIVMVERSION VM build 20120202_101568
1CIGCVERSION GC - 20120202_AA
1CIJITMODES JIT enabled, AOT enabled, FSD disabled, HCR disabled
1CIRUNNINGAS Running as a standalone JVM