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