我有一个使用 Yeppp 的应用程序!SIMD 库。该应用程序是用 C# 编写的。它在 Windows x86-32 和 x86-64 上完美运行。但是,当我在带有 Mono 的 Raspberry Pi 上运行应用程序时,出现以下异常(不确定是 ARM 问题、Mono 问题还是其他问题)。我试过以root身份运行只是为了检查,同样的例外。我注意到堆栈跟踪的“UnixLibraryLoader”部分,因此我确保 Yeppp DLL (Yeppp.CLR.Bundle.dll) 与可执行文件位于同一目录中。这是我的代码问题,我编译它的方式,还是库的问题?
Stacktrace:
at <unknown> <0xffffffff>
at (wrapper managed-to-native) Yeppp.UnixLibraryLoader.dlopen (string,int) <0xffffffff>
at Yeppp.UnixLibraryLoader.Yeppp.INativeLibraryLoader.LoadLibrary (string) <0x0002f>
at Yeppp.NativeLibrary..ctor (string,Yeppp.INativeLibraryLoader) <0x0006b>
at Yeppp.Loader.LoadNativeLibrary () <0x000db>
at Yeppp.Library.Init () <0x00027>
at <Module>..cctor () <0x0000b>
at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
at <unknown> <0xffffffff>
at SimdSpeedTest.Program.DisplayCpuFeatures () <0x00033>
at SimdSpeedTest.Program.Main (string[]) <0x000c7>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>
Native stacktrace:
Debug info from gdb:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0xb5b7b430 (LWP 2272)]
0xb6eabaac in waitpid () from /lib/arm-linux-gnueabihf/libpthread.so.0
Id Target Id Frame
2 Thread 0xb5b7b430 (LWP 2272) "mono" 0xb6ea9770 in sem_wait@@GLIBC_2.4 () from /lib/arm-linux-gnueabihf/libpthread.so.0
* 1 Thread 0xb6f80000 (LWP 2271) "mono" 0xb6eabaac in waitpid () from /lib/arm-linux-gnueabihf/libpthread.so.0
Thread 2 (Thread 0xb5b7b430 (LWP 2272)):
#0 0xb6ea9770 in sem_wait@@GLIBC_2.4 () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0x001fff10 in mono_sem_wait (sem=0x2f523c, alertable=1) at mono-semaphore.c:119
#2 0x0017db28 in finalizer_thread (unused=<optimized out>) at gc.c:1073
#3 0x001625b4 in start_wrapper_internal (data=0xb0d8c8) at threads.c:643
#4 start_wrapper (data=0xb0d8c8) at threads.c:688
#5 0x001f5c30 in thread_start_routine (args=0xac86c0) at wthreads.c:294
#6 0x00204268 in inner_start_thread (arg=0xac86b4) at mono-threads-posix.c:49
#7 0xb6ea2c00 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
#8 0xb6e0f728 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#9 0xb6e0f728 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 1 (Thread 0xb6f80000 (LWP 2271)):
#0 0xb6eabaac in waitpid () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0x000b2148 in mono_handle_native_sigsegv (signal=<optimized out>, ctx=<optimized out>) at mini-exceptions.c:2299
#2 0x00027af8 in mono_sigsegv_signal_handler (_dummy=11, info=0xbe9280e0, context=0xbe928160) at mini.c:6777
#3 <signal handler called>
#4 0xb6f6d754 in ?? () from /lib/ld-linux-armhf.so.3
#5 0xbe9284a0 in ?? ()
Cannot access memory at address 0x3000
#6 0xbe9284a0 in ?? ()
Cannot access memory at address 0x3000
Backtrace stopped: previous frame identical to this frame (corrupt stack?)