MPS issue job004011

TitlePolicy gets stuck when the live set triggers the dynamic criterion
Statusclosed
Priorityessential
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionWhen pause time is set to 100 seconds, mpsicv seems to stop making progress (still running after more than a minute). See [1].
AnalysisPolicyStartTrace uses the “dynamic criterion” to decide whether to collect the world. But when the live set is close to the commit limit, it might be the case that a collection of the world does not reclaim enough memory to clear the criterion. This means that PolicyPoll will keep starting more collections of the world until the pause time limit is reached.

The solution is to collect the world at most once during any given ArenaPoll. After a collection of the world, no more memory can be reclaimed until the mutator causes some objects to die, which requires letting the mutator run.
How foundautomated_test
Evidence[1] https:/​/​info.ravenbrook.com/​mail/​2016/​04/​18/​17-52-23/​0/
Created byGareth Rees
Created on2016-04-19 16:53:11
Last modified byGareth Rees
Last modified on2016-04-20 13:18:39
History2016-04-19 GDR Created.

Fixes

Change Effect Date User Description
191274 closed 2016-04-19 18:17:09 Gareth Rees Ensure that at most one collection of the world can be started in a call to ArenaPoll. This avoids a loop if the live set is large enough to provoke the "dynamic criterion".