On 03.04.2024 16:25, ooRexx wrote:
It seems we currently have ALL platforms failing this test, can the person (Rony?) who committed lately check if there was a side-effect of the changes and/or amend the test to the new behaviour.

Executing .../ooRexx/base/runtime.objects/environmentEntries.testGroup
/tmp/jenkins3639803152023253797.sh: line 15: 26971 Segmentation fault      (core dumped) rexx testOORexx.rex -s -U
Build step 'Execute shell' marked build as failure
Finished: FAILURE

Could get that crash on my debug version on Windows 10, here the call stack:

        0000000000000000()      Unknown
   > rexx.dll!MethodDictionary::getMethod(RexxString * 
methodName=0x000001bcdda2bdd0) Line 69        C++
        rexx.dll!RexxBehaviour::methodLookup(RexxString * 
messageName=0x000001bcdda2bdd0) Line 443      C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bcdda2bdd0, 
RexxObject * * arguments=0x0000000000000000, unsigned __int64 count=0, 
ProtectedObject & result={...}) Line 871   C++
        rexx.dll!CreateTraceObject(Activity * activity=0x000001bcddc64eb0, 
RexxActivation * activation=0x000001bcf6a669a0, RexxString * 
traceline=0x000001bcf6a3d2d0) Line 3097 C++
        rexx.dll!Activity::traceOutput(RexxActivation * 
activation=0x000001bcf6a669a0, RexxString * line=0x000001bcf6a3d2d0) Line 3141  
C++
        rexx.dll!RexxActivation::traceSourceString() Line 3912  C++
        rexx.dll!RexxActivation::traceClause(RexxInstruction * 
clause=0x000001bce65e36e0, RexxActivation::TracePrefix 
prefix=TRACE_PREFIX_CLAUSE) Line 4200     C++
        rexx.dll!RexxActivation::traceInstruction(RexxInstruction * 
v=0x000001bce65e36e0) Line 370      C++
        rexx.dll!RexxInstructionAssignment::execute(RexxActivation * 
context=0x000001bcf6a669a0, ExpressionStack * stack=0x000001bcf6a66b08) Line 
118   C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x000001bcf0100e50, 
RexxString * name=0x000001bce65e2600, RexxObject * * _arglist=0x000001bcf6a668a0, 
unsigned __int64 _argcount=0, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::run(Activity * activity=0x000001bcddc64eb0, MethodClass 
* method=0x000001bce65e4db0, RexxObject * receiver=0x000001bcf0100e50, RexxString * 
msgname=0x000001bce65e2600, RexxObject * * argPtr=0x000001bcf6a668a0, unsigned 
__int64 argcount=0, ProtectedObject & result={...}) Line 211  C++
        rexx.dll!MethodClass::run(Activity * activity=0x000001bcddc64eb0, 
RexxObject * receiver=0x000001bcf0100e50, RexxString * msgname=0x000001bce65e2600, 
RexxObject * * argPtr=0x000001bcf6a668a0, unsigned __int64 count=0, ProtectedObject 
& result={...}) Line 172   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bce65e2600, 
RexxObject * * arguments=0x000001bcf6a668a0, unsigned __int64 count=0, 
ProtectedObject & result={...}) Line 901   C++
        rexx.dll!MessageClass::dispatch() Line 445      C++
        rexx.dll!MessageClass::send() Line 413  C++
        rexx.dll!MessageClass::sendRexx(RexxObject * * 
arguments=0x000001bcde86a5b0, unsigned __int64 argCount=0) Line 329      C++
        rexx.dll!CPPCode::run(Activity * activity=0x000001bcddc64eb0, MethodClass * 
method=0x000001bcddb55b60, RexxObject * receiver=0x000001bcf6a66920, RexxString * 
messageName=0x000001bcddf09290, RexxObject * * argPtr=0x000001bcde86a5b0, unsigned 
__int64 count=0, ProtectedObject & result={...}) Line 147  C++
        rexx.dll!MethodClass::run(Activity * activity=0x000001bcddc64eb0, 
RexxObject * receiver=0x000001bcf6a66920, RexxString * msgname=0x000001bcddf09290, 
RexxObject * * argPtr=0x000001bcde86a5b0, unsigned __int64 count=0, ProtectedObject 
& result={...}) Line 172   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bcddf09290, 
RexxObject * * arguments=0x000001bcde86a5b0, unsigned __int64 count=0, 
ProtectedObject & result={...}) Line 901   C++
        rexx.dll!ExpressionStack::send(RexxString * message=0x000001bcddf09290, 
unsigned __int64 count=0, ProtectedObject & result={...}) Line 80   C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x000001bcf6a65b30, ExpressionStack * stack=0x000001bcf6a65c98) Line 
189      C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x000001bcf0100e50, 
RexxString * name=0x000001bcddf071c0, RexxObject * * _arglist=0x000001bcde86a4e8, 
unsigned __int64 _argcount=2, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::run(Activity * activity=0x000001bcddc64eb0, MethodClass 
* method=0x000001bcddf0d6e0, RexxObject * receiver=0x000001bcf0100e50, RexxString * 
msgname=0x000001bcddf071c0, RexxObject * * argPtr=0x000001bcde86a4e8, unsigned 
__int64 argcount=2, ProtectedObject & result={...}) Line 211  C++
        rexx.dll!MethodClass::run(Activity * activity=0x000001bcddc64eb0, 
RexxObject * receiver=0x000001bcf0100e50, RexxString * msgname=0x000001bcddf071c0, 
RexxObject * * argPtr=0x000001bcde86a4e8, unsigned __int64 count=2, ProtectedObject 
& result={...}) Line 172   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bcddf071c0, 
RexxObject * * arguments=0x000001bcde86a4e8, unsigned __int64 count=2, 
ProtectedObject & result={...}) Line 901   C++
        rexx.dll!ExpressionStack::send(RexxString * message=0x000001bcddf071c0, 
unsigned __int64 count=2, ProtectedObject & result={...}) Line 80   C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x000001bcf6a64640, ExpressionStack * stack=0x000001bcf6a647a8) Line 
189      C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x000001bcf0100e50, 
RexxString * name=0x000001bcddd5fc00, RexxObject * * _arglist=0x000001bcde86a418, 
unsigned __int64 _argcount=2, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::run(Activity * activity=0x000001bcddc64eb0, MethodClass 
* method=0x000001bcddf07fe0, RexxObject * receiver=0x000001bcf0100e50, RexxString * 
msgname=0x000001bcddd5fc00, RexxObject * * argPtr=0x000001bcde86a418, unsigned 
__int64 argcount=2, ProtectedObject & result={...}) Line 211  C++
        rexx.dll!MethodClass::run(Activity * activity=0x000001bcddc64eb0, 
RexxObject * receiver=0x000001bcf0100e50, RexxString * msgname=0x000001bcddd5fc00, 
RexxObject * * argPtr=0x000001bcde86a418, unsigned __int64 count=2, ProtectedObject 
& result={...}) Line 172   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bcddd5fc00, 
RexxObject * * arguments=0x000001bcde86a418, unsigned __int64 count=2, 
ProtectedObject & result={...}) Line 901   C++
        rexx.dll!ExpressionStack::send(RexxString * message=0x000001bcddd5fc00, 
unsigned __int64 count=2, ProtectedObject & result={...}) Line 80   C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x000001bcf6a635a0, ExpressionStack * stack=0x000001bcf6a63708) Line 
189      C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x000001bcf00f8a20, 
RexxString * name=0x000001bcddd5fc00, RexxObject * * _arglist=0x000001bcde86a348, 
unsigned __int64 _argcount=2, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::run(Activity * activity=0x000001bcddc64eb0, MethodClass 
* method=0x000001bcddd640c0, RexxObject * receiver=0x000001bcf00f8a20, RexxString * 
msgname=0x000001bcddd5fc00, RexxObject * * argPtr=0x000001bcde86a348, unsigned 
__int64 argcount=2, ProtectedObject & result={...}) Line 211  C++
        rexx.dll!MethodClass::run(Activity * activity=0x000001bcddc64eb0, 
RexxObject * receiver=0x000001bcf00f8a20, RexxString * msgname=0x000001bcddd5fc00, 
RexxObject * * argPtr=0x000001bcde86a348, unsigned __int64 count=2, ProtectedObject 
& result={...}) Line 172   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bcddd5fc00, 
RexxObject * * arguments=0x000001bcde86a348, unsigned __int64 count=2, 
ProtectedObject & result={...}) Line 901   C++
        rexx.dll!ExpressionStack::send(RexxString * message=0x000001bcddd5fc00, 
unsigned __int64 count=2, ProtectedObject & result={...}) Line 80   C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x000001bcea737d00, ExpressionStack * stack=0x000001bcea737e68) Line 
189      C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x000001bce72e4360, 
RexxString * name=0x000001bcddc8c310, RexxObject * * _arglist=0x000001bcde86a230, 
unsigned __int64 _argcount=1, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::run(Activity * activity=0x000001bcddc64eb0, MethodClass 
* method=0x000001bcddd640c0, RexxObject * receiver=0x000001bce72e4360, RexxString * 
msgname=0x000001bcddc8c310, RexxObject * * argPtr=0x000001bcde86a230, unsigned 
__int64 argcount=1, ProtectedObject & result={...}) Line 211  C++
        rexx.dll!MethodClass::run(Activity * activity=0x000001bcddc64eb0, 
RexxObject * receiver=0x000001bce72e4360, RexxString * msgname=0x000001bcddc8c310, 
RexxObject * * argPtr=0x000001bcde86a230, unsigned __int64 count=1, ProtectedObject 
& result={...}) Line 172   C++
        rexx.dll!RexxObject::messageSend(RexxString * msgname=0x000001bcddc8c310, 
RexxObject * * arguments=0x000001bcde86a230, unsigned __int64 count=1, 
ProtectedObject & result={...}) Line 901   C++
        rexx.dll!ExpressionStack::send(RexxString * message=0x000001bcddc8c310, 
unsigned __int64 count=1, ProtectedObject & result={...}) Line 80   C++
        rexx.dll!RexxInstructionMessage::execute(RexxActivation * 
context=0x000001bcddd25530, ExpressionStack * stack=0x000001bcddd25698) Line 
189      C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x0000000000000000, 
RexxString * name=0x000001bcddc76190, RexxObject * * _arglist=0x000001bcde86a120, 
unsigned __int64 _argcount=1, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::call(Activity * activity=0x000001bcddc64eb0, 
RoutineClass * routine=0x000001bcddd254f0, RexxString * 
routineName=0x000001bcddc76190, RexxObject * * argPtr=0x000001bcde86a120, unsigned 
__int64 argcount=1, RexxString * calltype=0x000001bcddc3d6f0, RexxString * 
environment=0x000001bcddc3d7e0, ActivationContext context=EXTERNALCALL, 
ProtectedObject & result={...}) Line 188      C++
        rexx.dll!RoutineClass::call(Activity * activity=0x000001bcddc64eb0, 
RexxString * routineName=0x000001bcddc76190, RexxObject * * 
argPtr=0x000001bcde86a120, unsigned __int64 argcount=1, RexxString * 
calltype=0x000001bcddc3d6f0, RexxString * environment=0x000001bcddc3d7e0, 
ActivationContext context=EXTERNALCALL, ProtectedObject & result={...}) Line 
194     C++
        rexx.dll!RexxActivation::callExternalRexx(RexxString * 
target=0x000001bcddc76190, RexxObject * * arguments=0x000001bcde86a120, unsigned 
__int64 argcount=1, RexxString * calltype=0x000001bcddc3d6f0, ProtectedObject & 
resultObj={...}) Line 3092  C++
        rexx.dll!SystemInterpreter::invokeExternalFunction(RexxActivation * 
activation=0x000001bcddc7b280, Activity * activity=0x000001bcddc64eb0, RexxString * 
target=0x000001bcddc76190, RexxObject * * arguments=0x000001bcde86a120, unsigned 
__int64 argcount=1, RexxString * calltype=0x000001bcddc3d6f0, ProtectedObject & 
result={...}) Line 107     C++
        rexx.dll!RexxActivation::externalCall(RoutineClass * & 
routine=0x0000000000000000, RexxString * target=0x000001bcddc76190, RexxObject * * 
arguments=0x000001bcde86a120, unsigned __int64 argcount=1, RexxString * 
calltype=0x000001bcddc3d6f0, ProtectedObject & resultObj={...}) Line 3033     C++
        rexx.dll!RexxExpressionFunction::evaluate(RexxActivation * 
context=0x000001bcddc7b280, ExpressionStack * stack=0x000001bcddc7b3e8) Line 
214     C++
        rexx.dll!RexxInstructionAssignment::execute(RexxActivation * 
context=0x000001bcddc7b280, ExpressionStack * stack=0x000001bcddc7b3e8) Line 
129   C++
        rexx.dll!RexxActivation::run(RexxObject * _receiver=0x0000000000000000, 
RexxString * name=0x000001bcddc6b850, RexxObject * * _arglist=0x000001bcddc6afb0, 
unsigned __int64 _argcount=1, RexxInstruction * start=0x0000000000000000, 
ProtectedObject & resultObj={...}) Line 626     C++
        rexx.dll!RexxCode::call(Activity * activity=0x000001bcddc64eb0, 
RoutineClass * routine=0x000001bcddc7b240, RexxString * 
routineName=0x000001bcddc6b850, RexxObject * * argPtr=0x000001bcddc6afb0, unsigned 
__int64 argcount=1, RexxString * calltype=0x000001bcddaa57e0, RexxString * 
environment=0x000001bcddc3d7e0, ActivationContext context=PROGRAMCALL, 
ProtectedObject & result={...}) Line 188       C++
        rexx.dll!RoutineClass::runProgram(Activity * activity=0x000001bcddc64eb0, 
RexxObject * * arguments=0x000001bcddc6afb0, 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 3390 C++
        rexx.dll!CallProgram(RexxThreadContext_ * c=0x000001bcddc64ed8, const 
char * p=0x000001bcdba01f9d, _RexxArrayObject * a=0x000001bcddc6af50) Line 512  
  C++
        rexx.exe!RexxThreadContext_::CallProgram(const char * 
n=0x000001bcdba01f9d, _RexxArrayObject * a=0x000001bcddc6af50) Line 1001  C++
        rexx.exe!main(int argc=4, char * * argv=0x000001bcdba01f70) 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

The method name to look up is NEW, the call stack points to MethodDictionary.hpp, line # 69 with the following definition:

        MethodClass *getMethod(RexxString *methodName) { return (MethodClass 
*)get(methodName); }

This is what "Locals" shows:

   -            this    0x000001bcefe354f0 {objectVariables=0x000001bcf6263640 
{reservingActivity=0x0000000000000000 <NULL> ...} }        MethodDictionary * 
{RexxObject}
   +            [RexxObject]    {objectVariables=0x000001bcf6263640 
{reservingActivity=0x0000000000000000 <NULL> contents=0x000001bcf62636a0 {...} 
...} } RexxObject
   +            StringHashCollection    {...}   StringHashCollection
   +            instanceMethods 0x00007ffb44414544 {...}        StringTable *
   +            scopeList       0x0000000000000240 {IndexFlags=??? 
arraySize=??? maximumSize=??? ...}   ArrayClass *
   +            scopeOrders     0x0000000000000202 {...}        IdentityTable *
   -            methodName      0x000001bcdda2bdd0 {hashValue=77184 length=3 
numberStringValue=0x0000000000000000 <NULL> ...}     RexxString *
   +            RexxObject      {objectVariables=0x0000000000000000 <NULL> }    
  RexxObject
                hashValue       77184   unsigned __int64
                length  3       unsigned __int64
   +            numberStringValue       0x0000000000000000 <NULL> NumberString *
   +            attributes      {flags={bits=18 } }     FlagSet<enum 
RexxString::StringFlag,32>
   +            stringData      0x000001bcdda2be14 "NEW"      char[4]

Pressing + on some entries:

   -            this    0x000001bcefe354f0 {objectVariables=0x000001bcf6263640 
{reservingActivity=0x0000000000000000 <NULL> ...} }        MethodDictionary * 
{RexxObject}
   -            [RexxObject]    {objectVariables=0x000001bcf6263640 
{reservingActivity=0x0000000000000000 <NULL> contents=0x000001bcf62636a0 {...} 
...} } RexxObject
   -            RexxInternalObject      {header={objectSize=48 flags=1 
sizePadding=1 } behaviour=0x000001bce61a7aa0 {classType=T_First_Primitive_Class 
(0) ...} }       RexxInternalObject
   -            RexxVirtualBase {...}   RexxVirtualBase
   -            __vfptr 0x00007ffbbb55a490 {rexx.dll!const 
RexxObject::`vftable'} {0x00007ffbbb26eb92 {rexx.dll!RexxObject::`vector 
deleting destructor'(unsigned int)}, ...}   void * *
                [0]     0x00007ffbbb26eb92 {rexx.dll!RexxObject::`vector 
deleting destructor'(unsigned int)}    void *
                [1]     0x00007ffbbb26f1c8 
{rexx.dll!RexxVirtualBase::baseVirtual(void)}        void *
                [2]     0x00007ffbbb262fe0 {rexx.dll!RexxObject::live(unsigned 
__int64)}        void *
                [3]     0x00007ffbbb2694df 
{rexx.dll!RexxObject::liveGeneral(enum MarkReason)}  void *
                [4]     0x00007ffbbb264340 {rexx.dll!RexxObject::flatten(class 
Envelope *)}     void *
                [5]     0x00007ffbbb2685bc 
{rexx.dll!RexxVirtualBase::unflatten(class Envelope *)}      void *
   +            header  {objectSize=48 flags=1 sizePadding=1 }  ObjectHeader
   +            behaviour       0x000001bce61a7aa0 
{classType=T_First_Primitive_Class (0) behaviourFlags={flags={bits=1 } } 
methodDictionary=...}       RexxBehaviour *
   -            objectVariables 0x000001bcf6263640 
{reservingActivity=0x0000000000000000 <NULL> contents=0x000001bcf62636a0 {...} 
waitingActivities=...}  VariableDictionary *
   -            RexxInternalObject      {header={objectSize=96 flags=1 
sizePadding=1911095164929 } behaviour=rexx.dll!0x00007ffbbb65a570 
{classType=...} }      RexxInternalObject
   +            RexxVirtualBase {...}   RexxVirtualBase
   +            header  {objectSize=96 flags=1 sizePadding=1911095164929 }      
ObjectHeader
   +            behaviour       rexx.dll!0x00007ffbbb65a570 
{classType=T_VariableDictionary (83) behaviourFlags={flags={bits=4 } } 
methodDictionary=...}        RexxBehaviour *
   +            reservingActivity       0x0000000000000000 <NULL> Activity *
   +            contents        0x000001bcf62636a0 {...}        
StringHashContents *
   +            waitingActivities       0x0000000000000000 <NULL> ArrayClass *
                flags   0       unsigned short
                reserveCount    0       unsigned short
   +            nextDictionary  0x000001bcefe36140 
{reservingActivity=0x0000000000000000 <NULL> contents=0x000001bcefe361a0 {...} 
waitingActivities=...}  VariableDictionary *
   +            scope   0x000001bce61a5e50 {id=0x000001bce6192100 
{hashValue=5558862411515956297 length=18 numberStringValue=...} ...}  RexxClass 
*
                idntfr  0       unsigned int
   -            StringHashCollection    {...}   StringHashCollection
   +            HashCollection  {contents=0x0000000000000000 <NULL> }     
HashCollection
   +            instanceMethods 0x00007ffb44414544 {...}        StringTable *
   +            scopeList       0x0000000000000240 {IndexFlags=??? 
arraySize=??? maximumSize=??? ...}   ArrayClass *
   +            scopeOrders     0x0000000000000202 {...}        IdentityTable *
   -            methodName      0x000001bcdda2bdd0 {hashValue=77184 length=3 
numberStringValue=0x0000000000000000 <NULL> ...}     RexxString *
   +            RexxObject      {objectVariables=0x0000000000000000 <NULL> }    
  RexxObject
                hashValue       77184   unsigned __int64
                length  3       unsigned __int64
   +            numberStringValue       0x0000000000000000 <NULL> NumberString *
   +            attributes      {flags={bits=18 } }     FlagSet<enum 
RexxString::StringFlag,32>
   +            stringData      0x000001bcdda2be14 "NEW"      char[4]

Not sure what and where the problem is.

---rony

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to