有人能理解在SGen打开的情况下发生在Monotouch 5.2.6中的崩溃吗

本文关键字:Monotouch 崩溃 情况下 能理解 SGen | 更新日期: 2023-09-27 18:26:49

在启用了Monotouch 5.2.6和SGen的iOS5模拟器中,我随机出现了下面的崩溃。这是一个调试版本。这是在点击按钮后发生的。点击会产生一个新的线程,显示一个小的进度指示器。当它完成思考时,它将用动画交换两个视图(在UI线程上运行所有这些)。

我想知道从哪里开始,因为我没有得到托管堆栈跟踪。它正在尝试布局一个已不存在的UITableViewCell,我说得对吗?

Native stacktrace:
    0   MobileApp                    0x00094fbc mono_handle_native_sigsegv + 284
    1   MobileApp                    0x0000be72 mono_sigsegv_signal_handler + 178
    2   libsystem_c.dylib                   0x9c5ee59b _sigtramp + 43
    3   ???                                 0xffffffff 0x0 + 4294967295
    4   QuartzCore                          0x04176891 -[CALayer actionForKey:] + 89
    5   QuartzCore                          0x0417982d _ZL12actionForKeyP7CALayerPN2CA11TransactionEP8NSString + 82
    6   QuartzCore                          0x0417c9c3 _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 131
    7   QuartzCore                          0x04181f82 _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb + 388
    8   QuartzCore                          0x04178205 -[CALayer setPosition:] + 68
    9   QuartzCore                          0x04177cba -[CALayer setFrame:] + 675
    10  UIKit                               0x021d8590 -[UIView(Geometry) setFrame:] + 198
    11  UIKit                               0x022e1731 -[UILabel setFrame:] + 233
    12  UIKit                               0x02439731 -[UITableViewCellLayoutManager layoutSubviewsOfCell:] + 4511
    13  UIKit                               0x02390e34 -[UITableViewCell layoutSubviews] + 2650
    14  UIKit                               0x021e3322 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 178
    15  CoreFoundation                      0x011d6e72 -[NSObject performSelector:withObject:] + 66
    16  QuartzCore                          0x0417392d -[CALayer layoutSublayers] + 266
    17  QuartzCore                          0x0417d827 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 231
    18  QuartzCore                          0x04103fa7 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 377
    19  QuartzCore                          0x04105ea6 _ZN2CA11Transaction6commitEv + 374
    20  QuartzCore                          0x041059d3 _ZN2CA11Transaction14release_threadEPv + 65
    21  libsystem_c.dylib                   0x9c5dfe0c _pthread_tsd_cleanup + 85
    22  libsystem_c.dylib                   0x9c59864c _pthread_exit + 146
    23  libsystem_c.dylib                   0x9c5989a0 pthread_exit + 33
    24  MobileApp                    0x0020434e thread_exit + 30
    25  MobileApp                    0x00203d03 thread_start_routine + 163
    26  MobileApp                    0x001aeb20 gc_start_thread + 80
    27  libsystem_c.dylib                   0x9c596ed9 _pthread_start + 335
    28  libsystem_c.dylib                   0x9c59a6de thread_start + 34

有人能理解在SGen打开的情况下发生在Monotouch 5.2.6中的崩溃吗

本机代码正试图访问已释放的内容。

这是关键一行:

4   QuartzCore                          0x04176891 -[CALayer actionForKey:] + 89

您需要弄清楚[CLAyer actionForKey:]试图做什么(以及在哪个对象上)-请记住,这可能是许多事情(调用委托/事件、调用虚拟方法、获取属性)。然而,在没有看到实际代码的情况下很难做到具体。