Title | Unclear whether base or client pointer passed to pad method of format auto-header |
Status | closed |
Priority | essential |
Assigned user | Gareth Rees |
Organization | Ravenbrook |
Description | MPS AMC pool + auto-header format: reclaim makes bad pads on boarded segs? RHSK 2008-03-07: Priority unknown (so "critical" until determined); see Analysis. Symptoms unknown; see Analysis. RHSK 2008-03-11: May not actually be a defect. See Analysis. |
Analysis | RHSK 2008-03-07: The auto-header format does not clearly define whether format methods deal with base pointers (the memory location of the first byte of the storage allocated for the object) or client pointers, which point mps_headerSize bytes after the start of the object storage). In poolamc.c: - to pad the unused end part of a segment, a base pointer is passed; - to pad a reclaimed object on a boarded segment, a client pointer is passed. [NOT TRUE: see below] Probably, de facto, client pad code currently expects a base pointer, so -- probably -- reclaim on boarded segs fails to pad, and just corrupts the (dead) object. It's not immediately clear whether this has any bad effect. RHSK 2008-03-11: Actually, poolamc.c *is* consistently passing an base pointer (not a client pointer) to format->pad. Perhaps this is consistent across all pools. Needs to be thoroughly checked. GDR 2012-10-29: The only pools in the open source MPS that call the pad method are AMC/AMCZ and SNC. These both pass base pointers to the pad method. |
How found | inspection |
Evidence | //info.ravenbrook.com/project/mps/master/code/poolamc.c#26 |
Observed in | 1.108.1 |
Introduced in | 1.100.0 |
Created by | Richard Kistruck |
Created on | 2008-03-07 18:30:16 |
Last modified by | Gareth Rees |
Last modified on | 2012-11-05 14:36:51 |
History | 2008-03-07 RHSK Created, from reading poolamc.c 2008-03-11 RHSK UPDATE: May not actually be a defect. See Analysis. 2012-10-29 GDR Use consistent terminology. Behaviour is OK if documented. Assign to me. |
Change | Effect | Date | User | Description |
---|---|---|---|---|
180330 | closed | 2012-11-05 14:36:51 | Gareth Rees | The padding method always receives a base pointer. |