[crac] RFR: Wait until G1 GC has finished before creating a snapshot. [v5]
Sergey Nazarkin
snazarki at openjdk.org
Fri Jul 28 16:28:11 UTC 2023
On Fri, 28 Jul 2023 14:42:00 GMT, Jan Kratochvil <jkratochvil at openjdk.org> wrote:
>> @rvansa did report his snapshots are about 2x-3x bigger than they should be. He then also found it only happens if the snapshot is done too quickly after GC should have been run.
>>
>> One can reproduce the race case by:
>>
>> --- a/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp
>> +++ b/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp
>> @@ -35,7 +35,7 @@ class G1UncommitRegionTask : public G1ServiceTask {
>> // is short, while still making reasonable progress.
>> static const uint UncommitSizeLimit = 128 * M;
>> // Initial delay in milliseconds after GC before the regions are uncommitted.
>> - static const uint UncommitInitialDelayMs = 100;
>> + static const uint UncommitInitialDelayMs = 10*1000;
>> // The delay between two uncommit task executions.
>> static const uint UncommitTaskDelayMs = 10;
>
> Jan Kratochvil has updated the pull request incrementally with one additional commit since the last revision:
>
> Remove accidental change of UncommitInitialDelayMs.
> - bugreported by Radim Vansa
src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp line 143:
> 141: assert(!Thread::current()->is_ConcurrentGC_thread(), "deadlock prevention");
> 142:
> 143: while (_active) {
Is this cycle safe against infinite loop? _active is not atomic or volatile.
-------------
PR Review Comment: https://git.openjdk.org/crac/pull/93#discussion_r1277755070
More information about the crac-dev
mailing list