Today I created 32- and 64-bit versions of ooRexx from trunk, revision 11.494 
to run the BSF4ooRexx
test units (these builds can be temporarily downloaded from my DropBox at:
<https://www.dropbox.com/sh/2e9rirq3g51f0e8/AACot_3lwJMTj7navz_0PLx5a?dl=0>).

Two sample programs (swt, JavaFX concurrent thread updates to GUI) now hang 
from time to time.

Almost all BSF4ooRexx test units succeed, however the multithreaded test units 
which used to run
either hang or even cause an exception rather early in the tests, here an 
example from the Java
hs_error_pidXXXX.log file:

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000007fee5187fb0, 
pid=3316, tid=684
    #
    # JRE version: Java(TM) SE Runtime Environment (9.0+11) (build 9.0.4+11)
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (9.0.4+11, mixed mode, tiered, 
compressed oops, g1 gc, windows-amd64)
    # Problematic frame:
    # C  [rexx.dll+0x87fb0]  HashContents::hashIndex+0x30
    #
    # No core dump will be written. 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.
    #

    ---------------  S U M M A R Y ------------

    Command Line: 

    Host: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz, 4 cores, 11G,  Windows 7 , 
64 bit Build 7601 (6.1.7601.24231)
    Time: Mon Sep 17 16:24:00 2018 W. Europe Daylight Time elapsed time: 2 
seconds (0d 0h 0m 2s)

    ---------------  T H R E A D  ---------------

    Current thread (0x000000002a11b800):  JavaThread "Thread-56" 
[_thread_in_native, id=684, stack(0x000000002abf0000,0x000000002ac70000)]

    Stack: [0x000000002abf0000,0x000000002ac70000],  sp=0x000000002ac6e9a0,  
free space=506k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native 
code)
    C  [rexx.dll+0x87fb0]  HashContents::hashIndex+0x30
    C  [rexx.dll+0x88f35]  HashContents::locateEntry+0x45
    C  [rexx.dll+0x88dac]  HashContents::remove+0x3c
    C  [rexx.dll+0x85ef6]  HashCollection::remove+0x36
    C  [rexx.dll+0xdd79f]  NativeActivation::removeLocalReference+0x7f
    C  [rexx.dll+0x9dc2b]  ReleaseLocalReference+0x4b
    C  [BSF4ooRexx.DLL+0x12b04]  RexxThreadContext_::ReleaseLocalReference+0x24
    C  [BSF4ooRexx.DLL+0x18279]  RgfProcessJArgs+0x519
    C  [BSF4ooRexx.DLL+0x8d25]  
Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniRexxRunProgram+0x4d5
    C  0x000000001a6c82f5

    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
    j  rgf_multithreading.TestNestedEngines_80$ThreadedJNIRexxStart80.run()V+136
    j  java.lang.Thread.run()V+11 java.base@9.0.4
    v  ~StubRoutines::call_stub

    siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), reading address 
0x0000000000000078


    Register to memory mapping:

    RIP=0x000007fee5187fb0 rexx.dll::HashContents::hashIndex + 0x30
    RAX=0x0000000000000000 is an unknown value
    RBX={method} {0x000000000720dcd8} 'jniRexxRunProgram' 
'(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;'
 in 'org/rexxla/bsf/engines/rexx/RexxAndJava'
    RCX=0x0000000002d48770 is an unknown value
    RDX=0x0000000002d48770 is an unknown value
    RSP=0x000000002ac6e9a0 is pointing into the stack for thread: 
0x000000002a11b800
    RBP=0x000000002ac6ee18 is pointing into the stack for thread: 
0x000000002a11b800
    RSI=0x0000000000000009 is an unknown value
    RDI=0x000000002ac6e9c0 is pointing into the stack for thread: 
0x000000002a11b800
    R8 =0x000000002ac6ea28 is pointing into the stack for thread: 
0x000000002a11b800
    R9 =0x000000002ac6ea48 is pointing into the stack for thread: 
0x000000002a11b800
    R10=0x0000000000000000 is an unknown value
    R11=0x0000000000000246 is an unknown value
    R12=0x0000000000000000 is an unknown value
    R13={method} {0x000000000720dcd8} 'jniRexxRunProgram' 
'(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;'
 in 'org/rexxla/bsf/engines/rexx/RexxAndJava'
    R14=0x000000002ac6ee60 is pointing into the stack for thread: 
0x000000002a11b800
    R15=0x000000002a11b800 is a thread


    ... cut ...

The crash occurs while 23 Rexx threads are active, the first 49 threads have 
already concluded and
are not existing anymore.

If there is more that I can do to debug this, then please advise. Shall I try 
to create MS VS thread
stack traces and submit them via the bug tracker or is there something that I 
could try beforehand?

---rony




_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to