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
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel