Hi P.O.,

On 04.04.2024 22:34, P.O. Jonsson wrote:
We are using the Community Edition of Visual Studio for all Windows platforms since it is free of charge; is there anything missing in that edition that you need?

We have at least 2017, 2019 and 2022 editions installers saved, I will send you a private message just now.

thank you very much!

Best regards

---rony



Am 04.04.2024 um 19:04 schrieb Rony G. Flatscher <rony.flatsc...@wu.ac.at>:

Am using an almost ten year old version of MVS (Microsfot Visual Studio), which was bought (but due to lack of money has not been updated by buying an update, newer version).

It seems that I am not able to define a data break point with it for the TraceObject RexxClass object successfully. MVS in the breakpoint window seems to not be able to allow for setting a data breakpoint at "RexxClass->RexxObject->RexxInternalObject->behaviour->methodDictionary" to learn from where in the ooRexx runtime this area gets overwritten.

Therefore, if anyone has newer debugging means and is able to recreate the crash, then requesting help to debug this strange situation (please see the call stack below, the top record is not always shown, the crash indicates that behaviour->methodDictionary is NULL, yet the class object got successfully used many times before in the test suite)!

Again, if the crash occurs then only after running the test suite with "rexx testOORexx.rex -s -U" from "test/trunk" in "test\trunk\ooRexx\base\runtime.objects\environmentEntries.testGroup". Running that test group standalone does not crash here.

Any help highly appreciated!

---rony



On 03.04.2024 17:29, Rony G. Flatscher wrote:
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