Title | Can't destroy arena with outstanding finalization messages |
Status | closed |
Priority | essential |
Assigned user | Gareth Rees |
Organization | Ravenbrook |
Description | MMQA 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 |
Analysis | The bug was introduced in change 192365 [1] and can be fixed by reverting this change to global.c: - LockRelease(arenaGlobals->lock); + ArenaLeave(arena); |
How found | automated_test |
Evidence | [1] https://info.ravenbrook.com/infosys/cgi/perfbrowse.cgi?%40describe+192365 |
Introduced in | 1.116.0 |
Created by | Gareth Rees |
Created on | 2016-09-27 11:51:58 |
Last modified by | Gareth Rees |
Last modified on | 2016-09-27 11:57:19 |
History | 2016-09-27 GDR Created. |
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. |