MPS issue job004054

TitleCan't destroy arena with outstanding finalization messages
Statusclosed
Priorityessential
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionMMQA test function/76.c fails with the assertion "shield->inside" on shield.c line 724. A look at the backtrace shows:

frame #1: ShieldExpose at shield.c:724
frame #2: ArenaPokeSeg at global.c:888
frame #3: ArenaPoke at global.c:872
frame #4: MRGRefPartSetRef at poolmrg.c:105
frame #5: MRGGuardianInit at poolmrg.c:390
frame #6: MRGMessageDelete at poolmrg.c:416
frame #7: MessageDelete at message.c:319
frame #8: MessageDeleteHead at message.c:167
frame #9: MessageEmpty at message.c:176
frame #10: GlobalsPrepareToDestroy at global.c:435
frame #11: ArenaDestroy at arena.c:469
frame #12: mps_arena_destroy at mpsi.c:382
AnalysisThe bug was introduced in change 192365 [1] and can be fixed by reverting this change to global.c:

- LockRelease(arenaGlobals->lock);
+ ArenaLeave(arena);
How foundautomated_test
Evidence[1] https://info.ravenbrook.com/infosys/cgi/perfbrowse.cgi?%40describe+192365
Introduced in1.116.0
Created byGareth Rees
Created on2016-09-27 11:51:58
Last modified byGareth Rees
Last modified on2016-09-27 11:57:19
History2016-09-27 GDR Created.

Fixes

Change Effect Date User Description
192473 closed 2016-09-27 11:57:19 Gareth Rees Revert incorrect change to GlobalsPrepareToDestroy (see change 192365) that made the MPS assert when destroying an arena with uncollected finalization messages.