> On Mar 21, 2016, at 8:20 AM, Per Liden <per.li...@oracle.com> wrote:
> 
> Hi Peter & David,
> 
> (Resurrecting an old thread here...)
> 
> On 2014-01-22 03:19, David Holmes wrote:
>> Hi Peter,
>> 
>> On 22/01/2014 12:00 AM, Peter Levart wrote:
>>> Hi, David, Kalyan,
>>> 
>>> Summing up the discussion, I propose the following patch for
>>> ReferenceHandler:
>>> 
>>> http://cr.openjdk.java.net/~plevart/jdk9-dev/OOMEInReferenceHandler/webrev.01/
>>> 
>> 
>> I can live with it, though it maybe that once Cleaner has been preloaded
>> instanceof can no longer throw OOME. Can't be 100% sure. And there's
>> some duplication/verbosity in the commentary that could be trimmed down :)
> 
> While investigating a Reference pending list issue on the GC side of things I 
> looked at the ReferenceHandler thread and noticed something which made me 
> uneasy. The fix for JDK-8022321 added pre-loading of the Cleaer class to 
> avoid OMME, but also moved the "instanceof Cleaner" inside the try/catch with 
> a comment that it "sometimes" can throw an OOME. I understand this was done 
> because we're not 100% sure if a OOME can still happen here, despite the 
> pre-loading.
> 
> However, if it can throw an OOME that means it's allocating, which in turn 
> means it can provoke a GC. If that happens, it looks to me like we have a bug 
> here. The ReferenceHandler thread is not allowed to provoke a GC while it's 
> holding on to the pending list lock, since the pending list might be updated 
> during a GC and "pending = r.discovered" will than overwrite something other 
> than "r", silently dropping any newly discovered References which will never 
> be discovered by the the GC again.
> 
> On the other hand, if an OOME can never happen (i.e. no GC) here then we're 
> good the comment is just incorrect. The instanceof check could be moved out 
> of the try/catch block again, like it was prior to this change, just to make 
> it obvious that we will not be able to cause new allocations inside the 
> critical section. Or at a minimum, the comment saying OOME can still happen 
> should be adjusted.
> 
> Thoughts?
> 
> thanks,
> Per
> 
> Btw, to the best of my knowledge, the pre-loading of Cleaner should avoid any 
> GC activity from instanceof, but I can't say that am a 100% sure either.

Per - I think you are raising the same issue as discussed in 
https://bugs.openjdk.java.net/browse/JDK-8055232.


Reply via email to