Usually you see this exception when an object gets garbage collected between the time it is allocated and it's reference is added to the traceable object mark set. This usually results in an object having a reference to another object that now points to the middle of another object because the storage is reclaimed. Usually this means there is a place where ProtectedObject is needed to anchor an object
If I have a reliable failing test case, the bad object reference is the markObject used for the method call. I would set a break point in newObject() and catch that object being created and use the call stack to figure out the context of the creation and I'm usually able to figure out what additional ProtectedObject additions are needed. Rick. On Sat, Jul 30, 2016 at 1:25 PM, Erich Steinböck <[email protected] > wrote: > I've trapped one of the spurious exceptions when starting testOOrexx, > occurring while printing the "Searching for test containers...." dots. > > I'm seeing the following (the "Stack frames" are a screen copy, as I don't > know how to export it to text). Any ideas from you > more-experienced-than-me debuggers? > > The offending instruction is the JMP almost at the very bottom, obviously > giving the illegal address at the top of the stack frames) > > Stack frames: > [image: Inline image 1] > [image: Inline image 3] > ... > > Address: MemoryObject::markObjectsMain(RexxInternalObject *) > > 000007FEEA50DB71 mov rdx,qword ptr [liveMark] > 000007FEEA50DB76 mov rax,qword ptr [rsp+28h] > 000007FEEA50DB7B mov rcx,qword ptr [rax+18h] > 000007FEEA50DB7F call RexxInternalObject::isObjectMarked > (07FEEA413E4Fh) > 000007FEEA50DB84 movzx eax,al > 000007FEEA50DB87 test eax,eax > 000007FEEA50DB89 jne MemoryObject::markObjectsMain+0D0h > (07FEEA50DBA0h) > 000007FEEA50DB8B mov rax,qword ptr [rsp+28h] > 000007FEEA50DB90 mov rdx,qword ptr [rax+18h] > 000007FEEA50DB94 lea rcx,[memoryObject (07FEEA773DE0h)] > 000007FEEA50DB9B call MemoryObject::mark (07FEEA41A010h) > // Mark other referenced obj. We can do this without checking > // the references flag because we only push the object on to > // the stack if it has references. > allocations++; > 000007FEEA50DBA0 mov rax,qword ptr [this] > 000007FEEA50DBA5 mov rax,qword ptr [rax+0B08h] > 000007FEEA50DBAC inc rax > 000007FEEA50DBAF mov rcx,qword ptr [this] > 000007FEEA50DBB4 mov qword ptr [rcx+0B08h],rax > markObject->live(liveMark); > 000007FEEA50DBBB mov rax,qword ptr [rsp+28h] > 000007FEEA50DBC0 mov rax,qword ptr [rax] > 000007FEEA50DBC3 mov rdx,qword ptr [liveMark] > 000007FEEA50DBC8 mov rcx,qword ptr [rsp+28h] > 000007FEEA50DBCD call qword ptr [rax+10h] > } > 000007FEEA50DBD0 jmp MemoryObject::markObjectsMain+7Eh > (07FEEA50DB4Eh) > } > 000007FEEA50DBD5 add rsp,30h > 000007FEEA50DBD9 pop rdi > 000007FEEA50DBDA ret > > 000007FEEA50DB71 mov rdx,qword ptr [liveMark] > 000007FEEA50DB76 mov rax,qword ptr [rsp+28h] > 000007FEEA50DB7B mov rcx,qword ptr [rax+18h] > 000007FEEA50DB7F call RexxInternalObject::isObjectMarked > (07FEEA413E4Fh) > 000007FEEA50DB84 movzx eax,al > 000007FEEA50DB87 test eax,eax > 000007FEEA50DB89 jne MemoryObject::markObjectsMain+0D0h > (07FEEA50DBA0h) > 000007FEEA50DB8B mov rax,qword ptr [rsp+28h] > 000007FEEA50DB90 mov rdx,qword ptr [rax+18h] > 000007FEEA50DB94 lea rcx,[memoryObject (07FEEA773DE0h)] > 000007FEEA50DB9B call MemoryObject::mark (07FEEA41A010h) > // Mark other referenced obj. We can do this without checking > // the references flag because we only push the object on to > // the stack if it has references. > allocations++; > 000007FEEA50DBA0 mov rax,qword ptr [this] > 000007FEEA50DBA5 mov rax,qword ptr [rax+0B08h] > 000007FEEA50DBAC inc rax > 000007FEEA50DBAF mov rcx,qword ptr [this] > 000007FEEA50DBB4 mov qword ptr [rcx+0B08h],rax > markObject->live(liveMark); > 000007FEEA50DBBB mov rax,qword ptr [rsp+28h] > 000007FEEA50DBC0 mov rax,qword ptr [rax] > 000007FEEA50DBC3 mov rdx,qword ptr [liveMark] > 000007FEEA50DBC8 mov rcx,qword ptr [rsp+28h] > 000007FEEA50DBCD call qword ptr [rax+10h] > } > *000007FEEA50DBD0 jmp MemoryObject::markObjectsMain+7Eh > (07FEEA50DB4Eh) * > } > 000007FEEA50DBD5 add rsp,30h > 000007FEEA50DBD9 pop rdi > 000007FEEA50DBDA ret > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Oorexx-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > >
------------------------------------------------------------------------------
_______________________________________________ Oorexx-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/oorexx-devel
