Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash at TEST Ed,Gd #1445

Open
Howard0o0 opened this issue Apr 14, 2024 · 12 comments
Open

Crash at TEST Ed,Gd #1445

Howard0o0 opened this issue Apr 14, 2024 · 12 comments

Comments

@Howard0o0
Copy link
Contributor

Howard0o0 commented Apr 14, 2024

Running a Java program with an x64 JVM, Box64 would crash at TEST Ed, Gd.

Box64 LOG

$ ./run.sh
+ BOX64_NOSIGSEGV=1
+ BOX64_LOG=1
+ BOX64_DLSYM_ERROR=1
+ BOX64_TRACE_XMM=1
+ BOX64_JITGDB=1
+ BOX64_TRACE=1
+ box64 java -Dprism.order=sw --module-path /home/parallels/app/jdk-11.0.2-x64/javafx-sdk-11.0.2/lib --add-modules javafx.controls -Djava.library.path=. HelloJNI
Debug level is 1
Launch gdb on segfault
 PageSize:4096 Running on unknown aarch64 cpu with 4 Cores
Will use time-based emulation for rdtsc, even if hardware counter are available
Will use Software counter measured at 1.0 GHz
Params database has 61 entries
Box64 with trace v0.2.7 d53ff127 built on Apr 14 2024 22:21:56
BOX64: Detected 48bits at least of address space
BOX64: Disabling handling of SigSEGV
Initializing Zydis lib
Failed to open libZydis: libZydis.so: cannot open shared object file: No such file or directory
Zydis init failed. No x86 trace activated
Counted 77 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:/usr/x86_64-linux-gnu/lib/
BOX64 BIN PATH: ./:bin/:/opt/homebrew/bin/:/home/parallels/app/android-sdk-macosx/tools/:/home/parallels/app/android-sdk-macosx/platform_tools/:/usr/local/Cellar/ctags/5.8_2/bin/:/home/parallels/app/flutter/bin/:/home/parallels/app/leetcode-cli/:/home/parallels/script/:/home/parallels/go/bin/:/home/parallels/app/jdk-11.0.2-x64/bin/:/home/parallels/archiconda3/bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/:/usr/games/:/usr/local/games/:/snap/bin/:/snap/bin/:./:/home/parallels/app/jdk-11.0.2-x64/javafx-sdk-11.0.2/lib/:/home/parallels/app/jadx/bin/
Looking for java
argv[1]="-Dprism.order=sw"
argv[2]="--module-path"
argv[3]="/home/parallels/app/jdk-11.0.2-x64/javafx-sdk-11.0.2/lib"
argv[4]="--add-modules"
argv[5]="javafx.controls"
argv[6]="-Djava.library.path=."
argv[7]="HelloJNI"
Rename process to "java"
Using native(wrapped) libz.so.1
Using native(wrapped) libpthread.so.0
Using emulated /home/parallels/app/jdk-11.0.2-x64/bin/../lib/jli/libjli.so
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libutil.so.1
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Setting trace
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/server/libjvm.so"/0xffff8f65a870, 102)
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/server/libjvm.so
Using native(wrapped) libm.so.6
dlopen: New handle 0x4 (/home/parallels/app/jdk-11.0.2-x64/lib/server/libjvm.so), dlopened=1
3326574|Call to dlsym(0x4, "JNI_CreateJavaVM")0x7fff0190e090
3326574|Call to dlsym(0x4, "JNI_GetDefaultJavaVMInitArgs")0x7fff01902fe0
3326574|Call to dlsym(0x4, "JNI_GetCreatedJavaVMs")0x7fff01903030
Call to dlopen("librt.so.1"/0x7fff01f36553, 1)
dlopen: New handle 0x5 (librt.so.1), dlopened=0
3326583|Call to dlsym(0x5, "clock_getres")0x80000
3326583|Call to dlsym(0x5, "clock_gettime")0x80020
3326583|Call to dlsym((nil), "pthread_setname_np")0x304a0
Call to dlopen("librt.so.1"/0x7fff01f36553, 1)
dlopen: Recycling librt.so.1/0x5 count=2 (dlopened=0, elf_index=-1)
3326583|Call to dlsym(0x5, "clock_getres")0x80000
3326583|Call to dlsym(0x5, "clock_gettime")0x80020
3326583|Call to dlsym((nil), "pthread_condattr_setclock")0x304c0
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libverify.so"/0xffff8e94ec20, 1)
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/libverify.so
dlopen: New handle 0x6 (/home/parallels/app/jdk-11.0.2-x64/lib/libverify.so), dlopened=1
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjava.so"/0xffff8e94ec20, 1)
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/libjava.so
dlopen: New handle 0x7 (/home/parallels/app/jdk-11.0.2-x64/lib/libjava.so), dlopened=1
3326583|Call to dlsym(0x7, "JDK_GetVersionInfo0")0x7fff0401ac90
3326583|Call to dlsym((nil), "pthread_getcpuclockid")0x304e0
3326583|Call to dlsym((nil), "JVM_begin_signal_setting")(nil)
3326583|Call to dlsym((nil), "sched_getcpu")0x51b80
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libzip.so"/0xffff8e94ebf0, 1)
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/libzip.so
dlopen: New handle 0x8 (/home/parallels/app/jdk-11.0.2-x64/lib/libzip.so), dlopened=1
3326583|Call to dlsym(0x8, "ZIP_Open")0x7fff05004a10
3326583|Call to dlsym(0x8, "ZIP_Close")0x7fff05004a60
3326583|Call to dlsym(0x8, "ZIP_FindEntry")0x7fff05005210
3326583|Call to dlsym(0x8, "ZIP_ReadEntry")0x7fff05005270
3326583|Call to dlsym(0x8, "ZIP_GetNextEntry")0x7fff05004da0
3326583|Call to dlsym(0x8, "ZIP_InflateFully")0x7fff05005440
3326583|Call to dlsym(0x8, "ZIP_CRC32")0x7fff05002270
3326583|Call to dlsym(0x7, "Canonicalize")0x7fff0401bda0
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjimage.so"/0xffff8e94ebf0, 1)
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/libjimage.so
dlopen: New handle 0x9 (/home/parallels/app/jdk-11.0.2-x64/lib/libjimage.so), dlopened=1
3326583|Call to dlsym(0x9, "JIMAGE_Open")0x7fff06005150
3326583|Call to dlsym(0x9, "JIMAGE_Close")0x7fff06005170
3326583|Call to dlsym(0x9, "JIMAGE_PackageToModule")0x7fff06005180
3326583|Call to dlsym(0x9, "JIMAGE_FindResource")0x7fff060051b0
3326583|Call to dlsym(0x9, "JIMAGE_GetResource")0x7fff060052c0
3326583|Call to dlsym(0x9, "JIMAGE_ResourceIterator")0x7fff060052e0
3326583|Call to dlsym(0x9, "JIMAGE_ResourcePath")0x7fff06005400
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjava.base-coop.so"/0xffff8e94ea60, 1)
Warning: Cannot dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjava.base-coop.so"/0xffff8e94ea60, 1)
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjava.logging-coop.so"/0xffff8e94ea60, 1)
Warning: Cannot dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjava.logging-coop.so"/0xffff8e94ea60, 1)
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.compiler-coop.so"/0xffff8e94ea60, 1)
Warning: Cannot dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.compiler-coop.so"/0xffff8e94ea60, 1)
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.scripting.nashorn-coop.so"/0xffff8e94ea60, 1)
Warning: Cannot dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.scripting.nashorn-coop.so"/0xffff8e94ea60, 1)
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.internal.vm.ci-coop.so"/0xffff8e94ea60, 1)
Warning: Cannot dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.internal.vm.ci-coop.so"/0xffff8e94ea60, 1)
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.internal.vm.compiler-coop.so"/0xffff8e94ea60, 1)
Warning: Cannot dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libjdk.internal.vm.compiler-coop.so"/0xffff8e94ea60, 1)
3326583|Call to dlsym(0x7, "Java_java_lang_Object_registerNatives")0x7fff04010450
3326583|Call to dlsym(0x7, "Java_java_lang_System_registerNatives")0x7fff04014d20
3326583|Call to dlsym(0x7, "Java_java_lang_Class_registerNatives")0x7fff0400e300
3326583|Call to dlsym(0x7, "Java_java_lang_Thread_registerNatives")0x7fff04016c60
3326583|Call to dlsym(0x7, "Java_java_security_AccessController_getStackAccessControlContext")0x7fff0400e020
3326583|Call to dlsym(0x7, "Java_java_security_AccessController_getInheritedAccessControlContext")0x7fff0400e030
3326583|Call to dlsym(0x7, "Java_java_security_AccessController_doPrivileged")(nil)
Call to dlsym(libjava.so, "Java_java_security_AccessController_doPrivileged") Symbol not found
3326583|Call to dlsym(0x7, "Java_java_lang_ClassLoader_registerNatives")0x7fff0400e5b0
3326583|Call to dlsym(0x7, "Java_java_lang_Runtime_availableProcessors")0x7fff04014700
3326583|Call to dlsym(0x7, "Java_java_lang_Class_getPrimitiveClass")0x7fff0400e530
3326583|Call to dlsym(0x7, "Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2")0x7fff0400dfd0
3326583|Call to dlsym(0x7, "Java_java_lang_Class_forName0")0x7fff0400e330
3326597|Call to dlsym(0x7, "Java_java_lang_ref_Reference_waitForReferencePendingList")0x7fff04014680
3326598|Call to dlsym(0x7, "Java_jdk_internal_misc_VM_initialize")0x7fff040184f0
3326583|Call to dlsym(0x7, "Java_java_lang_System_initProperties")0x7fff040151c0
3326583|Call to dlsym(0x7, "NewStringPlatform")0x7fff0401d940
3326583|Call to dlsym(0x7, "Java_java_lang_Object_getClass")0x7fff04010470
3326583|Call to dlsym(0x7, "Java_java_lang_reflect_Array_newArray")0x7fff0400e2a0
3326583|Call to dlsym(0x7, "Java_java_lang_Float_floatToRawIntBits")0x7fff0400fcd0
3326583|Call to dlsym(0x7, "Java_java_lang_Double_doubleToRawLongBits")0x7fff0400f810
3326583|Call to dlsym(0x7, "Java_java_lang_Double_longBitsToDouble")0x7fff0400f800
3326583|Call to dlsym(0x7, "Java_java_lang_Runtime_maxMemory")0x7fff040146e0
3326583|Call to dlsym(0x7, "Java_java_io_FileInputStream_initIDs")0x7fff0400f990
3326583|Call to dlsym(0x7, "Java_java_io_FileDescriptor_initIDs")0x7fff0400f850
3326583|Call to dlsym(0x7, "Java_java_io_FileDescriptor_getHandle")0x7fff0400f900
3326583|Call to dlsym(0x7, "Java_java_io_FileDescriptor_getAppend")0x7fff0400f910
3326583|Call to dlsym(0x7, "Java_java_io_FileOutputStream_initIDs")0x7fff0400fc20
3326583|Call to dlsym(0x7, "Java_java_lang_System_setIn0")0x7fff04016a20
3326583|Call to dlsym(0x7, "Java_java_lang_System_setOut0")0x7fff04016a90
3326583|Call to dlsym(0x7, "Java_java_lang_System_setErr0")0x7fff04016b00
3326583|Call to dlsym(0x7, "Java_jdk_internal_misc_Signal_findSignal0")0x7fff04014810
3326583|Call to dlsym(0x7, "Java_jdk_internal_misc_Signal_handle0")0x7fff04014880
3326583|Call to dlsym(0x7, "Java_java_io_UnixFileSystem_initIDs")0x7fff040175b0
3326583|Call to dlsym(0x7, "Java_jdk_internal_reflect_Reflection_getCallerClass")(nil)
Call to dlsym(libjava.so, "Java_jdk_internal_reflect_Reflection_getCallerClass") Symbol not found
3326583|Call to dlsym(0x7, "Java_jdk_internal_reflect_Reflection_getCallerClass__")0x7fff04014690
3326583|Call to dlsym(0x7, "Java_java_lang_System_mapLibraryName")0x7fff04016b70
3326583|Call to dlsym(0x7, "Java_java_lang_ClassLoader_findBuiltinLib")0x7fff0400f3b0
Call to dlopen(NULL, 1)
dlopen: New handle 0xa ((null)), dlopened=0
3326583|Call to dlsym(0xa, "JNI_OnLoad_nio")(nil)
3326583|Call to dlsym(0x7, "Java_java_io_UnixFileSystem_getBooleanAttributes0")0x7fff040176e0
3326583|Call to dlsym(0x7, "Java_java_io_UnixFileSystem_canonicalize0")0x7fff04017600
3326583|Call to dlsym(0x7, "Java_java_lang_ClassLoader_00024NativeLibrary_load0")0x7fff0400ed20
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libnio.so"/0xffff8818d9c0, 1)
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/libnio.so
Using emulated /home/parallels/app/jdk-11.0.2-x64/lib/libnet.so
dlopen: New handle 0xb (/home/parallels/app/jdk-11.0.2-x64/lib/libnio.so), dlopened=1
3326583|Call to dlsym(0xb, "JNI_OnLoad")0x7fff0700ce80
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_init")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_init") Symbol not found
3326583|Call to dlsym(0x7, "Java_java_lang_ClassLoader_00024NativeLibrary_findEntry")0x7fff0400f290
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_init")0x7fff0700a9d0
3326583|Call to dlsym((nil), "openat64")0x521a0
3326583|Call to dlsym((nil), "fstatat64")0x521c0
3326583|Call to dlsym((nil), "unlinkat")0x521e0
3326583|Call to dlsym((nil), "renameat")0x52200
3326583|Call to dlsym((nil), "futimesat")0x52220
3326583|Call to dlsym((nil), "fdopendir")0x52240
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_getcwd")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_getcwd") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_getcwd")0x7fff0700af10
3326583|Call to dlsym(0x7, "Java_java_lang_String_intern")0x7fff040149f0
3326583|Call to dlsym(0x7, "Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8")0x7fff0400e2c0
3326583|Call to dlsym(0x7, "Java_jdk_internal_loader_BootLoader_setBootLoaderUnnamedModule0")0x7fff0400e2f0
3326583|Call to dlsym(0x7, "Java_java_lang_Class_isAssignableFrom")0x7fff0400e500
3326583|Call to dlsym(0x7, "Java_jdk_internal_reflect_Reflection_getClassAccessFlags")0x7fff040146a0
3326583|Call to dlsym(0x7, "Java_jdk_internal_reflect_NativeConstructorAccessorImpl_newInstance0")0x7fff04010440
3326583|Call to dlsym(0x7, "Java_java_lang_Module_defineModule0")0x7fff0400fce0
3326583|Call to dlsym(0x7, "Java_jdk_internal_reflect_NativeMethodAccessorImpl_invoke0")0x7fff04010420
3326583|Call to dlsym(0x7, "Java_java_lang_System_identityHashCode")0x7fff04014d40
3326583|Call to dlsym(0x7, "Java_java_lang_Class_isInstance")0x7fff0400e4d0
3326583|Call to dlsym(0x7, "Java_java_lang_ClassLoader_findBootstrapClass")0x7fff0400eba0
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_stat0")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_stat0") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_stat0")0x7fff0700b510
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_exists0")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_exists0") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_exists0")0x7fff0700c5e0
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_open0")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_open0") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_open0")0x7fff0700b260
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_dup")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_dup") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_dup")0x7fff0700b0f0
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_fdopendir")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_fdopendir") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_fdopendir")0x7fff0700bd80
3326583|Call to dlsym(0x7, "Java_sun_nio_fs_UnixNativeDispatcher_readdir")(nil)
Call to dlsym(libjava.so, "Java_sun_nio_fs_UnixNativeDispatcher_readdir") Symbol not found
3326583|Call to dlsym(0xb, "Java_sun_nio_fs_UnixNativeDispatcher_readdir")0x7fff0700be60
3326583|Call to dlsym(0x7, "Java_java_io_RandomAccessFile_initIDs")0x7fff040141c0
3326583|Call to dlsym(0x7, "Java_java_io_RandomAccessFile_open0")0x7fff040141f0
3326583|Call to dlsym(0x7, "Java_java_io_RandomAccessFile_length")0x7fff04014390
3326583|Call to dlsym(0x7, "Java_java_io_RandomAccessFile_seek0")0x7fff04014450
3326583|Call to dlsym(0x7, "Java_java_io_RandomAccessFile_readBytes")0x7fff04014260
3326583|Call to dlsym(0xa, "JNI_OnLoad_zip")(nil)
Call to dlopen("/home/parallels/app/jdk-11.0.2-x64/lib/libzip.so"/0xffff882447c0, 1)
dlopen: Recycling /home/parallels/app/jdk-11.0.2-x64/lib/libzip.so/0x8 count=2 (dlopened=1, elf_index=5)
3326583|Call to dlsym(0x8, "JNI_OnLoad")0x7fff04018ad0
3326583|Call to dlsym(0x7, "Java_java_util_zip_Inflater_initIDs")(nil)
Call to dlsym(libjava.so, "Java_java_util_zip_Inflater_initIDs") Symbol not found
3326583|Call to dlsym(0xb, "Java_java_util_zip_Inflater_initIDs")(nil)
Call to dlsym(libnio.so, "Java_java_util_zip_Inflater_initIDs") Symbol not found
3326583|Call to dlsym(0x8, "Java_java_util_zip_Inflater_initIDs")0x7fff05002b20
3326583|Call to dlsym(0x7, "Java_java_util_zip_Inflater_init")(nil)
Call to dlsym(libjava.so, "Java_java_util_zip_Inflater_init") Symbol not found
3326583|Call to dlsym(0xb, "Java_java_util_zip_Inflater_init")(nil)
Call to dlsym(libnio.so, "Java_java_util_zip_Inflater_init") Symbol not found
3326583|Call to dlsym(0x8, "Java_java_util_zip_Inflater_init")0x7fff05002b80
3326583|Call to dlsym(0x7, "Java_java_util_zip_Inflater_inflateBytesBytes")(nil)
Call to dlsym(libjava.so, "Java_java_util_zip_Inflater_inflateBytesBytes") Symbol not found
3326583|Call to dlsym(0xb, "Java_java_util_zip_Inflater_inflateBytesBytes")(nil)
Call to dlsym(libnio.so, "Java_java_util_zip_Inflater_inflateBytesBytes") Symbol not found
3326583|Call to dlsym(0x8, "Java_java_util_zip_Inflater_inflateBytesBytes")0x7fff05002d20
3326583|Call to dlsym(0x7, "Java_java_util_zip_Inflater_reset")(nil)
Call to dlsym(libjava.so, "Java_java_util_zip_Inflater_reset") Symbol not found
3326583|Call to dlsym(0xb, "Java_java_util_zip_Inflater_reset")(nil)
Call to dlsym(libnio.so, "Java_java_util_zip_Inflater_reset") Symbol not found
3326583|Call to dlsym(0x8, "Java_java_util_zip_Inflater_reset")0x7fff05003010
3326583|Call to dlsym(0x7, "Java_java_lang_StringUTF16_isBigEndian")0x7fff04014a00
Waiting for gdb (pid 3326574)...
GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 3326574
[New LWP 3326583]
[New LWP 3326588]
[New LWP 3326589]
[New LWP 3326590]
[New LWP 3326591]
[New LWP 3326592]
[New LWP 3326596]
[New LWP 3326597]
[New LWP 3326598]
[New LWP 3326599]
[New LWP 3326600]
[New LWP 3326601]
[New LWP 3326602]
[New LWP 3326606]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
__futex_abstimed_wait_common64 (private=128, cancel=true, abstime=0x0, op=265, expected=3326583, futex_word=0xffff8e74f090) at ./nptl/futex-internal.c:57
57	./nptl/futex-internal.c: No such file or directory

