https://bugs.winehq.org/show_bug.cgi?id=37389
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, win64 Status|UNCONFIRMED |NEW URL| |https://raptor-chess-interf | |ace.googlecode.com/files/Ra | |ptor98u3f5_w64.exe CC| |focht@gmx.net Summary|The program |64-bit Raptor Chess |Raptor98u3f5_w64.exe |Interface app v98u3f5 |crashes on launch |crashes on startup (64-bit | |Java 6u24 JVM with broken | |mixed mode execution) Ever confirmed|0 |1
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming, there is still a crash with recent Wine 1.7.28 - but in different way.
You Wine version 1.6.x is definitely too old.
Win64 apps are still kind of hit-and-miss. In various cases you are better off with the 32-bit version of the app unless you want to suffer.
The installer will download/install 64-bit Java 1.6 (JRE) on its own.
--- snip --- $ pwd /home/focht/wine64/drive_c/Program Files (x86)/Raptor ... $ file *.exe elevate.exe: PE32+ executable (console) x86-64, for MS Windows Raptor.exe: PE32+ executable (GUI) x86-64, for MS Windows SayStatic.exe: PE32 executable (console) Intel 80386, for MS Windows Uninstall.exe: PE32 executable (GUI) Intel 80386, for MS Windows --- snip ---
One can bypass the 64-bit executable (which hosts the JVM) for better diagnosis as follows:
--- snip --- $ wine "c:\program files\Java\jre6\bin\java.exe" -verbose:jni -verbose:class -Xcheck:jni -jar "C:\Program Files (x86)\Raptor\updater.jar" --- snip ---
I added more verbosity.
There is a crash in the JVM seen on terminal:
--- snip --- ... [Loaded sun.nio.cs.US_ASCII from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.nio.cs.US_ASCII$Decoder from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.DNSName from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.ExtendedKeyUsageExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.KeyUsageExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.NetscapeCertTypeExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.NetscapeCertTypeExtension$MapEntry from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.SubjectAlternativeNameExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.SubjectKeyIdentifierExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.KeyIdentifier from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.AuthorityKeyIdentifierExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.AuthorityInfoAccessExtension from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.x509.AccessDescription from C:\program files\Java\jre6\lib\rt.jar] [Loaded sun.security.pkcs.SignerInfo from C:\program files\Java\jre6\lib\rt.jar] # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (sharedRuntime.cpp:711), pid=34, tid=36 # guarantee(cb->is_adapter_blob() || cb->is_method_handles_adapter_blob()) failed: exception happened outside interpreter, nmethods and vtable stubs (1) # # JRE version: 6.0_24-b07 # Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode windows-amd64 compressed oops) fixme:msvcrt:MSVCRT__wsopen_s : pmode 0x01b6 ignored # An error report file with more information is saved as: # C:\Program Files (x86)\Raptor\hs_err_pid34.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # --- snip ---
The Java VM writes a crash dump:
--- snip --- ... Current thread (0x0000000000545800): JavaThread "main" [_thread_in_Java, id=36, stack(0x0000000000650000,0x0000000000750000)]
Stack: [0x0000000000650000,0x0000000000750000] [error occurred during error reporting (printing stack bounds), id 0xc0000005]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) v blob 0x000000000078707f j java.util.jar.Attributes.putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+13 j java.util.jar.Attributes.read(Ljava/util/jar/Manifest$FastInputStream;[B)V+301 j java.util.jar.Manifest.read(Ljava/io/InputStream;)V+21 j sun.security.util.SignatureFileVerifier.processImpl(Ljava/util/Hashtable;Ljava/util/List;)V+20 j sun.security.util.SignatureFileVerifier.process(Ljava/util/Hashtable;Ljava/util/List;)V+9 j java.util.jar.JarVerifier.processEntry(Lsun/security/util/ManifestEntryVerifier;)V+387 j java.util.jar.JarVerifier.update(I[BIILsun/security/util/ManifestEntryVerifier;)V+39 j java.util.jar.JarFile.initializeVerifier()V+107 j java.util.jar.JarFile.getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;+25 j sun.misc.URLClassPath$JarLoader$2.getInputStream()Ljava/io/InputStream;+11 j sun.misc.Resource.cachedInputStream()Ljava/io/InputStream;+9 j sun.misc.Resource.getByteBuffer()Ljava/nio/ByteBuffer;+1 j java.net.URLClassLoader.defineClass(Ljava/lang/String;Lsun/misc/Resource;Z)Ljava/lang/Class;+182 j java.net.URLClassLoader.access$000(Ljava/net/URLClassLoader;Ljava/lang/String;Lsun/misc/Resource;Z)Ljava/lang/Class;+4 j java.net.URLClassLoader$1.run()Ljava/lang/Object;+44 v ~StubRoutines::call_stub j java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0 j java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;+13 j java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;+47 j java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;+3 v ~StubRoutines::call_stub j java.lang.Class.getDeclaredMethods0(Z)[Ljava/lang/reflect/Method;+0 j java.lang.Class.privateGetDeclaredMethods(Z)[Ljava/lang/reflect/Method;+72 j java.lang.Class.getMethod0(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;+4 j java.lang.Class.getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;+11 j raptor.updater.UpdateManager.invokeMain([Ljava/lang/String;)V+53 j raptor.updater.UpdateManager.main([Ljava/lang/String;)V+63 v ~StubRoutines::call_stub ... --------------- P R O C E S S ---------------
Java Threads: ( => current thread ) 0x0000000000641800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=48, stack(0x0000000004ed0000,0x0000000004fd0000)] 0x000000000062d000 JavaThread "CompilerThread1" daemon [_thread_blocked, id=47, stack(0x0000000004dd0000,0x0000000004ed0000)] 0x0000000000627000 JavaThread "CompilerThread0" daemon [_thread_in_native, id=46, stack(0x0000000004cd0000,0x0000000004dd0000)] 0x0000000000624800 JavaThread "Attach Listener" daemon [_thread_blocked, id=45, stack(0x0000000004bd0000,0x0000000004cd0000)] 0x0000000000623000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=44, stack(0x0000000004ad0000,0x0000000004bd0000)] 0x0000000000604800 JavaThread "Finalizer" daemon [_thread_blocked, id=43, stack(0x00000000049d0000,0x0000000004ad0000)] 0x0000000000602800 JavaThread "Reference Handler" daemon [_thread_blocked, id=42, stack(0x00000000048d0000,0x00000000049d0000)] =>0x0000000000545800 JavaThread "main" [_thread_in_Java, id=36, stack(0x0000000000650000,0x0000000000750000)]
Other Threads: 0x00000000005fc000 VMThread [stack: 0x00000000047d0000,0x00000000048d0000] [id=41] 0x0000000000644000 WatcherThread [stack: 0x0000000004fd0000,0x00000000050d0000] [id=49] ... Dynamic libraries: 0x0000000000400000 - 0x000000000042e000 C:\program files\Java\jre6\bin\java.exe 0x00007f78b9ac0000 - 0x00007f78b9dbb000 C:\windows\system32\ntdll.dll 0x000000007b820000 - 0x000000007bc88000 C:\windows\system32\KERNEL32.dll 0x00007f78b30f0000 - 0x00007f78b3370000 C:\windows\system32\advapi32.dll 0x000000006d7f0000 - 0x000000006def4000 C:\program files\Java\jre6\bin\server\jvm.dll 0x00007f78b2d40000 - 0x00007f78b30e1000 C:\windows\system32\user32.dll 0x00007f78b29b0000 - 0x00007f78b2d18000 C:\windows\system32\gdi32.dll 0x00007f78b2780000 - 0x00007f78b2995000 C:\windows\system32\version.dll 0x00007f78b24c0000 - 0x00007f78b277a000 C:\windows\system32\winmm.dll 0x00007f78b2110000 - 0x00007f78b24b0000 C:\windows\system32\ole32.dll 0x00007f78b1e50000 - 0x00007f78b20e5000 C:\windows\system32\rpcrt4.dll 0x00007f78b1c20000 - 0x00007f78b1e3f000 C:\windows\system32\msacm32.dll 0x00007f78b1960000 - 0x00007f78b1c0f000 C:\windows\system32\msvcrt.dll 0x000000006d760000 - 0x000000006d76e000 C:\program files\Java\jre6\bin\verify.dll 0x000000006d3b0000 - 0x000000006d3d7000 C:\program files\Java\jre6\bin\java.dll 0x000000006d310000 - 0x000000006d31a000 C:\program files\Java\jre6\bin\hpi.dll 0x00007f78b16f0000 - 0x00007f78b18f5000 C:\windows\system32\psapi.dll 0x000000006d7b0000 - 0x000000006d7c2000 C:\program files\Java\jre6\bin\zip.dll --- snip ---
It doesn't matter if "server" or "client" type VM is used.
Trace log around crash location doesn't reveal much as this is mostly native/IL code from JVM, with few Win64/CRT API callouts.
--- snip --- ... 0024:trace:msvcrt:pf_printf_a Format is: "[Loaded %s from %s]\n" 0024:Ret msvcrt._vsnprintf() retval=00000051 ret=6dbe53b1 0024:Call msvcrt._write(00000001,0074af00,00000051) ret=6dbe6b1f 0024:Call KERNEL32.WriteFile(00000004,0074af00,00000051,0074a464,00000000) ret=7f5e46487455 [Loaded sun.security.pkcs.SignerInfo from C:\program files\Java\jre6\lib\rt.jar] 0024:Ret KERNEL32.WriteFile() retval=00000001 ret=7f5e46487455 0024:Ret msvcrt._write() retval=00000051 ret=6dbe6b1f ... 0024:Call msvcrt.strrchr(005460e0 "sun/security/pkcs/SignerInfo.class",0000002f) ret=6d8e1b59 ... 0024:Call msvcrt.strncmp(005460e0 "sun/security/pkcs/SignerInfo.class",05268770 "sun/security/pkcs/",00000012) ret=6d8e1bc4 ... 0024:Call msvcrt._vsnprintf(0074b2f0,000007d0,6dd78630 "0x%016I64x",0074bb00) ret=6dbe53b1 0024:trace:msvcrt:pf_printf_a Format is: "0x%016I64x" 0024:Ret msvcrt._vsnprintf() retval=00000012 ret=6dbe53b1 0024:Call msvcrt.strncpy(053c8740,0074b2f0 "0x000000000000bbbb",00000012) ret=6dbe4e70 ... 0024:Call msvcrt._vsnprintf(0074b2f0,000007d0,6dd78630 "0x%016I64x",0074bb00) ret=6dbe53b1 0024:trace:msvcrt:pf_printf_a Format is: "0x%016I64x" 0024:Ret msvcrt._vsnprintf() retval=00000012 ret=6dbe53b1 ... 0024:Call msvcrt.strncpy(053c8752,0074b2f0 "0x000000000000bbbb",00000012) ret=6dbe4e70 0024:Ret msvcrt.strncpy() retval=053c8752 ret=6dbe4e70 0024:Call msvcrt.strncpy(053c8840,053c8740 "0x000000000000bbbb0x000000000000bbbb",00000024) ret=6dbe4f21 0024:Ret msvcrt.strncpy() retval=053c8840 ret=6dbe4f21 0024:Call msvcrt._vsnprintf(0074bd80,00000100,6ddabde8 "%s(%s)@0x%016I64x",0074bb08) ret=6da6a1e2 0024:trace:msvcrt:pf_printf_a Format is: "%s(%s)@0x%016I64x" 0024:Ret msvcrt._vsnprintf() retval=00000049 ret=6da6a1e2 ... 0024:Call msvcrt.memcpy(00545fd0,0074b950,00000080) ret=6dc3bc40 0024:Ret msvcrt.memcpy() retval=00545fd0 ret=6dc3bc40 0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7b7f50 ip=7b7f50 tid=0024 0024:trace:seh:raise_exception info[0]=0000000000000000 0024:trace:seh:raise_exception info[1]=0000000000000008 0024:trace:seh:raise_exception rax=0000000000000000 rbx=000000000074c490 rcx=0000000000000001 rdx=000000000074c400 0024:trace:seh:raise_exception rsi=00000000efc97188 rdi=0000000000755a0e rbp=0000000000000000 rsp=000000000074c490 0024:trace:seh:raise_exception r8=0000000040000000 r9=00000007d6abe818 r10=000000006de816f0 r11=00000000007b0200 0024:trace:seh:raise_exception r12=0000000000000000 r13=00000000007b7f50 r14=000000000074c488 r15=0000000000545800 0024:trace:seh:RtlVirtualUnwind type 1 rip 7b7f50 rsp 74c490 0024:trace:seh:dump_unwind_info **** func 0-3000000 0024:trace:seh:dump_unwind_info unwind info at 0x75017c flags 1 prolog 0x0 bytes function 0x750000-0x3750000 0024:trace:seh:dump_unwind_info handler 0x750160 data at 0x750184 0024:trace:seh:call_handler calling handler 0x750160 (rec=0x74c360, frame=0x74c490 context=0x74b6e0, dispatch=0x74bbb0) 0024:trace:seh:call_handler handler at 0x750160 returned 0 ... --- snip ---
Playing with more "advanced" virtual machine options I found that forcing the JVM into interpreted mode execution lets the app start (the default is mixed mode execution).
So it looks like a problem with Java SE 1.6 JIT compiler code generation. That feature was introduced during that time and the implementation considered kinda unstable in early versions.
For further testing I downloaded the most recent available JRE's and gradually "downgraded":
'Java SE Runtime Environment 8u20' -> http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-21331...
-> app works out of the box in 64-bit WINEPREFIX
'Java SE Runtime Environment 7u67' -> http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-18802...
-> app works out of the box in 64-bit WINEPREFIX
'Java Runtime Environment 1.6.0.43 (64-bit)' -> http://filehippo.com/download_jre_64/14479/
-> app works out of the box in 64-bit WINEPREFIX
So what does the app bootstrapper actually download?
-> http://sdlc-esd.sun.com/ESD6/JSCDL/jdk/6u24-b07/jre-6u24-windows-x64.exe (2011-02-15)
I don't think we should bother further here. It's likely the early mixed mode implementation at fault here that works by chance (no tests on 64-bit Windows?).
Use one of the Java versions/installers I posted here as prerequisite before installing the app in 64-bit WINEPREFIX.
$ sha1sum Raptor98u3f5_w64.exe 4caf7cac75c4f342d7ab42eced5221ac3cc5dc5e Raptor98u3f5_w64.exe
$ du -sh Raptor98u3f5_w64.exe 44M Raptor98u3f5_w64.exe
$ wine --version wine-1.7.28-90-ga71f25d
Regards