Title | MFS refuses to handle objects smaller than platform alignment |
Status | closed |
Priority | optional |
Assigned user | Gareth Rees |
Organization | Ravenbrook |
Description | If you try to create an MFS pool with a unit size that's smaller than the platform alignment, you get this assertion failure: poolmfs.c:114: MPS ASSERTION FAILED: unitSize >= UNIT_MIN This seems like it will lead to needless difficulties when upgrading from 32-bit to 64-bit. For example, it caused MMQA test function/100.c [1] to fail. |
Analysis | There's no good reason to assert here: MFS rounds up the unitSize to the next multiple of the platform alignment anyway. |
How found | automated_test |
Evidence | [1] http://www.ravenbrook.com/project/mps/master/test/function/100.c |
Observed in | 1.111.0 |
Created by | Gareth Rees |
Created on | 2013-05-25 16:08:19 |
Last modified by | Gareth Rees |
Last modified on | 2014-04-04 17:07:35 |
History | 2013-05-25 GDR Created. |
Change | Effect | Date | User | Description |
---|---|---|---|---|
185231 | closed | 2014-04-04 17:05:08 | Gareth Rees | Tidy-up of attributes and pool classes: * Bring design up to date. * New function PoolHasAttr encapsulates attribute checking. * Abstract classes are abstract and mustn't be checked. * The dummy pool class in fotest needs a size. * Abstract pool classes null out methods that they can't provide a generic implementation for, to force subclasses to provide one. * New function PoolTrivFramePopPending provides a generic implementation of that method. * Rename PoolNoFreeWalk to PoolTrivFreeWalk since it has NOOP rather than NOTREACHED. * Check that AttrMOVINGGC implies AttrGC. * Remove unimplemented attributes (BUF_RESERVE, BUF_ALLOC, INCR_RB, INCR_WB, PM) * AMC now inherits from AMCZ instead of the other way round. This is simpler: AMC adds features to AMCZ rather than AMCZ taking features away (and not quite getting it right). * Similarly, LO inherits from AbstractSegBufPoolClass + PoolClassMixInCollect so that it doesn't have to clear AttrSCAN and the scan methods. * Fix bug in MFSCheck -- mustn't check unroundedUnitSize >= UNIT_MIN since small unit sizes are rounded up to UNIT_MIN. * Don't see AttrFREE in MRG (since no free method is supplied). * Check AttrSCAN systematically (in PoolScan and SegCheck) rather than opportunistically in TraceStart and TraceQuantum. |
182257 | open | 2013-05-27 10:19:35 | Gareth Rees | MFS now rounds unitSize up to UNIT_MIN instead of asserting. |