MPS issue job003668

TitleStack scanner assumes all references are word-aligned
Statusclosed
Priorityessential
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionAmbiguous interior references that aren't word-aligned don't result in nails being added to the nailboard.

(Originally reported by NB [2]. Also reported by Christian Schafmeister [3].)
AnalysisThe reason for this is that references on the stack are ignored if they are not word-aligned.

In detail: mps_stack_scan_ambig calls ThreadScan, which calls TraceScanAreaTagged [1] (either directly, or via StackScan and StackScanInner), which sets:

    mask = sizeof(Word) - 1;

and calls TraceScanAreaMasked. RB says that this is legacy behaviour from Dylan.

First, we need to document this behaviour. Second, we need to provide another way to scan the stack that doesn't use this mask, otherwise we'll never be able to support unaligned ambiguous references.
How foundmanual_test
Evidence[1] https://info.ravenbrook.com/project/mps/master/code/trace.c
[2] https://info.ravenbrook.com/project/mp...2001-11-05/mmprevol/request/mps/160001/
[3] https://info.ravenbrook.com/mail/2015/09/04/07-05-44/0/
Created byGareth Rees
Created on2014-01-17 16:23:45
Last modified byGareth Rees
Last modified on2016-03-13 00:24:14
History2014-01-17 GDR Created.

Fixes

Change Effect Date User Description
189541 closed 2016-03-02 16:44:16 Richard Brooksby Merging branch/2015-09-04/stack into master sources.