Bug: String deduplication misses code roots?

Zhengyu Gu zgu at redhat.com
Fri Feb 23 13:26:21 UTC 2018


On 02/23/2018 08:20 AM, Roman Kennke wrote:
> So, move the SuspendibleThreadSetJoiner sts_join; up to cover poll() maybe?

Can not do that, cause poll() does Monitor::wait(), which can block 
safepointing.

-Zhengyu


> 
> Changes look ok, but I'm not very much familiar with strdedup code...
> 
> Roman
> 
> On Tue, Feb 20, 2018 at 12:22 PM, Aleksey Shipilev <shade at redhat.com> wrote:
>> On 02/19/2018 11:06 PM, Zhengyu Gu wrote:
>>> But there does have a race in ShenandoahStrDedupThread::poll() method, where it does not participate
>>> safepoints, so it can interfere with root scanning.
>>>
>>> As you suggested, added simple version of oops_do() for verification.
>>>
>>> Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/strdedup_poll/webrev.00/
>>
>> OK, this makes sense. Thanks!
>>
>> Unfortunately, it still fails the same:
>>
>> #  Internal Error
>> (/home/shade/trunks/shenandoah-jdk10/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp:814),
>> pid=73301, tid=73322
>> #  Error: Shenandoah assert_marked_complete failed; Object should be marked (complete)
>>
>> Referenced from:
>>    interior location: 0x000014cfe66554fa
>>    outside of Java heap
>>    0x000014cfe66554fa is at entry_point+154 in (nmethod*)0x000014cfe6655090
>>
>> Object:
>>    0x00000000c0103348 - klass 0x00000001000007b0 [B
>>      not allocated after complete mark start
>>      not allocated after next mark start
>>      not marked complete
>>          marked next
>>          in collection set
>>    region: |0x000014cff806d400|    2|CS |BTE 0x00000000c0100000, 0x00000000c0180000,
>> 0x00000000c0180000|U 100%|T   0%|G   0%|S 100%|L  99%|FTS           55557|LTS           63058| |CP
>> 0|TAMS 0x00000000c0180000, 0x00000000c0180000|
>>
>> Forwardee:
>>    (the object itself)
>>
>> Thanks,
>> -Aleksey
>>


More information about the shenandoah-dev mailing list