RFR(xs): 8134749: SoftReferences declared dead too early

Tom Benson tom.benson at oracle.com
Mon Aug 31 18:27:13 UTC 2015


Per,
Also looks good to me.   I actually picked up both your changes, on the 
off chance it might help with 8130261.  (That appears it may be a 
problem with 'last ditch' GCs, which free all soft refs.  Yes, a 
longshot, but I tried it anyway.  No help.)

Tom

On 8/31/2015 2:20 PM, Jon Masamitsu wrote:
> Per,
>
> Change looks good.
>
> Could you please run some tests with your fix and 
> -XX:+UseDynamicNumberOfGCThreads and
> -XX:+UseParallelGC threads?  UseDynamicNumberOfGCThreads sometimes moves
> work among the queues to get them into queues that will be processed 
> by an active
> GC worker.  Thanks.
>
> Jon
>
>
> On 08/31/2015 07:15 AM, Per Liden wrote:
>>
>> Hi,
>>
>> While preparing a different patch I looked through the 
>> ReferenceProcessor and noticed what looks like a silent mistreatment 
>> of SoftReferences.
>>
>> Summary: RefProcPhase1Task uses WorkerThread::id() to select the list 
>> to process. After the recent changes to how WorkGang works[1], this 
>> no longer guarantees that all reference lists are processed. This in 
>> turn means we might kill SoftReferences even when the policy says 
>> they should be kept alive.
>>
>> The fix here would be to use the worker_id (named "i" in this code) 
>> passed into the Task's work() function instead of using 
>> WorkerThread::id().
>>
>>
>> [1] There's no longer any guarantee that all GangWorker threads will 
>> execute the Task's work() function, since a quick-to-wakeup worker 
>> thread might steal the work intended for a slow-to-wakeup worker thread.
>>
>>
>> Webrev: http://cr.openjdk.java.net/~pliden/8134749/webrev.0/
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8134749
>>
>> Testing: jprt
>>
>>
>> Btw, I'll to send out a follow-up patch (JDK-8134744) which makes 
>> sure WorkerThread::id() and the worker_id always match to avoid this 
>> type of bugs in the future.
>>
>> /Per
>




More information about the hotspot-gc-dev mailing list