From: Rony G. F. <Ron...@wu...> - 2009-09-13 16:14:35
|
Hi there, > For this one: > > Scenario 1: 32-bit Windows (not tested on 64-bit Windows), exception > in "rexx.exe": > > Here I may get the following exception > >> rexx.dll!00337328() >> > [Frames below may be incorrect and/or missing, no symbols loaded for > rexx.dll] > rexx.dll!002ff218() > rexx.dll!002e9490() > rexx.dll!00303462() > rexx.dll!003473c9() > kernel32.dll!7c80b729() > > You're not going to get anywhere with this, you need to use a debug version > of the interpreter and BSF so you can see what functions these are. > > If, you have a scenario that produces the exception 100% of the time with > a non-debug build, and then never produces the exception with a debug > version - well that's going to be hard. It also is very rare. But, > if it is the case, > you'll need to at least track the addresses down in the map file and use the > *.asm files to see exactly where this sequence is. > O.K. done that, created and installed "ooRexx400_5165-x86_32-debug.exe". Running the tests eventually (the 7th time running the BSF4Rexx suite) will cause the following stack trace: * > rexx.dll!SourceLocation::getLineNumber() Line 51 + 0xa bytes C++ rexx.dll!RexxInstruction::getLineNumber() Line 79 + 0x12 bytes C++ rexx.dll!RexxActivation::getContextLineNumber() Line 2511 C++ rexx.dll!RexxActivation::createStackFrame() Line 4272 + 0x22 bytes C++ rexx.dll!RexxActivationFrame::createStackFrame() Line 58 C++ rexx.dll!RexxActivity::createExceptionObject(long errcode=40900, RexxString * description=0x00000000, RexxArray * additional=0x7d3eeb50, RexxObject * result=0x00000000) Line 906 + 0xd bytes C++ rexx.dll!RexxActivity::raiseException(long errcode=40900, RexxString * description=0x00000000, RexxArray * additional=0x7d3eeb50, RexxObject * result=0x00000000) Line 753 + 0x18 bytes C++ rexx.dll!RexxActivity::reportAnException(long errcode=40900, RexxObject * substitution1=0x7dc112c8) Line 505 C++ rexx.dll!reportException(long error=40900, RexxObject * a1=0x7dc112c8) Line 159 C++ rexx.dll!RaiseException1(RexxThreadContext_ * c=0x7f3e5ca4, unsigned int n=40900, _RexxObjectPtr * o1=0x7dc112c8) Line 1715 C++ BSF4Rexx.dll!RexxThreadContext_::RaiseException1(unsigned int n=40900, _RexxObjectPtr * o=0x7dc112c8) Line 1284 C++ BSF4Rexx.dll!RexxCallContext_::RaiseException1(unsigned int n=40900, _RexxObjectPtr * o=0x7dc112c8) Line 2629 C++ BSF4Rexx.dll!BSF_impl(RexxCallContext_ * context=0x07f6f870, _RexxArrayObject * argArray=0x7f0e17d8) Line 5199 C++ BSF4Rexx.dll!BSF(RexxCallContext_ * context=0x07f6f870, ValueDescriptor * arguments=0x07f6f88c) Line 5146 + 0x17 bytes C++ rexx.dll!RexxNativeActivation::callNativeRoutine(RoutineClass * _routine=0x7f224268, RexxNativeRoutine * _code=0x7f224248, RexxString * functionName=0x7f196a28, RexxObject * * list=0x7e2a38cc, unsigned int count=2, ProtectedObject & resultObj={...}) Line 1319 C++ rexx.dll!RexxNativeRoutine::call(RexxActivity * activity=0x7f3e5c90, RoutineClass * routine=0x7f224268, RexxString * functionName=0x7f196a28, RexxObject * * argPtr=0x7e2a38cc, unsigned int count=2, ProtectedObject & result={...}) Line 316 C++ rexx.dll!RoutineClass::call(RexxActivity * activity=0x7f3e5c90, RexxString * msgname=0x7f196a28, RexxObject * * argPtr=0x7e2a38cc, unsigned int argcount=2, ProtectedObject & result={...}) Line 234 C++ rexx.dll!PackageManager::callNativeRoutine(RexxActivity * activity=0x7f3e5c90, RexxString * name=0x7f196a28, RexxObject * * arguments=0x7e2a38cc, unsigned int argcount=2, ProtectedObject & result={...}) Line 658 C++ rexx.dll!SystemInterpreter::invokeExternalFunction(RexxActivation * activation=0x7d539800, RexxActivity * activity=0x7f3e5c90, RexxString * target=0x7f196a28, RexxObject * * arguments=0x7e2a38cc, unsigned int argcount=2, RexxString * calltype=0x7fd5cb00, ProtectedObject & result={...}) Line 272 + 0x17 bytes C++ rexx.dll!RexxActivation::externalCall(RexxString * target=0x7f196a28, unsigned int _argcount=2, RexxExpressionStack * _stack=0x7d5398c0, RexxString * calltype=0x7fd5cb00, ProtectedObject & resultObj={...}) Line 2626 + 0x25 bytes C++ rexx.dll!RexxExpressionFunction::evaluate(RexxActivation * context=0x7d539800, RexxExpressionStack * stack=0x7d5398c0) Line 225 C++ rexx.dll!RexxExpressionMessage::evaluate(RexxActivation * context=0x7d539800, RexxExpressionStack * stack=0x7d5398c0) Line 97 + 0x1b bytes C++ rexx.dll!RexxInstructionReturn::execute(RexxActivation * context=0x7d539800, RexxExpressionStack * stack=0x7d5398c0) Line 70 + 0x1b bytes C++ rexx.dll!RexxActivation::run(RexxObject * _receiver=0x7dd904a8, RexxString * msgname=0x7fcc4c20, RexxObject * * _arglist=0x00000000, unsigned int _argcount=0, RexxInstruction * start=0x00000000, ProtectedObject & resultObj={...}) Line 521 C++ rexx.dll!RexxCode::run(RexxActivity * activity=0x7f3e5c90, RexxMethod * method=0x7f1c0288, RexxObject * receiver=0x7dd904a8, RexxString * msgname=0x7fcc4c20, RexxObject * * argPtr=0x00000000, unsigned int argcount=0, ProtectedObject & result={...}) Line 136 C++ rexx.dll!RexxMethod::run(RexxActivity * activity=0x7f3e5c90, RexxObject * receiver=0x7dd904a8, RexxString * msgname=0x7fcc4c20, RexxObject * * argPtr=0x00000000, unsigned int count=0, ProtectedObject & result={...}) Line 325 C++ rexx.dll!RexxObject::messageSend(RexxString * msgname=0x7fcc4c20, RexxObject * * arguments=0x00000000, unsigned int count=0, ProtectedObject & result={...}) Line 793 C++ rexx.dll!RexxObject::sendMessage(RexxString * message=0x7fcc4c20, ProtectedObject & result={...}) Line 439 + 0x1b bytes C++ rexx.dll!RexxObject::sendMessage(RexxString * message=0x7fcc4c20) Line 618 C++ rexx.dll!RexxObject::uninit() Line 2238 C++ rexx.dll!UninitDispatcher::run() Line 55 C++ rexx.dll!RexxNativeActivation::run(TrappingDispatcher & dispatcher={...}) Line 1642 C++ rexx.dll!RexxActivity::run(TrappingDispatcher & target={...}) Line 3061 C++ rexx.dll!RexxMemory::runUninits() Line 553 C++ rexx.dll!RexxMemory::checkUninitQueue() Line 198 + 0x18 bytes C++ rexx.dll!RexxActivation::run(RexxObject * _receiver=0x7f595b98, RexxString * msgname=0x7dbcfad8, RexxObject * * _arglist=0x7e2a3834, unsigned int _argcount=2, RexxInstruction * start=0x00000000, ProtectedObject & resultObj={...}) Line 558 C++ rexx.dll!RexxCode::run(RexxActivity * activity=0x7f3e5c90, RexxMethod * method=0x7f02bc08, RexxObject * receiver=0x7f595b98, RexxString * msgname=0x7dbcfad8, RexxObject * * argPtr=0x7e2a3834, unsigned int argcount=2, ProtectedObject & result={...}) Line 136 C++ rexx.dll!RexxMethod::run(RexxActivity * activity=0x7f3e5c90, RexxObject * receiver=0x7f595b98, RexxString * msgname=0x7dbcfad8, RexxObject * * argPtr=0x7e2a3834, unsigned int count=2, ProtectedObject & result={...}) Line 325 C++ rexx.dll!RexxObject::messageSend(RexxString * msgname=0x7dbcfad8, RexxObject * * arguments=0x7e2a3834, unsigned int count=2, ProtectedObject & result={...}) Line 793 C++ rexx.dll!RexxExpressionStack::send(RexxString * message=0x7dbcfad8, unsigned int count=2, ProtectedObject & result={...}) Line 74 + 0x33 bytes C++ rexx.dll!RexxInstructionMessage::execute(RexxActivation * context=0x7f3e3b80, RexxExpressionStack * stack=0x7f3e3c40) Line 229 C++ rexx.dll!RexxActivation::run(RexxObject * _receiver=0x7f3af310, RexxString * msgname=0x7db939f8, RexxObject * * _arglist=0x7e2a38ac, unsigned int _argcount=7, RexxInstruction * start=0x00000000, ProtectedObject & resultObj={...}) Line 521 C++ rexx.dll!RexxActivation::dispatch() Line 377 + 0x33 bytes C++ rexx.dll!RexxActivity::runThread() Line 125 C++ rexx.dll!call_thread_function(void * arguments=0x7f3e5c90) Line 63 C++ kernel32.dll!7c80b729() [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] rexx.dll!ActivityManager::cacheActivation(RexxActivationBase * activation=0x00000000) Line 510 C++ 000001f0() * The reported exception is: Unhandled exception at 0x00479c3a (rexx.dll) in rexx.exe: 0xC0000005: Access violation reading location 0x00000014. * The code in rexx.exe the debugger points to "SourceLocation.hpp" and there to the first public inline method: inline size_t getLineNumber() { return startLine; } Not sure what I can/should do from here on, so please advise. ---rony |