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