GDB

#0  0x0000ffff8f7e1994 in __GI___clock_nanosleep (clock_id=<optimized out>, clock_id@entry=0, flags=flags@entry=0, 
    req=req@entry=0xffff8e74cbe8, rem=rem@entry=0x0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
78	../sysdeps/unix/sysv/linux/clock_nanosleep.c: No such file or directory.
(gdb) bt
#0  0x0000ffff8f7e1994 in __GI___clock_nanosleep (clock_id=<optimized out>, clock_id@entry=0, flags=flags@entry=0, 
    req=req@entry=0xffff8e74cbe8, rem=rem@entry=0x0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
#1  0x0000ffff8f7e6b6c in __GI___nanosleep (req=req@entry=0xffff8e74cbe8, rem=rem@entry=0x0)
    at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2  0x0000ffff8f80f4b4 in usleep (useconds=<optimized out>) at ../sysdeps/posix/usleep.c:31
#3  0x0000000034a32de8 in my_box64signalhandler (sig=11, info=0xffff8e74d110, ucntx=0xffff8e74d190)
    at /home/parallels/work/box64/src/libtools/signals.c:1620
#4  <signal handler called>
#5  0x00000000352c2d24 in Run (emu=0x684ed6d0, step=0) at /home/parallels/work/box64/src/emu/x64run.c:654
#6  0x00000000349ed6f4 in DynaRun (emu=0x684ed6d0) at /home/parallels/work/box64/src/dynarec/dynarec.c:175
#7  0x0000000034a36cac in pthread_routine (p=0x684ed6a0) at /home/parallels/work/box64/src/libtools/threads.c:242
#8  0x0000ffff8f7ad5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#9  0x0000ffff8f815edc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79

