As my sample was not valid (terminating the Rexx instance on the Rexx instance itself would not allow termination, hence eating up all available memory on each new Rexx interpreter instance until no more memory available and therefore crashing), I have been trying to come up with variants to provoke that observed crash to no avail.
Have researched the Java debug possibilities as the crash in the Java based web server would not allow MSVS to attach to the process as Java would handle it already by creating a hs_error*.log file. However, on Java it is possible to create a mini dump by starting the Java VM with the start up switch "|-XX:+CreateMinidumpOnCrash|" (supposedly "CreateMinidumpOnCrash" was Windows only and starting with Java 9 it got changed to "CreateCoredumpOnCrash", but as of Java 17 is still functional). It gets created in the same directory as the hs_error*log file and carries the same name but with the "mdmp" extension. Having created ooRexx r12308 with "relWithDebInfos" this mini dump can be loaded with MS VisualStudio and positions on the crashing source line # 160 in SysInterpreterInstance.cpp : ... cut ... if ((_fileno(stderr) < 0) && (GetFileType(GetStdHandle(STD_ERROR_HANDLE)) != FILE_TYPE_UNKNOWN)) { **stderr = *_fdopen(_open_osfhandle((intptr_t)GetStdHandle(STD_ERROR_HANDLE),_O_APPEND), "a");* } // enable trapping for CTRL_C exceptions ... cut ... Here the CallStack: > rexx.dll!SysInterpreterInstance::initialize(InterpreterInstance * i=0x19d9f9a8, RexxOption * options=0x15e04558) Line 160 C++ rexx.dll!InterpreterInstance::initialize(Activity * activity=0x19d9f640, RexxOption * options=0x15e04558) Line 161 C++ rexx.dll!Interpreter::createInterpreterInstance(RexxOption * options=0x15e04558) Line 345 C++ rexx.dll!Interpreter::createInstance(RexxInstance_ * & instance=0x00000000, RexxThreadContext_ * & threadContext=0x1894ef28, RexxOption * options=0x15e04558) Line 284 C++ rexx.dll!RexxCreateInterpreter(RexxInstance_ * * instance=0x1894ef20, RexxThreadContext_ * * context=0x1894eee8, RexxOption * options=0x15e04558) Line 395 C++ BSF4ooRexx.dll!638986d5() Unknown [Frames below may be incorrect and/or missing, no symbols loaded for BSF4ooRexx.dll] 0162873c() Unknown Here "Locals" expanded by one level (short of knowing what to look for): - this 0x19d9f9c4 {instance=0x00000000 <NULL> externalTraceEnabled=false } SysInterpreterInstance * + instance 0x00000000 <NULL> InterpreterInstance * externalTraceEnabled false bool h Variable is optimized away and not available. - i 0x19d9f9a8 {context={instanceContext={functions=0x6354f544 {rexx.dll!RexxInstanceInterface InterpreterInstance::interfaceVector} {...} ...} ...} ...} InterpreterInstance * + RexxInternalObject {header={objectSize=224 flags=2 sizePadding=1666252802 } behaviour=rexx.dll!0x6355bf94 {classType=T_InterpreterInstance (191) ...} } RexxInternalObject + context {instanceContext={functions=0x6354f544 {rexx.dll!RexxInstanceInterface InterpreterInstance::interfaceVector} {...} ...} ...} InstanceContext + sysInstance {instance=0x00000000 <NULL> externalTraceEnabled=false } SysInterpreterInstance + rootActivity 0x19d9f640 {instance=0x19d9f9a8 {context={instanceContext={functions=0x6354f544 {rexx.dll!RexxInstanceInterface InterpreterInstance::interfaceVector} {...} ...} ...} ...} ...} Activity * + securityManager 0x19d9fd38 {manager=0x00000000 <NULL> } SecurityManager * + allActivities 0x19d9fa88 {...} QueueClass * + defaultEnvironment 0x19175b58 {hashValue=66842 length=3 numberStringValue=0x00000000 <NULL> ...} RexxString * + searchPath 0x00000000 <NULL> RexxString * + searchExtensions 0x19d9faf8 {IndexFlags=0 arraySize=4 maximumSize=16 ...} ArrayClass * applicationData 0x00000000 void * + localEnvironment 0x19d9ffa8 {methodTable=0x00000000 <NULL> unknownMethod=0x00000000 <NULL> } DirectoryClass * + commandHandlers 0x19d9fd50 {...} StringTable * + requiresFiles 0x19d9fb68 {...} StringTable * terminating false bool terminated false bool + terminationSem {sem=0x0000103c } SysSemaphore + exits 0x19d9f9fc {{entryPoint=0x00000000 type=UNRESOLVED (0) }, {entryPoint=0x00000000 type=UNRESOLVED (0) }, ...} ExitHandler[17] mode 433717824 unsigned long - options 0x15e04558 {optionName=0x638b29a8 "RegisterLibrary" option={value={value_ARGLIST=0x1894ef24 {...} value_NAME=...} ...} } RexxOption * + optionName 0x638b29a8 "RegisterLibrary" const char * + option {value={value_ARGLIST=0x1894ef24 {...} value_NAME=0x1894ef24 "4\v‹cHËc<‡b\x1XEà\x15„ï”\x18€ï”\x18" ...} ...} _ValueDescriptor - rxTraceBuf 0x1894ee00 "XEà\x15¨ÿÙ\x19... char[8] [0] 88 'X' char [1] 69 'E' char [2] -32 'à' char [3] 21 '\x15' char [4] -88 '¨' char [5] -1 'ÿ' char [6] -39 'Ù' char [7] 25 '\x19' char If helpful I can provide the mini dump which is 256 MB in size (the maximum process memory for Tomcat 9 in this case) and the nsis-installation package for that specific Rexx interpreter. ---rony On 18.11.2021 19:04, Rony G. Flatscher wrote: > Just filed a bug (with the code attached) at > <https://sourceforge.net/p/oorexx/bugs/1789/>. > > ---rony > > > On 18.11.2021 13:38, Rony G. Flatscher wrote: >> For completeness: now had the possibility to create and test three versions >> of ooRexx r12308: >> "release", "releaseWithDebugInfo" and "Debug": "release" and >> "releaseWithDebugInfo" crash always at >> the same Rexx instance creation (# 168 on 32-bit Windows). The "debug" >> version runs without a crash. >> >> ---rony >> >> P.S.: The Tomcat 9 Java web server resides on the same Windows 32-bit >> machine using the installed >> 32-bit ooRexx to serve RexxServerPages/JSP. The Java exception handler kicks >> in and creates >> hs_error*.log files, unfortunately without the rexx.dll symbols which should >> be available with the >> "releaseWithDebugInfo". >> >> On 17.11.2021 19:22, Rony G. Flatscher wrote: >>> Just another observation: tested the Java web server with the same Rexx JSP >>> with the 32-bit DEBUG >>> version of ooRexx from trunk and it does not crash! >>> >>> ---rony >>> >>> >>> On 19.10.2021 14:15, Rony G. Flatscher wrote: >>>> Tested against a 64-bit ooRexx (r12288) on Linux: the crashes occur there >>>> too, however at around >>>> 400 RexxCreateInterpreter() invocations. >>>> >>>> ---rony >>>> >>>> On 19.10.2021 13:23, Rony G. Flatscher wrote: >>>>> While testing a simple Rexx script in a JSP there are crashes in >>>>> RexxCreateInterpreter(), always >>>>> at the same invocation number (at # 168 plus a primodal interpreter >>>>> instance). >>>>> >>>>> Each of the 168 JSP-requests will cause a RexxInterpreter instance to be >>>>> created to run the Rexx >>>>> scripts of a particular JSP invocation. >>>>> >>>>> Here a snippet of the Java (32-bit, Java 8) hs_error logfile after >>>>> creating a debug version of >>>>> ooRexx (32-bit, r12297):
_______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel