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

Reply via email to