(gdb) f 5
#5  0x00000000352c2d24 in Run (emu=0x684ed6d0, step=0) at /home/parallels/work/box64/src/emu/x64run.c:654
654	                test32(emu, ED->dword[0], GD->dword[0]);

(gdb) p oped
$1 = (reg64_t *) 0x60000008
(gdb) p emu
$2 = (x64emu_t *) 0x684ed6d0
(gdb) p opgd
$3 = (reg64_t *) 0x684ed6d0

It seems that oped points to an invalid address, 0x60000008, because 0x60000008 appears to be in a reserved memory space.

$ cat /proc/3326574/maps | grep "60000000"
60000000-60001000 ---p 00000000 00:00 0

I searched the memory address 0x60000000 in the box64 code and found #define HIGH (void*)0x60000000. However, I still have no idea why ED points to a reserved memory address.

Environment

  • box64 version: git commit d53ff127 on branch main.
  • x64 OpenJDK 11
  • x64 JavaFX 11

Java Code:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.Collections;
import java.util.Iterator;
import java.util.Set;

public class HelloJNI extends Application {

    // Test Driver
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        String javaFxVersion = System.getProperty("javafx.version");
        System.out.println("JavaFX Version: " + javaFxVersion);

        Label lbl = new Label("Hello");
        StackPane root = new StackPane();
        root.getChildren().add(lbl);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();

        System.out.println("Hello from Java!");
    }
}

Comamnd compiling the java code:

javac --module-path ${PATH_TO_JAVAFX} --add-modules javafx.controls HelloJNI.java
@ptitSeb
Copy link
Owner

ptitSeb commented Apr 14, 2024

0x60000000 is not a reserved area. It's just an arbitrary value used as a starting point for mmap64.

Can you put the jvm/jre you used and the .java binary also, for local debugging? I have run some java games succesfully already, so it should work.

@Howard0o0
Copy link
Contributor Author

Howard0o0 commented Apr 14, 2024

@Howard0o0
Copy link
Contributor Author

Howard0o0 commented Apr 15, 2024

FYI, here is the way to run the java program.

  1. Download and decompress the jdk and javafx.
cd /tmp
wget https://aka.ms/download-jdk/microsoft-jdk-11.0.22-linux-x64.tar.gz
wget https://download2.gluonhq.com/openjfx/11.0.2/openjfx-11.0.2_linux-x64_bin-sdk.zip

tar -xvf microsoft-jdk-11.0.22-linux-x64.tar.gz
unzip openjfx-11.0.2_linux-x64_bin-sdk.zip
mv javafx-sdk-11.0.2 jdk-11.0.22+7/
  1. Download the java src/binary files.
cd /tmp
wget https://github.com/ptitSeb/box64/files/14971196/java-program.zip
unzip java-program.zip
# Now we will see HelloJNI.class and HelloJNI.java
  1. Create a script named run.sh that is located in the same directory as HelloJNI.class.
# run.sh

JAVA_HOME=/tmp/jdk-11.0.22+7
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH
export PATH_TO_JAVAFX="${JAVA_HOME}/javafx-sdk-11.0.2/lib"

BOX64_LOG=1 BOX64_DLSYM_ERROR=1 BOX64_TRACE_XMM=1 BOX64_JITGDB=1 BOX64_TRACE=1 box64 java -Dprism.order=sw --module-path ${PATH_TO_JAVAFX} --add-modules javafx.controls -Djava.library.path=. HelloJNI

It's just a simple Java demo that creates a window using the JavaFX library. If we use an ARM64 native JVM to run this Java program, the expected result is a window popping up on the screen like this:
image

This issue is easy to reproduce, although there is a small chance that it might not occur, with approximately a 5% probability of running normally.

@Howard0o0
Copy link
Contributor Author

Continue tracking this issue. Let me know if more information is needed.

Thanks for the effort!

@Howard0o0 Howard0o0 changed the title Crash during TEST Ed,Gd Crash at TEST Ed,Gd Apr 15, 2024
@Howard0o0
Copy link
Contributor Author

