ios - Monotouch SIGSEGV 仅在模拟器中

标签 ios xamarin.ios xamarin

我是 Monotouch 的新手,遇到了一个令我困惑的错误。我为滑动式 View (https://github.com/edgecase/ECSlidingViewController) 绑定(bind)了一个 objective-c 库,并且在使用该库期间执行 native 代码时一直在获取 SIGSEV(具体来说,当我尝试从滑动 Controller )。

堆栈跟踪:

at (wrapper managed-to-native) System.Runtime.InteropServices.GCHandle.CheckCurrentDomain (int) <IL 0x00021, 0xffffffff>
at System.Runtime.InteropServices.GCHandle.op_Explicit (intptr) [0x0001b] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Runtime.InteropServices/GCHandle.cs:124
at System.Runtime.InteropServices.GCHandle.FromIntPtr (intptr) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Runtime.InteropServices/GCHandle.cs:169
at MonoTouch.ObjCRuntime.BlockDescriptor.CopyHelper (MonoTouch.ObjCRuntime.BlockLiteral*,MonoTouch.ObjCRuntime.BlockLiteral*) [0x00000] in /Developer/MonoTouch/Source/monotouch/src/shared/ObjCRuntime/Blocks.cs:54
at (wrapper native-to-managed) MonoTouch.ObjCRuntime.BlockDescriptor.CopyHelper (MonoTouch.ObjCRuntime.BlockLiteral*,MonoTouch.ObjCRuntime.BlockLiteral*) <IL 0x0001e, 0xffffffff>
at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.void_objc_msgSendSuper_int_IntPtr_IntPtr (intptr,intptr,int,intptr,intptr) <IL 0x00028, 0xffffffff>
at Enriquez.ECSlidingViewController.ECSlidingViewController.AnchorTopView (Enriquez.ECSlidingViewController.ECSide,Enriquez.ECSlidingViewController.ECAnimations,Enriquez.ECSlidingViewController.ECOnComplete) <IL 0x00097, 0x002ef>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___int_object_object (object,intptr,intptr,intptr) <IL 0x00066, 0xffffffff>
at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.void_objc_msgSendSuper_int (intptr,intptr,int) <IL 0x00025, 0xffffffff>
at Enriquez.ECSlidingViewController.ECSlidingViewController.AnchorTopView (Enriquez.ECSlidingViewController.ECSide) <IL 0x0002d, 0x0009f>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___int (object,intptr,intptr,intptr) <IL 0x00054, 0xffffffff>
at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff>
at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
at FanApp.Application.Main (string[]) [0x00000] in /Users/markrubeo/Projects/FanApp/MonoTouch/Test Stuff/FanApp/Fan App/FanApp/Main.cs:17
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

native 堆栈跟踪:

0   FanApp                              0x00098adc mono_handle_native_sigsegv + 284
1   FanApp                              0x0000c3b8 mono_sigsegv_signal_handler + 248
2   libsystem_c.dylib                   0x99be28cb _sigtramp + 43
3   ???                                 0xffffffff 0x0 + 4294967295
4   FanApp                              0x00112aba GCHandle_CheckCurrentDomain + 26
5   ???                                 0x0d86e766 0x0 + 226944870
6   ???                                 0x0d86e668 0x0 + 226944616
7   ???                                 0x0d86e590 0x0 + 226944400
8   ???                                 0x0d86e4f8 0x0 + 226944248
9   ???                                 0x0d86db7c 0x0 + 226941820
10  libsystem_sim_blocks.dylib          0x0243acb6 _Block_call_copy_helper + 29
11  libsystem_sim_blocks.dylib          0x0243b73f _Block_copy_internal + 228
12  FanApp                              0x00004a91 -[ECSlidingViewController anchorTopViewTo:animations:onComplete:] + 545
13  ???                                 0x0d86e458 0x0 + 226944088
14  ???                                 0x0d86d2f0 0x0 + 226939632
15  ???                                 0x0d86d505 0x0 + 226940165
16  FanApp                              0x00010782 mono_jit_runtime_invoke + 722
17  FanApp                              0x00173c5e mono_runtime_invoke + 126
18  FanApp                              0x002169a6 monotouch_trampoline + 3686
19  FanApp                              0x00004864 -[ECSlidingViewController anchorTopViewTo:] + 84
20  ???                                 0x08618c4c 0x0 + 140610636
21  ???                                 0x06bfbd28 0x0 + 113229096
22  ???                                 0x08618bb0 0x0 + 140610480
23  FanApp                              0x00010782 mono_jit_runtime_invoke + 722
24  FanApp                              0x00173c5e mono_runtime_invoke + 126
25  FanApp                              0x002169a6 monotouch_trampoline + 3686
26  FanApp                              0x00004700 -[ECSlidingViewController updateTopViewHorizontalCenterWithRecognizer:] + 1680
27  UIKit                               0x00bede29 _UIGestureRecognizerSendActions + 143
28  UIKit                               0x00bed133 -[UIGestureRecognizer _updateGestureWithEvent:] + 379
29  UIKit                               0x00bee3bf -[UIGestureRecognizer _delayedUpdateGesture] + 46
30  UIKit                               0x00bf0a21 ___UIGestureRecognizerUpdate_block_invoke_0541 + 57
31  UIKit                               0x00bf097c _UIGestureRecognizerApplyBlocksToArray + 277
32  UIKit                               0x00be93d7 _UIGestureRecognizerUpdate + 1026
33  UIKit                               0x0094e1a2 -[UIWindow _sendGesturesForEvent:] + 1121
34  UIKit                               0x0094e532 -[UIWindow sendEvent:] + 93
35  UIKit                               0x00934dc4 -[UIApplication sendEvent:] + 464
36  UIKit                               0x00928634 _UIApplicationHandleEvent + 8196
37  GraphicsServices                    0x025f5ef5 PurpleEventCallback + 1274
38  CoreFoundation                      0x01c0f195 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
39  CoreFoundation                      0x01b73ff2 __CFRunLoopDoSource1 + 146
40  CoreFoundation                      0x01b728da __CFRunLoopRun + 2218
41  CoreFoundation                      0x01b71d84 CFRunLoopRunSpecific + 212
42  CoreFoundation                      0x01b71c9b CFRunLoopRunInMode + 123
43  GraphicsServices                    0x025f47d8 GSEventRunModal + 190
44  GraphicsServices                    0x025f488a GSEventRun + 103
45  UIKit                               0x00926626 UIApplicationMain + 1163
46  ???                                 0x0861397d 0x0 + 140589437
47  ???                                 0x085974f8 0x0 + 140080376
48  ???                                 0x08597100 0x0 + 140079360
49  ???                                 0x08597256 0x0 + 140079702
50  FanApp                              0x00010782 mono_jit_runtime_invoke + 722
51  FanApp                              0x00173c5e mono_runtime_invoke + 126
52  FanApp                              0x00177e54 mono_runtime_exec_main + 420
53  FanApp                              0x0017d245 mono_runtime_run_main + 725
54  FanApp                              0x0006de15 mono_jit_exec + 149
55  FanApp                              0x0020bc04 main + 1988
56  FanApp                              0x00009685 start + 53
57  ???                                 0x00000004 0x0 + 4

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

奇怪的是,它只发生在我在 iOS 模拟器中运行应用程序时。在设备上,一切似乎都运行良好。

有人知道发生了什么事吗?

预计到达时间:崩溃报告:

Process:         FanApp [50509]
Path:            /Users/USER/Library/Application Support/iPhone Simulator/*/
Identifier:      FanApp
Version:         ???
Code Type:       X86 (Native)
Parent Process:  launchd [151]
User ID:         501

Date/Time:       2013-05-22 17:16:55.967 -0400
OS Version:      Mac OS X 10.8.3 (12D78)
Report Version:  10

Crashed Thread:  0

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000008

VM Regions Near 0x8:
    --> __PAGEZERO             0000000000000000-0000000000001000 [    4K] ---/--- SM=NUL  /Users/USER/Library/Application Support/iPhone Simulator/*/FanApp.app/FanApp
    __TEXT                 0000000000001000-00000000002cd000 [ 2864K] r-x/rwx SM=COW  /Users/USER/Library/Application Support/iPhone Simulator/*/FanApp.app/FanApp

Application Specific Information:
iPhone Simulator 369.2, iPhone OS 5.1 (iPhone/9B176)

abort() called

Thread 0 Crashed:
0   libsystem_kernel.dylib          0x94925a6a __pthread_kill + 10
1   libsystem_c.dylib               0x99bf7b2f pthread_kill + 101
2   libsystem_c.dylib               0x99c2e4ec abort + 168
3   FanApp                          0x00098d1a mono_handle_native_sigsegv + 858
4   FanApp                          0x0000c3b8 mono_sigsegv_signal_handler + 248
5   libsystem_c.dylib               0x99be28cb _sigtramp + 43
6   ???                             0xffffffff 0 + 4294967295
7   FanApp                          0x0000c2c0 mono_sigill_signal_handler + 64
8   FanApp                          0x00112aba GCHandle_CheckCurrentDomain + 26
9   ???                             0x0d86e766 0 + 226944870
10  ???                             0x0d86e668 0 + 226944616
11  ???                             0x0d86e590 0 + 226944400
12  ???                             0x0d86e4f8 0 + 226944248
13  ???                             0x0d86db7c 0 + 226941820
14  libsystem_sim_blocks.dylib      0x0243acb6 _Block_call_copy_helper + 29
15  libsystem_sim_blocks.dylib      0x0243b73f _Block_copy_internal + 228
16  FanApp                          0x00004a91 -[ECSlidingViewController anchorTopViewTo:animations:onComplete:] + 545
17  ???                             0x0d86e458 0 + 226944088
18  ???                             0x0d86d2f0 0 + 226939632
19  ???                             0x0d86d505 0 + 226940165
20  FanApp                          0x00010782 mono_jit_runtime_invoke + 722
21  FanApp                          0x00173c5e mono_runtime_invoke + 126
22  FanApp                          0x002169a6 monotouch_trampoline + 3686
23  FanApp                          0x00004864 -[ECSlidingViewController anchorTopViewTo:] + 84
24  ???                             0x08618c4c 0 + 140610636
25  ???                             0x06bfbd28 0 + 113229096
26  ???                             0x08618bb0 0 + 140610480
27  FanApp                          0x00010782 mono_jit_runtime_invoke + 722
28  FanApp                          0x00173c5e mono_runtime_invoke + 126
29  FanApp                          0x002169a6 monotouch_trampoline + 3686
30  FanApp                          0x00004700 -[ECSlidingViewController updateTopViewHorizontalCenterWithRecognizer:] + 1680
31  UIKit                           0x00bede29 _UIGestureRecognizerSendActions + 143
32  UIKit                           0x00bed133 -[UIGestureRecognizer _updateGestureWithEvent:] + 379
33  UIKit                           0x00bee3bf -[UIGestureRecognizer _delayedUpdateGesture] + 46
34  UIKit                           0x00bf0a21 ___UIGestureRecognizerUpdate_block_invoke_0541 + 57
35  UIKit                           0x00bf097c _UIGestureRecognizerApplyBlocksToArray + 277
36  UIKit                           0x00be93d7 _UIGestureRecognizerUpdate + 1026
37  UIKit                           0x0094e1a2 -[UIWindow _sendGesturesForEvent:] + 1121
38  UIKit                           0x0094e532 -[UIWindow sendEvent:] + 93
39  UIKit                           0x00934dc4 -[UIApplication sendEvent:] + 464
40  UIKit                           0x00928634 _UIApplicationHandleEvent + 8196
41  GraphicsServices                0x025f5ef5 PurpleEventCallback + 1274
42  CoreFoundation                  0x01c0f195 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
43  CoreFoundation                  0x01b73ff2 __CFRunLoopDoSource1 + 146
44  CoreFoundation                  0x01b728da __CFRunLoopRun + 2218
45  CoreFoundation                  0x01b71d84 CFRunLoopRunSpecific + 212
46  CoreFoundation                  0x01b71c9b CFRunLoopRunInMode + 123
47  GraphicsServices                0x025f47d8 GSEventRunModal + 190
48  GraphicsServices                0x025f488a GSEventRun + 103
49  UIKit                           0x00926626 UIApplicationMain + 1163
50  ???                             0x0861397d 0 + 140589437
51  ???                             0x085974f8 0 + 140080376
52  ???                             0x08597100 0 + 140079360
53  ???                             0x08597256 0 + 140079702
54  FanApp                          0x00010782 mono_jit_runtime_invoke + 722
55  FanApp                          0x00173c5e mono_runtime_invoke + 126
56  FanApp                          0x00177e54 mono_runtime_exec_main + 420
57  FanApp                          0x0017d245 mono_runtime_run_main + 725
58  FanApp                          0x0006de15 mono_jit_exec + 149
59  FanApp                          0x0020bc04 main + 1988
60  FanApp                          0x00009685 start + 53

Thread 1:
0   libsystem_kernel.dylib          0x949269ae kevent + 10
1   libdispatch.dylib               0x02474372 _dispatch_mgr_invoke + 918
2   libdispatch.dylib               0x02472be1 _dispatch_mgr_thread + 53

Thread 2:
0   libsystem_kernel.dylib          0x94925b3e __recvfrom + 10
1   libsystem_c.dylib               0x99c80bbf recv$UNIX2003 + 54
2   FanApp                          0x0020d021 recv_uninterrupted + 81
3   FanApp                          0x0020e88b monotouch_process_connection + 107
4   FanApp                          0x0020ddef monotouch_connect_wifi + 3279
5   FanApp                          0x0020cd07 monotouch_configure_debugging + 2311
6   FanApp                          0x0020bce5 -[CocoaThreadInitializer entryPoint:] + 133
7   Foundation                      0x005da4d6 -[NSThread main] + 76
8   Foundation                      0x005da447 __NSThread__main__ + 1258
9   libsystem_c.dylib               0x99bf65b7 _pthread_start + 344
10  libsystem_c.dylib               0x99be0d4e thread_start + 34

Thread 3:
0   libsystem_kernel.dylib          0x949237d2 mach_msg_trap + 10
1   libsystem_kernel.dylib          0x94922cb0 mach_msg + 68
2   FanApp                          0x000de03a mach_exception_thread + 90
3   FanApp                          0x0020816d GC_start_routine + 93
4   libsystem_c.dylib               0x99bf65b7 _pthread_start + 344
5   libsystem_c.dylib               0x99be0d4e thread_start + 34

Thread 4:
0   libsystem_kernel.dylib          0x9492380e semaphore_wait_trap + 10
1   FanApp                          0x001e91ea mono_sem_wait + 26
2   FanApp                          0x00112d2a finalizer_thread + 74
3   FanApp                          0x001aeca6 start_wrapper + 422
4   FanApp                          0x001e0c6a thread_start_routine + 154
5   FanApp                          0x0020816d GC_start_routine + 93
6   libsystem_c.dylib               0x99bf65b7 _pthread_start + 344
7   libsystem_c.dylib               0x99be0d4e thread_start + 34

Thread 5:
0   libsystem_kernel.dylib          0x94925b3e __recvfrom + 10
1   libsystem_c.dylib               0x99c80bbf recv$UNIX2003 + 54
2   FanApp                          0x0020d021 recv_uninterrupted + 81
3   FanApp                          0x0020d104 sdb_recv + 52
4   FanApp                          0x000af49a debugger_thread + 186
5   FanApp                          0x001e0c6a thread_start_routine + 154
6   FanApp                          0x0020816d GC_start_routine + 93
7   libsystem_c.dylib               0x99bf65b7 _pthread_start + 344
8   libsystem_c.dylib               0x99be0d4e thread_start + 34

Thread 6:
0   libsystem_kernel.dylib          0x94925c72 __semwait_signal + 10
1   libsystem_c.dylib               0x99c80a55 nanosleep$UNIX2003 + 189
2   libsystem_c.dylib               0x99c8091e usleep$UNIX2003 + 60
3   FanApp                          0x00211342 monotouch_pump_gc + 50
4   libsystem_c.dylib               0x99bf65b7 _pthread_start + 344
5   libsystem_c.dylib               0x99be0d4e thread_start + 34

Thread 7:: WebThread
0   libsystem_kernel.dylib          0x949237d2 mach_msg_trap + 10
1   libsystem_kernel.dylib          0x94922cb0 mach_msg + 68
2   CoreFoundation                  0x01c0f10a __CFRunLoopServiceMachPort + 186
3   CoreFoundation                  0x01b725d5 __CFRunLoopRun + 1445
4   CoreFoundation                  0x01b71d84 CFRunLoopRunSpecific + 212
5   CoreFoundation                  0x01b71c9b CFRunLoopRunInMode + 123
6   WebCore                         0x03933420 RunWebThread(void*) + 560
7   libsystem_c.dylib               0x99bf65b7 _pthread_start + 344
8   libsystem_c.dylib               0x99be0d4e thread_start + 34

Thread 0 crashed with X86 Thread State (32-bit):
  eax: 0x00000000  ebx: 0x07ad42e8  ecx: 0xbfffbc2c  edx: 0x94925a6a
  edi: 0xacd18a28  esi: 0x00000006  ebp: 0xbfffbc48  esp: 0xbfffbc2c
   ss: 0x00000023  efl: 0x00000206  eip: 0x94925a6a   cs: 0x0000000b
   ds: 0x00000023   es: 0x00000023   fs: 0x00000000   gs: 0x0000000f
  cr2: 0x010cd88c
Logical CPU: 0

Binary Images:
// Omitted to get under character limit

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 20396
    thread_create: 0
    thread_set_state: 66

VM Region Summary:
ReadOnly portion of Libraries: Total=131.8M resident=44.7M(34%) swapped_out_or_unallocated=87.1M(66%)
Writable regions: Total=60.1M written=3060K(5%) resident=9756K(16%) swapped_out=0K(0%) unallocated=50.6M(84%)

REGION TYPE                      VIRTUAL
===========                      =======
CG image                             16K
CoreAnimation                       328K
MALLOC                             41.7M
MALLOC guard page                    32K
Memory tag=35                      9900K
Stack                              68.8M
VM_ALLOCATE                        2456K
__DATA                             8484K
__LINKEDIT                         50.5M
__OBJC                                4K
__PAGEZERO                            4K
__TEXT                             81.3M
__UNICODE                           544K
mapped file                       237.1M
shared memory                        12K
===========                      =======
TOTAL                             500.7M

最佳答案

ECSlidingViewController.AnchorTopView 中将 Objective-C block 编码到托管委托(delegate)似乎有问题。

我们目前不支持编码 Objective-C block (首先不是源自托管委托(delegate)),您最终会像这样崩溃。

如果您不需要重写 ECSlidingViewController.AnchorTopView,您可以在绑定(bind)中将 block 键入为 IntPtr,因此它会像这样(请注意,我只是在猜测您是如何进行绑定(bind)的):

interface ECSlidingViewController {
    void AnchorTopView (ECSide first, ECAnimations second, IntPtr block);
}

如果你有兴趣here有人有类似的问题(这个论坛帖子包含更多解释)。

关于ios - Monotouch SIGSEGV 仅在模拟器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701969/

相关文章:

iOS VoiceOver 按钮不调用目标方法

ios - WatchKit 2.0 和 iPhone 共享核心数据

c# - xamarin 中等效于 Objective C 的协议(protocol)代表

调用 PerformanceSelector() 时出现 Xamarin.iOS 运行时错误导致应用程序崩溃

ios - locationForGlyphAtIndex 返回错误值

ios - SwiftUI:警报自动关闭(当它不应该时!)

Xamarin.iOS构建错误MSB4096 : "ReferenceCopyLocalPaths" does not define a value for metadata "ResolvedFrom"

xamarin - Xamarin.UWP 和 Xamarin.Mac 的通用解决方案

android - Xam.Geolocation.Plugin 不适用于我的 Android 应用程序

c# - 将 azure 存储客户端库与 xamarin 结合使用