| Title: | MPS PoolAMC could (if no shield cache) assert in LockClaim |
| Status: | closed |
| Priority: | essential |
| Assigned user: | Richard Kistruck |
| Product: | mps |
| 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 |
| Test procedure: | none |
| 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). |
Generated at 2008-09-06 06:12:24 by $Id: //info.ravenbrook.com/infosys/cgi/issue.cgi#430 $
Copyright © Ravenbrook Limited. This document is provided "as is", without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this document. You may not duplicate or reproduce this document in any form without the express permission of the copyright holder.