RFR(s): 8212108: SafepointSynchronizer never ending counter (big enough)
Robbin Ehn
robbin.ehn at oracle.com
Thu Nov 22 08:50:20 UTC 2018
Hi David,
On 11/22/18 3:37 AM, David Holmes wrote:
> Hi Robbin,
>
> On 21/11/2018 11:45 pm, Robbin Ehn wrote:
>> Hi all, please review.
>>
>> The counter can loop around, it would mainly be an issue in reading
>> such flight- recorder recording. I have two upcoming features which
>> uses the fact that it is always increasing >
>> CR:
>> https://bugs.openjdk.java.net/browse/JDK-8212108
>>
>> Webrev:
>> http://cr.openjdk.java.net/~rehn/8212108/webrev/
>
> I don't understand the logic for safepoint_counter_addr(). Why is endian-ness an
> issue here and why do you need to treat it as 32-bit in that case??
Because it is suppose to return the address to 32-bit counter. Returning the
address to the 4 low bytes save me for updating a lot of assembly code in
jniFastGetField.
>
> I've been trying to see if there could be any issues with word-tearing on 32-bit
> systems ... I can't convince myself you may not see false indicators if the
> count is read at the same time as being updated and the 32-bit count is going to
> rollover from 0xFFFFFFFF to 0x00000000.
The jniFastGetField should only checks if it's different.
It does:
load counter
if counter is odd (safepoint) => slowpath
speculative load value (which handles e.g. SIGSEGV/SIGBUS)
load counter
if counter != counter => slowpath
/* value is good */
>
> I'm not familiar with JFR types - is "ulong" guaranteed to be 64-bit?
It translate to an u8, so yes.
>
>> Passes t1-3 and the two updated FR tests.
>
> Does any of that actually run long enough to overflow a 32-bit counter?
We have no tests that run long enough to rollover.
Thanks, Robbin
>
> Thanks,
> David
>
>>
>> Thanks Robbin
More information about the hotspot-runtime-dev
mailing list