Skip to content

mps_pool_walk fails on pools containing other than exact references #195

@rptb1

Description

@rptb1

m. Why RankEXACT? Probably has no effect, but if so, we should say so. rule.generic.clear

Originally posted by @rptb1 in #34 (comment)

poolWalk creates a kind of fake trace so that it can re-use SegScan to scan segments to visit formatted objects. SegScan requires a scan state, and scans at the rank determined by that scan state. poolWalk always creates a scan state with RankEXACT, regardless of the actual ranks present on the segments in the pool. This instructs the pool to only scan exact references, which could cause it to skip objects, making the walk incomplete.

mps/code/walk.c

Line 449 in 8635e90

ScanStateInit(&ss, ts, arena, RankEXACT, trace->white);

None of the current pool implementations will skip objects, but the assumption breaks rule.code.assume and will break if we implement any mixed rank segments.

Metadata

Metadata

Assignees

No one assigned

    Labels

    optionalWill cause failures / of benefit. Worth assigning resources.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions