title: MonoTouch SIGSEGV crash using navigationcontroller and searchdisplaycontroller
body: <p>In the MonoTouch simulator I am getting random crashes with the following diagnostic:</p>
  
  <pre><code>/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.
  </code></pre>
  
  <p>The trace mentions "UISearchDisplayController dealloc" :</p>
  
  <pre><code>  at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.void_objc_msgSend (intptr,intptr) &lt;IL 0x00024, 0xffffffff&gt;
    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) &lt;Module&gt;.runtime_invoke_void__this___object (object,intptr,intptr,intptr) &lt;IL 0x00052, 0xffffffff&gt;
    at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) &lt;IL 0x0009f, 0xffffffff&gt;
    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) &lt;Module&gt;.runtime_invoke_void_object (object,intptr,intptr,intptr) &lt;IL 0x00050, 0xffffffff&gt;
  
     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
  </code></pre>
  
  <p>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. </p>
  
  <p>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.</p>
  
  <p>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.</p>
  
  <p>The classes listed below would seem to be the most relevant; these classes and others are here: <a href="http://www.whaleandseal.org/Test/Crash.pdf" rel="nofollow">http://www.whaleandseal.org/Test/Crash.pdf</a> and a self-contained test case is at <a href="http://www.whaleandseal.org/Test/TestCase.zip" rel="nofollow">http://www.whaleandseal.org/Test/TestCase.zip</a> .</p>
  
  <pre><code>AppDelegate
          TTNavController
  
  TTNavigationController
          despatchTable
  
  TTTableDelegate
          new FromTableController(…)
  
  FromTableController
          searchBar
          searchController
  
  FromSearchResultsSource
  
  FromSearchResultsDelegate
  </code></pre>
  
  <p>:</p>