MPS issue job003356

TitleAssertion in SegSetGrey when using AMCZ
Statusclosed
Priorityessential
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionI tried segregating objects in the toy Scheme interpreter, and when I collect, I get this assertion. (Everything is fine if I used AMC, or LO.)

MPS ASSERTION FAILURE: SegRankSet(seg) != RankSetEMPTY
../../code/seg.c
270
AnalysisBacktrace shows:

#3 0x0000000100026e05 in SegSetGrey (seg=0x101ffd590, grey=1) at seg.c:270
#4 0x000000010005d69e in amcFixInPlace (pool=0x101ffe9a0, seg=0x101ffd590, ss=0x7fff5fbff300, refIO=0x7fff5fbff058) at poolamc.c:1675
#5 0x000000010005c40b in AMCFix (pool=0x101ffe9a0, ss=0x7fff5fbff300, seg=0x101ffd590, refIO=0x7fff5fbff058) at poolamc.c:1771

The offending assertion was added by RB in change 179567 [1]. RB says that he forgot about the AMCZ case.
How foundmanual_test
Evidence[1] <http://info.ravenbrook.com/infosys/cgi/perfbrowse.cgi?@describe+179567>
Created byGareth Rees
Created on2012-11-01 16:35:35
Last modified byGareth Rees
Last modified on2014-04-12 22:08:41
History2012-11-01 GDR Created.

Fixes

Change Effect Date User Description
180236 closed 2012-11-01 17:21:57 Gareth Rees AMC can't omit the guard "SegRankSet(seg) != RankSetEMPTY" for calling SegSetGrey, because AMCZ uses segments with an empty rank set.
It's OK to call SegSetGrey on a segment with an empty rank set so long as you are not actually setting it to be grey for any traces, so correct the AVER accordingly.