Public bug reported: Upgrading openjdk6 from 6b27-1.12.6-1ubuntu0.12.04.4 to 6b30-1.13.1-1ubuntu2~0.12.04.1 (Precise update in Jan / Feb 2014) causes finalizers not to run reliably. Whilst it is good practice to avoid use of finalizers, JDBC uses them to close connections, sockets use them to close sockets etc., and after this upgrade both of them leak apparently randomly under moderate load.
This is difficult to replicate but we believe it is due to: https://java.net/jira/browse/OPENJDK6-29 which was introduced in b28. The critical sentences here are: "This can cause mayhem in the JVM because the flag fields at the end of the struct end up taking values determined by the contents of the stack frame where info is allocated. In particular, it can cause the post-jdk6-b28 GC to enqueue discovered References using the wrong link field which means that no reference processing (including finalization) occurs." This is fixed in b31, and the fix is a one line obviously correct change: http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/04e4c3ec6516 which correctly memset's a structure to zero, as opposed to only setting the first 8 bytes (64 bit) or 4 bytes (32 bit) to zero. As this is a clear regression caused by an update with a substantial impact (unresolvable memory leaks of objects with finalizers, other resource leaks including FD leaks), I think this is an SRU candidate for Precise (which is where we are seeing it). ** Affects: openjdk-6 (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1295987 Title: openjdk6 regression causes finalizers never to be called To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/1295987/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
