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

Reply via email to