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