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

Reply via email to