我对Monotouch很陌生,遇到一个令我困惑的错误。我对一个用于滑动样式视图(https://github.com/edgecase/ECSlidingViewController)的objective-c库进行了绑定,并且在使用该库期间执行本机代码时已经获得了SIGSEV(具体地说,当我试图揭示滑动控制器的底视图。
堆栈跟踪:
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>
原生堆栈跟踪:
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模拟器中运行应用程序时才会发生。在设备上,一切似乎都能正常工作。
任何人都知道发生了什么事?
ETA:崩溃报告:
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
答案 0 :(得分:1)
将Objective-C块封送到ECSlidingViewController.AnchorTopView
中的托管委托似乎是一个问题。
我们目前不支持封送Objective-C块(首先不是来自托管委托),你最终会遇到像这样的崩溃。
如果你不需要覆盖ECSlidingViewController.AnchorTopView,你可以在绑定中键入块作为IntPtr,所以它会是这样的(请注意,我只是猜测你是如何进行绑定的):
interface ECSlidingViewController {
void AnchorTopView (ECSide first, ECAnimations second, IntPtr block);
}
如果您感兴趣here是有类似问题的人(此论坛帖子包含更多解释)。
答案 1 :(得分:0)
“执行本机代码时获得了SIGSEGV”可能表示在应用程序执行时找不到分配给InterfaceBuilder中UI元素的某些操作。验证与您的UIElements(UIButtons,GesturesRecognizers等)相关的所有IBAction。清除它并重新分配以更正.h文件中的IBAction。特别注意一式两份的观点。