don't mean to rush, just want to know are there any updates?

@ptitSeb
Copy link
Owner

ptitSeb commented Apr 16, 2024

No, I haven't started looking at this yet, sorry.

@Howard0o0
Copy link
Contributor Author

Howard0o0 commented Apr 21, 2024

I suspect that Java allocates a memory area using mmap64, and box64 returns the area at 0x60000000. Subsequently, Java changes the privileges of this area to ---p by invoking mprotect.

I reviewed the logs for my_mmap64 and my_mprotect to monitor the area at 0x60000000.

EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, ssize_t offset)
{
(void)emu;
if(prot&PROT_WRITE)
prot|=PROT_READ; // PROT_READ is implicit with PROT_WRITE on i386
if(emu && (box64_log>=LOG_DEBUG || box64_dynarec_log>=LOG_DEBUG)) {printf_log(LOG_NONE, "mmap64(%p, 0x%lx, 0x%x, 0x%x, %d, %ld) => ", addr, length, prot, flags, fd, offset);}
int new_flags = flags;

EXPORT int my_mprotect(x64emu_t* emu, void *addr, unsigned long len, int prot)
{
(void)emu;
if(emu && (box64_log>=LOG_DEBUG || box64_dynarec_log>=LOG_DEBUG)) {printf_log(LOG_NONE, "mprotect(%p, %lu, 0x%x)\n", addr, len, prot);}
if(prot&PROT_WRITE)

Here is the related log:

mmap64((nil), 0x1000, 0x3, 0x22, -1, 0) => mprotect(0x60000000, 4096, 0x6)
mprotect(0x60000000, 4096, 0x6)
mprotect(0x60000000, 4096, 0x0)

Thus, the assumption appears to be correct: Java allocates an area and marks it as reserved.

However, why does ED point to this reserved area?

@ptitSeb
Copy link
Owner

ptitSeb commented Apr 21, 2024

This is probably a stack. And the 4096 byte (a page) that are protected is the "stack guard" to detect stack overflow. The error is probably comming from some place else, like a stack search for something. I still haven't started debugging this one.

@Howard0o0
Copy link
Contributor Author

Thanks for the response! I will keep waiting for support from the community.

@Howard0o0
Copy link
Contributor Author

Is the troubleshooting underway? I noticed that the latest commit in master branch seems to be related to this issue. :D

@ptitSeb
Copy link
Owner

ptitSeb commented Apr 25, 2024

it wasn't for this issue, but there are a few similar ones. I'll start analysing this issue soon-ish now.

@Howard0o0
Copy link
Contributor Author

okay

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants