Title | MPS PoolAMC could (if no shield cache) assert in LockClaim |
Status | closed |
Priority | essential |
Assigned user | Richard Kistruck |
Organization | Ravenbrook |
Description | MPS PoolAMC could (if no shield cache) assert in LockClaim HOWEVER: because of the MPS shield cache, this assert does not seem to happen. Nonetheless, this is a defect. If something else were to cause a shield cache flush, the defect would cause a failure. It is not known whether such a flush could occur. Assert might be, for example: MPS ASSERTION FAILURE: res == 0 lockix.c 125 This can be provoked by disabling the shield cache and running amcsshe with seed 27370 (for example). Related jobs: job000441 - incorrect (but successful) fix for the same symptom |
Analysis | RHSK 2007-08-22 The cause is that AMCFix/AMCHeaderFix fails to make ShieldExpose/Cover calls around access to the from-seg. Two such calls are missing: 1. around: length = AddrOffset(ref, (*format->skip)(ref)); 2. around: (void)AddrCopy(newBase, AddrSub(ref, headerSize), length); However, because of the shield cache, the barrier is in fact 'never' in place at these times (it has been left off, by the shield cache, after a previous ShieldExpose), so we get away with it. |
How found | unknown |
Observed in | 1.108.0 |
Introduced in | 1.100.0 |
Created by | Richard Kistruck |
Created on | 2007-08-22 11:25:01 |
Last modified by | Richard Kistruck |
Last modified on | 2007-09-12 17:05:10 |
History | 2007-08-22 RHSK Created. |
Change | Effect | Date | User | Description |
---|---|---|---|---|
163171 | closed | 2007-08-23 17:50:31 | Richard Kistruck | MPS master: poolamc.c AMCFix, AMCHeaderFix: Correct bad shield code (but badness was being masked by the shield cache; see job001706). ShieldExpose(seg) once, and ShieldCover it once, so that _all_ .exposed.seg statements are between Expose and Cover. |
163170 | open | 2007-08-23 17:28:16 | Richard Kistruck | MPS master: poolamc.c AMCFix, AMCHeaderFix: (comment only) tag with ".exposed.seg" statements that require that "seg" (that is: the 'from' seg) has been ShieldExposed. (Preparatory to fixing job001706). |