Rob Arthan wrote:
I am working on porting ProofPower to Poly/ML 5.2. I get the following assertion failure when I run one of the tests for my parser generator. I can reproduce the problem deterministically, but the circumstances in which it occurs are obscure: at first glance it seems to depend on whether I am calling "use" directly or via a function of my own, but it doesn't fail if I avoid compiling my function twice. It seems very dependent on exactly how things are compiled.
slrp-ml: gc.cpp:878: virtual POLYUNSIGNED ProcessUpdate::ScanAddressAt(PolyWord*): Assertion `obj->ContainsNormalLengthWord()' failed.
Rob, Thanks for sending the test program. I finally managed to get to the bottom of this. The problem turned out to be the way that the heap was restored after calling "export". It would only have shown up in certain circumstances and only in a garbage collection after the export. Generally, export is the last thing that is called in a session which may explain why it didn't show up earlier.
I've fixed it in CVS and your test now runs successfully. Let me know if you get this again although this assertion could be triggered by any number of different faults connected with the GC.
Regards, David.