As reported on the RexxLA mailing list, running the ooRexx debugger crashes ooRexx. It does not
matter whether the ooDialog or the BSF4ooRexx850 version gets used:
* Locals shows "this" to be NULL
* the exception occurs in StringClass.hpp, inline HashCode getStringHash(),
line # 318
* Threads (in the ooDialog case):
Not Flagged 15436 0 Worker Thread
ntdll.dll!TppWorkerThread ntdll.dll!NtWaitForWorkViaWorkerFactory Normal
Not Flagged > 5284 0 Main Thread Main Thread
rexx.dll!RexxString::getStringHash Normal
Not Flagged 28300 0 Worker Thread
ntdll.dll!TppWorkerThread ntdll.dll!NtWaitForWorkViaWorkerFactory Normal
Not Flagged 29216 0 Worker Thread
ntdll.dll!TppWorkerThread ntdll.dll!NtWaitForWorkViaWorkerFactory Normal
Not Flagged 28036 0 Worker Thread
ntdll.dll!TppWorkerThread ntdll.dll!NtWaitForWorkViaWorkerFactory Normal
Not Flagged 25236 0 Worker Thread
rexx.dll!dispatch_activity_function()
win32u.dll!NtUserMsgWaitForMultipleObjectsEx Normal
Not Flagged 4040 0 Worker Thread
rexx.dll!dispatch_activity_function()
win32u.dll!NtUserMsgWaitForMultipleObjectsEx Normal
Not Flagged 15088 0 Worker Thread
oodialog.dll!WindowUsrLoopThread() win32u.dll!NtUserGetMessage Above
Normal
Not Flagged 24984 0 Worker Thread
combase.dll!CRpcThreadCache::RpcWorkerThreadEntry
combase.dll!WaitCoalesced Normal
Not Flagged 8676 0 Worker Thread
ntdll.dll!TppWorkerThread ntdll.dll!NtWaitForWorkViaWorkerFactory Normal
Not Flagged 27912 0 Worker Thread ANSI64.dll thread
ANSI64.dll!000000005e3f2390 Normal
* Call Stack (same in both cases):
> rexx.dll!RexxString::getStringHash() Line 318 C++
rexx.dll!StringHashContents::hashIndex(RexxInternalObject *
index=0x0000000000000000) Line 496 C++
rexx.dll!HashContents::put(RexxInternalObject *
value=0x0000021e975486d0, RexxInternalObject * index=0x0000000000000000) Line
232 C++
rexx.dll!VariableDictionary::addVariable(RexxString *
name=0x0000000000000000, RexxVariable * variable=0x0000021e975486d0) Line 463
C++
rexx.dll!RexxLocalVariables::createDictionary() Line 601 C++
rexx.dll!RexxLocalVariables::getDictionary() Line 114 C++
rexx.dll!RexxActivation::getLocalVariables() Line 465 C++
rexx.dll!RexxActivation::getAllLocalVariables() Line 469 C++
rexx.dll!RexxContext::getVariables() Line 213 C++
rexx.dll!CPPCode::run(Activity * activity=0x0000021e97507eb0, MethodClass *
method=0x0000021e9740b740, RexxObject * receiver=0x0000021e97cfd2a0, RexxString *
messageName=0x0000021e97d65c60, RexxObject * * argPtr=0x0000021e98110238, unsigned
__int64 count=0, ProtectedObject & result={...}) Line 170 C++
rexx.dll!MethodClass::run(Activity * activity=0x0000021e97507eb0,
RexxObject * receiver=0x0000021e97cfd2a0, RexxString * msgname=0x0000021e97d65c60,
RexxObject * * argPtr=0x0000021e98110238, unsigned __int64 count=0, ProtectedObject
& result={...}) Line 172 C++
rexx.dll!RexxObject::messageSend(RexxString * msgname=0x0000021e97d65c60,
RexxObject * * arguments=0x0000021e98110238, unsigned __int64 count=0,
ProtectedObject & result={...}) Line 901 C++
rexx.dll!ExpressionStack::send(RexxString * message=0x0000021e97d65c60,
unsigned __int64 count=0, ProtectedObject & result={...}) Line 80 C++
rexx.dll!RexxExpressionMessage::evaluate(RexxActivation *
context=0x0000021e980f5920, ExpressionStack * stack=0x0000021e980f5a88) Line
191 C++
rexx.dll!RexxInstruction::evaluateArguments(RexxActivation *
context=0x0000021e980f5920, ExpressionStack * stack=0x0000021e980f5a88,
RexxInternalObject * * argArray=0x0000021e97daf1b0, unsigned __int64
argCount=1) Line 154 C++
rexx.dll!RexxInstructionMessage::execute(RexxActivation *
context=0x0000021e980f5920, ExpressionStack * stack=0x0000021e980f5a88) Line
183 C++
rexx.dll!RexxActivation::run(RexxObject * _receiver=0x0000000000000000,
RexxString * name=0x0000021e9750e030, RexxObject * * _arglist=0x0000000000000000,
unsigned __int64 _argcount=0, RexxInstruction * start=0x0000000000000000,
ProtectedObject & resultObj={...}) Line 611 C++
rexx.dll!RexxActivation::debugInterpret(RexxString *
codestring=0x0000021e975486d0) Line 2758 C++
rexx.dll!RexxActivation::doDebugPause() Line 4231 C++
rexx.dll!RexxActivation::pauseInstruction() Line 377 C++
rexx.dll!RexxInstructionCall::execute(RexxActivation *
context=0x0000021e97df08e0, ExpressionStack * stack=0x0000021e97df0a48) Line
212 C++
rexx.dll!RexxActivation::run(RexxObject * _receiver=0x0000000000000000,
RexxString * name=0x0000021e9750e030, RexxObject * * _arglist=0x0000021e97570ca0,
unsigned __int64 _argcount=1, RexxInstruction * start=0x0000000000000000,
ProtectedObject & resultObj={...}) Line 611 C++
rexx.dll!RexxCode::call(Activity * activity=0x0000021e97507eb0,
RoutineClass * routine=0x0000021e97587400, RexxString *
routineName=0x0000021e9750e030, RexxObject * * argPtr=0x0000021e97570ca0, unsigned
__int64 argcount=1, RexxString * calltype=0x0000021e974e4f60, RexxString *
environment=0x0000000000000000, ActivationContext context=EXTERNALCALL,
ProtectedObject & result={...}) Line 188 C++
rexx.dll!RexxCode::call(Activity * activity=0x0000021e97507eb0,
RoutineClass * routine=0x0000021e97587400, RexxString * msgname=0x0000021e9750e030,
RexxObject * * argPtr=0x0000021e97570ca0, unsigned __int64 argcount=1,
ProtectedObject & result={...}) Line 159 C++
rexx.dll!RoutineClass::callWithRexx(ArrayClass *
args=0x0000021e97570c40) Line 228 C++
rexx.dll!CPPCode::run(Activity * activity=0x0000021e97507eb0, MethodClass *
method=0x0000021e974036f0, RexxObject * receiver=0x0000021e97587400, RexxString *
messageName=0x0000021e975194c0, RexxObject * * argPtr=0x0000021e98110128, unsigned
__int64 count=1, ProtectedObject & result={...}) Line 174 C++
rexx.dll!MethodClass::run(Activity * activity=0x0000021e97507eb0,
RexxObject * receiver=0x0000021e97587400, RexxString * msgname=0x0000021e975194c0,
RexxObject * * argPtr=0x0000021e98110128, unsigned __int64 count=1, ProtectedObject
& result={...}) Line 172 C++
rexx.dll!RexxObject::messageSend(RexxString * msgname=0x0000021e975194c0,
RexxObject * * arguments=0x0000021e98110128, unsigned __int64 count=1,
ProtectedObject & result={...}) Line 901 C++
rexx.dll!ExpressionStack::send(RexxString * message=0x0000021e975194c0,
unsigned __int64 count=1, ProtectedObject & result={...}) Line 80 C++
rexx.dll!RexxInstructionMessage::execute(RexxActivation *
context=0x0000021e97560850, ExpressionStack * stack=0x0000021e975609b8) Line
189 C++
rexx.dll!RexxActivation::run(RexxObject * _receiver=0x0000000000000000,
RexxString * name=0x0000021e9750e820, RexxObject * * _arglist=0x0000021e9750dfb0,
unsigned __int64 _argcount=1, RexxInstruction * start=0x0000000000000000,
ProtectedObject & resultObj={...}) Line 611 C++
rexx.dll!RexxCode::call(Activity * activity=0x0000021e97507eb0,
RoutineClass * routine=0x0000021e97560810, RexxString *
routineName=0x0000021e9750e820, RexxObject * * argPtr=0x0000021e9750dfb0, unsigned
__int64 argcount=1, RexxString * calltype=0x0000021e9734fdf0, RexxString *
environment=0x0000021e974e4640, ActivationContext context=PROGRAMCALL,
ProtectedObject & result={...}) Line 188 C++
rexx.dll!RoutineClass::runProgram(Activity * activity=0x0000021e97507eb0,
RexxObject * * arguments=0x0000021e9750dfb0, unsigned __int64 argCount=1,
ProtectedObject & result={...}) Line 265 C++
rexx.dll!CallProgramDispatcher::run() Line 244 C++
rexx.dll!NativeActivation::run(ActivityDispatcher & dispatcher={...})
Line 1641 C++
rexx.dll!Activity::run(ActivityDispatcher & target={...}) Line 3379 C++
rexx.dll!CallProgram(RexxThreadContext_ * c=0x0000021e97507ed8, const
char * p=0x0000021e9522f375, _RexxArrayObject * a=0x0000021e9750df50) Line 512
C++
rexx.exe!RexxThreadContext_::CallProgram(const char *
n=0x0000021e9522f375, _RexxArrayObject * a=0x0000021e9750df50) Line 1001 C++
rexx.exe!main(int argc=3, char * * argv=0x0000021e9522f350) Line 226
C++
rexx.exe!invoke_main() Line 65 C++
rexx.exe!__scrt_common_main_seh() Line 253 C++
rexx.exe!__scrt_common_main() Line 296 C++
rexx.exe!mainCRTStartup() Line 17 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
To reproduce:
download ooRexx debugger from
<https://github.com/DomJWise/ooRexxDebugger/releases/tag/v1.203>
unzip and run: rexx RexxDebugger.rex tutorial.rex
note: even removing the requires statement at the end causes the crash
Any ideas, any remedies? :)
---royn
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel