Hi there,
after becoming able to create the 32-bit ooRexx interpreter from trunk, I
started to test it with
BSF4ooRexx programs.
One rather complex JavaFX-application implemented in ooRexx causes an exception
in isObjectMarked().
Here is top of the Java hs_error_pidNNNN.log file which gives a stack trace
exploiting the available
debug symbols:
# # A fatal error has been detected by the Java Runtime Environment: # #
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x52f1340a, pid=1124,
tid=0x00002098 # # JRE
version: Java(TM) SE Runtime Environment (8.0_131-b11) (build
1.8.0_131-b11) # Java VM: Java
HotSpot(TM) Client VM (25.131-b11 mixed mode windows-x86 ) # Problematic
frame: # C
[rexx.dll+0x2340a] ObjectHeader::isObjectMarked+0x1a # # Failed to write
core dump. Minidumps
are not enabled by default on client versions of Windows # # If you would
like to submit a bug
report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The
crash happened
outside the Java Virtual Machine in native code. # See problematic frame
for where to report the
bug. # --------------- T H R E A D --------------- Current thread
(0x15b82000): JavaThread
"JavaFX Application Thread" [_thread_in_native, id=8344,
stack(0x16230000,0x162b0000)] siginfo:
ExceptionCode=0xc0000005, reading address 0x00000015 Registers:
EAX=0x00000011, EBX=0x162acc08,
ECX=0x00000011, EDX=0x00000000 ESP=0x162abf88, EBP=0x162abf90,
ESI=0x162abfc4, EDI=0x162ac074
EIP=0x52f1340a, EFLAGS=0x00210216 Top of Stack: (sp=0x162abf88) 0x162abf88:
cccccccc 00000011
162abfa0 52f1345d 0x162abf98: 00000041 0000000d 162abfb8 52f97eca
0x162abfa8: 00000041 cccccccc
00000000 7ea31ba0 0x162abfb8: 162abfd4 52fcb47f 00000041 162ac088
0x162abfc8: 7ea31ba0 00000041
5317f648 162abfe4 0x162abfd8: 52fcb347 5317f648 5317f648 162abff0
0x162abfe8: 52fcb6a1 5317f648
162ac000 52fbc092 0x162abff8: cccccccc 5317f714 162ac014 52fcaabe
Instructions: (pc=0x52f1340a)
0x52f133ea: cc cc cc cc cc cc 55 8b ec 83 ec 08 c7 45 f8 cc 0x52f133fa: cc
cc cc c7 45 fc cc cc
cc cc 89 4d fc 8b 45 fc 0x52f1340a: 0f b7 48 04 23 4d 08 74 09 c7 45 f8 01
00 00 00 0x52f1341a:
eb 07 c7 45 f8 00 00 00 00 8a 45 f8 8b e5 5d c2 Register to memory mapping:
EAX=0x00000011 is an
unknown value EBX=0x162acc08 is pointing into the stack for thread:
0x15b82000 ECX=0x00000011 is
an unknown value EDX=0x00000000 is an unknown value ESP=0x162abf88 is
pointing into the stack
for thread: 0x15b82000 EBP=0x162abf90 is pointing into the stack for
thread: 0x15b82000
ESI=0x162abfc4 is pointing into the stack for thread: 0x15b82000
EDI=0x162ac074 is pointing into
the stack for thread: 0x15b82000 Stack: [0x16230000,0x162b0000],
sp=0x162abf88, free space=495k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native
code) C
[rexx.dll+0x2340a] ObjectHeader::isObjectMarked+0x1a C [rexx.dll+0x2345d]
RexxInternalObject::isObjectMarked+0x1d C [rexx.dll+0xa7eca]
RexxActivation::live+0x61a C
[rexx.dll+0xdb47f] MemoryObject::markObjectsMain+0xcf C [rexx.dll+0xdb347]
MemoryObject::markObjects+0x27 C [rexx.dll+0xdb6a1]
MemoryObject::collect+0x61 C
[rexx.dll+0xcc092] NormalSegmentSet::handleAllocationFailure+0x22 C
[rexx.dll+0xdaabe]
MemoryObject::newObject+0x7e C [rexx.dll+0x23d05] new_object+0x15 C
[rexx.dll+0x135561]
RexxToken::operator new+0x11 C [rexx.dll+0x1160e1]
RexxClause::RexxClause+0x91 C
[rexx.dll+0x128dc4] LanguageParser::initializeForParsing+0x1d4 C
[rexx.dll+0x128bd6]
LanguageParser::compileSource+0x16 C [rexx.dll+0x129d4a]
LanguageParser::translateInterpret+0x2a
C [rexx.dll+0x12e56a] LanguageParser::translateInterpret+0xfa C
[rexx.dll+0xb6669]
RexxCode::interpret+0x29 C [rexx.dll+0xaa214]
RexxActivation::interpret+0x74 C
[rexx.dll+0x10d3fe] RexxInstructionInterpret::execute+0x4e C
[rexx.dll+0xa8f2e]
RexxActivation::run+0x39e C [rexx.dll+0xb64a8] RexxCode::run+0x58 C
[rexx.dll+0x36ec3]
MethodClass::run+0x43 C [rexx.dll+0x4b39a] RexxObject::processUnknown+0xca
C [rexx.dll+0x4c520]
RexxObject::messageSend+0xf0 C [rexx.dll+0xfc95c]
ExpressionStack::send+0x3c C
[rexx.dll+0x10e046] RexxInstructionMessage::execute+0x136 C
[rexx.dll+0xa8f2e]
RexxActivation::run+0x39e C [rexx.dll+0xb64a8] RexxCode::run+0x58 C
[rexx.dll+0x36ec3]
MethodClass::run+0x43 C [rexx.dll+0x4c4fc] RexxObject::messageSend+0xcc C
[rexx.dll+0xa94db]
RexxActivation::forward+0x16b C [rexx.dll+0x10c4b6]
RexxInstructionForward::execute+0x2a6 C
[rexx.dll+0xa8f2e] RexxActivation::run+0x39e C [rexx.dll+0xb64a8]
RexxCode::run+0x58 C
[rexx.dll+0x36ec3] MethodClass::run+0x43 C [rexx.dll+0x4c4fc]
RexxObject::messageSend+0xcc C
[rexx.dll+0xa94db] RexxActivation::forward+0x16b C [rexx.dll+0x10c4b6]
RexxInstructionForward::execute+0x2a6 C [rexx.dll+0xa8f2e]
RexxActivation::run+0x39e C
[rexx.dll+0xb64a8] RexxCode::run+0x58 C [rexx.dll+0x36ec3]
MethodClass::run+0x43 C
[rexx.dll+0x4b39a] RexxObject::processUnknown+0xca C [rexx.dll+0x4c520]
RexxObject::messageSend+0xf0 C [rexx.dll+0x24084]
RexxObject::sendMessage+0x24 C
[rexx.dll+0xececf] Activity::traceOutput+0xaf C [rexx.dll+0xac7c3]
RexxActivation::traceClause+0xa3 C [rexx.dll+0x100c7b]
RexxActivation::traceInstruction+0x2b C
[rexx.dll+0x112a2a] RexxInstructionSay::execute+0x1a C [rexx.dll+0xa8f2e]
RexxActivation::run+0x39e C [rexx.dll+0xb652a] RexxCode::call+0x6a C
[rexx.dll+0xb6584]
RexxCode::call+0x44 C [rexx.dll+0x5a95f] RoutineClass::call+0x3f C
[rexx.dll+0xf005d]
CallRoutineDispatcher::run+0x5d C [rexx.dll+0xb90a6]
NativeActivation::run+0x96 C
[rexx.dll+0xeda9b] Activity::run+0xab C [rexx.dll+0x85dd5] CallRoutine+0x75
C
[BSF4ooRexx.DLL+0x8780] Java frames: (J=compiled Java code, j=interpreted,
Vv=VM code) j
org.rexxla.bsf.engines.rexx.RexxAndJava.jniRexxRunProgram(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+0
j
org.rexxla.bsf.engines.rexx.RexxEngine.apply(Ljava/lang/String;IILjava/lang/Object;Ljava/util/Vector;Ljava/util/Vector;)Ljava/lang/Object;+478
v ~StubRoutines::call_stub j
sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j
sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100
J 1124 C1
sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
(10 bytes) @ 0x02ef1a40 [0x02ef1a10+0x30] J 1123 C1
java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
(62
bytes) @ 0x02ef1754 [0x02ef1680+0xd4] j
org.rexxla.bsf.engines.rexx.RexxAndJava.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+3
j
org.rexxla.bsf.engines.rexx.RexxAndJava.javaCallBSF([Ljava/lang/String;)Ljava/lang/String;+5859
v ~StubRoutines::call_stub j
org.rexxla.bsf.engines.rexx.RexxAndJava.jniRexxSendMessageToRexxObject(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;+0
j
org.rexxla.bsf.engines.rexx.RexxEngine.call(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+235
j
org.rexxla.bsf.engines.rexx.RexxProxy.sendMessage1(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;+59
j
org.rexxla.bsf.engines.rexx.jsr223.RexxCompiledScript.eval(Ljavax/script/ScriptContext;)Ljava/lang/Object;+127
j
org.rexxla.bsf.engines.rexx.jsr223.RexxScriptEngine.eval(Ljava/lang/String;Ljavax/script/ScriptContext;)Ljava/lang/Object;+139
j
javax.script.AbstractScriptEngine.eval(Ljava/lang/String;)Ljava/lang/Object;+6 j
javafx.fxml.FXMLLoader$ScriptEventHandler.handle(Ljavafx/event/Event;)V+59 j
com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Ljavafx/event/Event;)V+51
J
1249 C1
com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;
(23 bytes) @ 0x02f121b8 [0x02f120d0+0xe8] j
com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+29
j
com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+69
j
com.sun.javafx.event.EventUtil.fireEventImpl(Ljavafx/event/EventDispatchChain;Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+10
j
com.sun.javafx.event.EventUtil.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+37
j
javafx.event.Event.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)V+30
j
javafx.scene.control.MenuItem.fire()V+10 j
com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect()V+97
j
com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(Ljavafx/scene/input/MouseEvent;)V+1
j
com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$683.handle(Ljavafx/event/Event;)V+8
j
com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Ljavafx/event/Event;)V+5
j
com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Ljavafx/event/Event;)V+28
J
1249 C1
com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;
(23 bytes) @ 0x02f121b8 [0x02f120d0+0xe8] j
com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+11
j
com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+29
j
com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+69
j
com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17
j
com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+69
j
com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17
j
com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+69
j
com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17
j
com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+69
j
com.sun.javafx.event.EventUtil.fireEventImpl(Ljavafx/event/EventDispatchChain;Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+10
j
com.sun.javafx.event.EventUtil.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+46
j
javafx.event.Event.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)V+30
j
javafx.scene.Scene$MouseHandler.process(Ljavafx/scene/input/MouseEvent;Z)V+491 j
javafx.scene.Scene$MouseHandler.access$1500(Ljavafx/scene/Scene$MouseHandler;Ljavafx/scene/input/MouseEvent;Z)V+3
j
javafx.scene.Scene.impl_processMouseEvent(Ljavafx/scene/input/MouseEvent;)V+6 j
javafx.scene.Scene$ScenePeerListener.mouseEvent(Ljavafx/event/EventType;DDDDLjavafx/scene/input/MouseButton;ZZZZZZZZZ)V+46
j
com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run()Ljava/lang/Void;+514
j
com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run()Ljava/lang/Object;+1
v ~StubRoutines::call_stub j
java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
j
com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354()Ljava/lang/Void;+11
j
com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$84.get()Ljava/lang/Object;+4
j
com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Ljava/util/function/Supplier;)Ljava/lang/Object;+18
j
com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Lcom/sun/glass/ui/View;JIIIIIIIZZ)V+103
j com.sun.glass.ui.View.handleMouseEvent(JIIIIIIIZZ)V+30 j
com.sun.glass.ui.View.notifyMouse(IIIIIIIZZ)V+181 v
~StubRoutines::call_stub j
com.sun.glass.ui.win.WinApplication._runLoop(Ljava/lang/Runnable;)V+0 j
com.sun.glass.ui.win.WinApplication.lambda$null$148(ILjava/lang/Runnable;)V+8 j
com.sun.glass.ui.win.WinApplication$$Lambda$41.run()V+12 j
java.lang.Thread.run()V+11 v
~StubRoutines::call_stub --------------- P R O C E S S --------------- Java
Threads: ( =>
current thread ) 0x199e5000 JavaThread "Prism Font Disposer" daemon
[_thread_blocked, id=2672,
stack(0x1b500000,0x1b580000)] 0x15bb5800 JavaThread "Thread-4" daemon
[_thread_in_native,
id=8744, stack(0x17ef0000,0x17f70000)] =>0x15b82000 JavaThread "JavaFX
Application Thread"
[_thread_in_native, id=8344, stack(0x16230000,0x162b0000)] 0x15b7a000
JavaThread "Thread-3"
daemon [_thread_blocked, id=1788, stack(0x16020000,0x160a0000)] 0x15b66800
JavaThread
"QuantumRenderer-0" daemon [_thread_blocked, id=1264,
stack(0x16160000,0x161e0000)] 0x15b11800
JavaThread "JavaFX-Launcher" [_thread_blocked, id=5448,
stack(0x160b0000,0x16130000)] 0x152e0c00
JavaThread "Service Thread" daemon [_thread_blocked, id=5852,
stack(0x15740000,0x157c0000)]
0x152b8400 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=5424,
stack(0x15860000,0x158e0000)] 0x152b7400 JavaThread "Attach Listener"
daemon [_thread_blocked,
id=5792, stack(0x156a0000,0x15720000)] 0x152bb800 JavaThread "Signal
Dispatcher" daemon
[_thread_blocked, id=8796, stack(0x155f0000,0x15670000)] 0x152a6c00
JavaThread "Finalizer"
daemon [_thread_blocked, id=1964, stack(0x04d40000,0x04dc0000)] 0x15281800
JavaThread "Reference
Handler" daemon [_thread_blocked, id=8964, stack(0x02650000,0x026d0000)]
0x026fc800 JavaThread
"main" [_thread_blocked, id=4920, stack(0x00400000,0x00480000)] Other
Threads: 0x1527b400
VMThread [stack: 0x02710000,0x02790000] [id=7588] 0x152e3c00 WatcherThread
[stack:
0x15970000,0x159f0000] [id=5468]
The JavaFX program is an experimental ooRexxTry.rxj (an ooRexx program using
JavaFX for its GUI),
which will cause a crash while executing the following code:
trace i; do i=1 to 55; say 55/i; end;
.output, .input, .error, .traceOutput, .debugInput are redirected, such that
the student becomes
able to colorize the .traceOutput. Sometimes the above program runs
successfully, most of the time
it crashes on the first run.
Here is the colored trace output when the above program runs successfully
making it easy to
distinguish the trace from the regular output:
1 *-* do i=1 to 55; >L> "1" >L> "55" >=> I <= "1" >>> "1" 1 *-* say 55/i;
>L> "55" >V> I => "1"
>O> "/" => "55" >>> "55" REXXout>55 1 *-* end; 1 *-* do i=1 to 55; >>> "1"
>>> "2" 1 *-* say
55/i; >L> "55" >V> I => "2" >O> "/" => "27.5" >>> "27.5" REXXout>27.5 1 *-*
end; 1 *-* do i=1 to
55; >>> "2" >>> "3" 1 *-* say 55/i; >L> "55" >V> I => "3" >O> "/" =>
"18.3333333" >>>
"18.3333333" REXXout>18.3333333 ... cut ... 1 *-* end; 1 *-* do i=1 to 55;
>>> "53" >>> "54" 1
*-* say 55/i; >L> "55" >V> I => "54" >O> "/" => "1.01851852" >>>
"1.01851852" REXXout>1.01851852
1 *-* end; 1 *-* do i=1 to 55; >>> "54" >>> "55" 1 *-* say 55/i; >L> "55"
>V> I => "55" >O> "/"
=> "1" >>> "1" REXXout>1 1 *-* end; 1 *-* do i=1 to 55; >>> "55" >>> "56"
On one occasion I was able to get into the debugger which reported an
unauthorized write to a memory
location, here is the call stack from the VS debugger:
> rexx.dll!ObjectHeader::clearObjectMark() Line 117 C++
rexx.dll!ObjectHeader::setObjectMark(unsigned int mark=2) Line 118 C++
rexx.dll!RexxInternalObject::setObjectLive(unsigned int markword=2) Line
273 C++
rexx.dll!MemoryObject::mark(RexxInternalObject * markObject=0x54a30468)
Line 1026 C++
rexx.dll!RexxActivation::live(unsigned int liveMark=66) Line 350 C++
rexx.dll!MemoryObject::markObjectsMain(RexxInternalObject *
rootObject=0x54a8f648) Line 256 C++
rexx.dll!MemoryObject::markObjects() Line 414 C++
rexx.dll!MemoryObject::collect() Line 765 C++
rexx.dll!MemoryObject::collectAndUninit(bool clearStack=false) Line 304 C++
rexx.dll!InterpreterInstance::terminate() Line 498 C++
rexx.dll!Terminate(RexxInstance_ *
c=0x7dba8200) Line 58 C++ rexx.exe!RexxInstance_::Terminate() Line 700 C++
rexx.exe!main(int
argc=2, char * * argv=0x0061c2c8) Line 244 C++ rexx.exe!invoke_main() Line
64 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!7687336a() Unknown
[Frames below may be
incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!77919902() Unknown
ntdll.dll!779198d5() Unknown
---rony
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel