Hi Rony, 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. Hälsningar/Regards/Grüsse, P.O. Jonsson oor...@jonases.se > 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
_______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel