RFR: 8156500: deadlock provoked by new stress test com/sun/jdi/OomDebugTest.java
David Holmes
david.holmes at oracle.com
Tue Jun 28 23:23:14 UTC 2016
On 29/06/2016 8:43 AM, Kim Barrett wrote:
> Updated webrevs:
>
> Full:
> http://cr.openjdk.java.net/~kbarrett/8156500/jdk.01/
> http://cr.openjdk.java.net/~kbarrett/8156500/hotspot.01/
>
> Incremental:
> http://cr.openjdk.java.net/~kbarrett/8156500/jdk.01.inc/
Did Reference<?> not work? Just curious. I used to be a qualified Java
programmer back in the Java 5 era, but wildcards were always a bit iffy :)
> http://cr.openjdk.java.net/~kbarrett/8156500/hotspot.01.inc/
>
> Still investigating the initialization order for core exceptions.
I suspect it is as Coleen indicated that the module changes introduced
the new failure path that you hit. I did a quick check of the
initialization order in an old b50:
33 Initializing 'java/lang/Throwable' (0x0000001780002990)
...
46 Initializing 'java/lang/Exception'(no method) (0x0000001780003158)
47 Initializing 'java/lang/InterruptedException'(no method)
(0x00000017800178a8)
Compare that with a current build:
60 Initializing 'java/lang/ref/Reference$ReferenceHandler'
(0x000000080001e3f0)
61 Initializing 'java/lang/Throwable' (0x00000008000029f8)
62 Initializing 'java/lang/Exception'(no method) (0x00000008000031a8)
63 Initializing 'java/lang/InterruptedException'(no method)
(0x000000080001e6e0)
64 Initializing 'java/lang/ref/PhantomReference'(no method)
(0x0000000800006440)
Initialization of Throwable is much, much later (large parts of
java.lang and java.util are now initialized first!) and is obviously a
direct consequence of preinitializing InterruptedException.
So I would say that the module change did break this and that
initialization of Throwable (only) should be restored to a much higher
place in the initialization sequence.
Thanks,
David
More information about the core-libs-dev
mailing list