RFR: 8159237: PreservedMarks verification code fails

Stefan Karlsson stefan.karlsson at oracle.com
Fri Jun 10 13:54:52 UTC 2016


Thanks Leonid and Jesper for reviewing this fix. This is causing 
failures in our nightly testing so'll push it immediately.

StefanK

On 2016-06-10 14:18, Stefan Karlsson wrote:
> Hi all,
>
> Please review this patch to fix a recently introduced bug in the 
> verification code of the preserved marks code:
>
> http://cr.openjdk.java.net/~stefank/8159237/webrev.01/
> https://bugs.openjdk.java.net/browse/JDK-8159237
>
> The bug was introduced when the following code:
>
> volatile size_t total_size = 0; ... for (uint i = 0; i < _num; i += 1) {
> total_size += get(i)->size();
> get(i)->restore();
> }
>
> was moved into a separate function and the address to total_size was 
> passed as an argument to the new function. The new function 
> incorrectly updates the pointer and not the variable that the pointer 
> points to:
>
> total_size_addr += preserved_marks_set->get(i)->size();
>
> The suggested fix for the bug is:
>
> - total_size_addr += preserved_marks_set->get(i)->size();
> + *total_size_addr += preserved_marks_set->get(i)->size();
>
>
> Thanks,
> StefanK
>




More information about the hotspot-gc-dev mailing list