MonoTouch SIGSEGV崩溃使用navigationcontroller和searchdisplaycontroller [英] MonoTouch SIGSEGV crash using navigationcontroller and searchdisplaycontroller

查看:353
本文介绍了MonoTouch SIGSEGV崩溃使用navigationcontroller和searchdisplaycontroller的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在MonoTouch模拟器中,我得到随机崩溃与以下诊断:

In the MonoTouch simulator I am getting random crashes with the following diagnostic:

/tmp/mono-gdb-commands.FV1b8V:1: Error in sourced command file:
unable to debug self

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.

跟踪提到UISearchDisplayController dealloc:

The trace mentions "UISearchDisplayController dealloc" :

  at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.void_objc_msgSend (intptr,intptr) <IL 0x00024, 0xffffffff>
  at MonoTouch.Foundation.NSObject/MonoTouch_Disposer.Drain (MonoTouch.Foundation.NSObject) [0x0002a] in /Users/plasma/Source/iphone/monotouch/Foundation/NSObject.cs:305
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <IL 0x00052, 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) [0x00038] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:26
  at TestCase.Application.Main (string[]) [0x00000] in /Users/user/Projects/Junk 2/StarTrack/Main.cs:13
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

   Native stacktrace:

0   TestCase                            0x000d1965 mono_handle_native_sigsegv + 343
1   TestCase                            0x0000ffb4 mono_sigsegv_signal_handler + 322
2   libSystem.B.dylib                   0x91b3745b _sigtramp + 43
3   ???                                 0xffffffff 0x0 + 4294967295
4   UIKit                               0x01f7ab5a **-[UISearchDisplayController dealloc]** + 106
5   ???                                 0x0aa9a194 0x0 + 178889108
6   ???                                 0x0fcea9c4 0x0 + 265202116
7   ???                                 0x077520d6 0x0 + 125116630
8   TestCase                            0x0000fd6f mono_jit_runtime_invoke + 1332
9   TestCase                            0x001ee239 mono_runtime_invoke + 137
10  TestCase                            0x0029e9ab monotouch_trampoline + 2527
11  Foundation                          0x0140e94e __NSThreadPerformPerform + 251
12  CoreFoundation                      0x00ea08ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
13  CoreFoundation                      0x00dfe88b __CFRunLoopDoSources0 + 571
14  CoreFoundation                      0x00dfdd86 __CFRunLoopRun + 470
15  CoreFoundation                      0x00dfd840 CFRunLoopRunSpecific + 208
16  CoreFoundation                      0x00dfd761 CFRunLoopRunInMode + 97
17  GraphicsServices                    0x0404c1c4 GSEventRunModal + 217
18  GraphicsServices                    0x0404c289 GSEventRun + 115
19  UIKit                               0x01ce0c93 UIApplicationMain + 1160
20  ???                                 0x09d54933 0x0 + 164972851
21  ???                                 0x09d53384 0x0 + 164967300
22  ???                                 0x09d530be 0x0 + 164966590
23  ???                                 0x09d53216 0x0 + 164966934
24  TestCase                            0x0000fd6f mono_jit_runtime_invoke + 1332
25  TestCase                            0x001ee239 mono_runtime_invoke + 137
26  TestCase                            0x001f0920 mono_runtime_exec_main + 669
27  TestCase                            0x001efd0a mono_runtime_run_main + 843
28  TestCase                            0x000a3c62 mono_jit_exec + 200
29  TestCase                            0x002a25eb main + 3838
30  TestCase                            0x000030c9 _start + 208
31  TestCase                            0x00002ff8 start + 40
32  ???                                 0x00000002 0x0 + 2

已将应用程式减少至必要的最低限度,对于可能的引用被减少的和垃圾收集的变量。没有XIB:它是代码的。

Have cut down the app to the absolute minimum necessary to reproduce the crash, and hunted for possible references to descoped and garbage-collected variables. There are no XIBs: it is code-only.

导航控制器有一个发送的表格;点击表格行将转到包含搜索栏的22,000行表格。用户在搜索栏中键入,在已过滤的表行上点击,并立即弹出到第一个表视图。这可以在崩溃之前从两次到二十次。 (在第一个表视图中点击表行时,崩溃立即发生)。除了崩溃,应用程序的工作原理与预期的一样。

A navigation controller has a tableview for despatch; tapping on a table row takes you to a table of 22,000 rows with a searchbar. The user types into the searchbar, taps on a filtered table row, and is immediately popped back to the first tableview. This can be done from two to twenty times before crashing. (The crash occurs immediately upon tapping a table row in the first tableview). Apart from the crashes, the app works exactly as expected.

任何想法或建议将是非常赞赏,在努力后的智慧结束。 Btw我提议在臭名昭着的收购后使用MonoTouch,这是我们的第一个应用程序。

Any ideas or suggestions would be -so- much appreciated, am at wits end after days of effort. Btw I proposed using MonoTouch after the infamous takeover and this is our first app.

下面列出的类似乎是最相关的;这些课程和其他课程在这里: http://www.whaleandseal.org/Test/Crash.pdf 和自行测试用例位于 http://www.whaleandseal.org/Test /TestCase.zip

The classes listed below would seem to be the most relevant; these classes and others are here: http://www.whaleandseal.org/Test/Crash.pdf and a self-contained test case is at http://www.whaleandseal.org/Test/TestCase.zip .

AppDelegate
        TTNavController

TTNavigationController
        despatchTable

TTTableDelegate
        new FromTableController(…)

FromTableController
        searchBar
        searchController

FromSearchResultsSource

FromSearchResultsDelegate

推荐答案

将此添加到您的FromTableController中似乎可以解决问题:

Adding this in your FromTableController seems to fix the problem:

protected override void Dispose (bool disposing)
{
    searchController.SearchResultsSource = null;
    searchController.Delegate = null;
    base.Dispose (disposing);
}

解决方案的灵感来自于:如何UISearchDisplayController自动释放导致在不同的视图控制器崩溃?

Solution was inspired by this: How can UISearchDisplayController autorelease cause crash in a different view controller?

这篇关于MonoTouch SIGSEGV崩溃使用navigationcontroller和searchdisplaycontroller的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