2

我们的应用程序有一个相当标准的布局——一个带有工具栏的主窗口、左侧的源列表和一个选项卡控件。选项卡的内容由开源且非常复杂的第三方组件绘制。它广泛使用线程等。

一些用户可以可靠地重现整个应用程序“冻结”的情况 - 也就是说,主窗口停止重绘。光标不会抢滩,用户仍然可以四处点击,但窗口根本不会更新。

除了开始使用应用程序、打开一个或多个选项卡并在几分钟内出现问题外,没有特定的重现步骤。

他们能够在屏幕顶部打开应用程序菜单。其中一个菜单项 - “检查更新” - 启动模式会话(带有进度指示器的工作表),同时检查后台线程上的更新。

当应用程序处于这种“冻结”状态时,选择“检查更新”似乎会在模式会话期间解冻应用程序。冻结时进行的单击和按钮按下会突然注册为 UI 重绘。

然后,“检查更新”完成,模式会话结束,应用程序再次冻结。

在我看来,运行循环有问题。这是一个开放式问题,但老实说,我不知道去哪里找——什么会导致这些症状?我看不到遇到此问题的用户的硬件/软件之间有任何关联。

编辑


冻结后,我在控制台上看到的唯一我无法解释的是

12/18/2013 10:39:29.000 AM kernel[0]: Network delay is not specified! Defaulting to 0x384

但我认为这是一个红鲱鱼。

冻结时的过程示例为 UI 线程显示了这一点:

+                                 2327 -[NSApplication run]  (in AppKit) + 727  [0x9392e35c]
+                                   2327 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]  (in AppKit) + 119  [0x9393bad0]
+                                     2327 _DPSNextEvent  (in AppKit) + 1602  [0x9393c5a9]
+                                       2327 _BlockUntilNextEventMatchingListInModeWithFilter  (in HIToolbox) + 92  [0x9b2ea98d]
+                                         2327 ReceiveNextEventCommon  (in HIToolbox) + 526  [0x9b2eabb2]
+                                           2327 RunCurrentEventLoopInMode  (in HIToolbox) + 259  [0x9b2eae2d]
+                                             2327 CFRunLoopRunInMode  (in CoreFoundation) + 123  [0x95467bbb]
+                                               2327 CFRunLoopRunSpecific  (in CoreFoundation) + 394  [0x95467d5a]
+                                                 2324 __CFRunLoopRun  (in CoreFoundation) + 1393  [0x95468541]
+                                                 ! 2324 __CFRunLoopServiceMachPort  (in CoreFoundation) + 169  [0x95468f69]
+                                                 !   2324 mach_msg  (in libsystem_kernel.dylib) + 68  [0x99c0616c]
+                                                 !     2324 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x99c06f7a]
+                                                 3 __CFRunLoopRun  (in CoreFoundation) + 1779  [0x954686c3]
+                                                   1 __CFRunLoopDoTimers  (in CoreFoundation) + 222  [0x9552b22e]
+                                                   : 1 CFArrayCreateMutable  (in CoreFoundation) + 138  [0x9540a02a]
+                                                   :   1 -[__NSPlaceholderArray initWithCapacity:]  (in CoreFoundation) + 136  [0x954005a8]
+                                                   :     1 +[__NSArrayM __new:::::]  (in CoreFoundation) + 798  [0x9540096e]
+                                                   1 __CFRunLoopDoTimers  (in CoreFoundation) + 237  [0x9552b23d]
+                                                   : 1 CFArrayAppendValue  (in CoreFoundation) + 157  [0x9541fa9d]
+                                                   :   1 -[__NSArrayM addObject:]  (in CoreFoundation) + 64  [0x954009e0]
+                                                   :     1 -[__NSArrayM insertObject:atIndex:]  (in CoreFoundation) + 400  [0x95400b90]
+                                                   :       1 _platform_bzero$VARIANT$sse42  (in libsystem_platform.dylib) + 51  [0x9660c233]
+                                                   1 __CFRunLoopDoTimers  (in CoreFoundation) + 349  [0x9552b2ad]
+                                                     1 __CFRunLoopDoTimer  (in CoreFoundation) + 1395  [0x954b0b43]
+                                                       1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__  (in CoreFoundation) + 22  [0x954b1186]
+                                                         1 WebCore::timerFired(__CFRunLoopTimer*, void*)  (in WebCore) + 64  [0x9285bff0]
+                                                           1 WebCore::ThreadTimers::sharedTimerFired()  (in WebCore) + 84  [0x9285c064]
+                                                             1 WebCore::ThreadTimers::sharedTimerFiredInternal()  (in WebCore) + 330  [0x9285c1ca]
+                                                               1 WebCore::MainThreadSharedTimer::setFireInterval(double)  (in WebCore) + 21  [0x9285ba65]
+                                                                 1 WebCore::setSharedTimerFireInterval(double)  (in WebCore) + 173  [0x9285bb1d]
+                                                                   1 CFRunLoopAddTimer  (in CoreFoundation) + 453  [0x9546fed5]
+                                                                     1 CFSetApplyFunction  (in CoreFoundation) + 147  [0x954554d3]
+                                                                       1 CFBasicHashApply  (in CoreFoundation) + 122  [0x95437b4a]
+                                                                         1 __CFSetApplyFunction_block_invoke  (in CoreFoundation) + 25  [0x95455519]
+                                                                           1 __CFRunLoopAddItemToCommonModes  (in CoreFoundation) + 60  [0x9545556c]

但我无法解释这些信息......

编辑 2


一个额外的样本;与第一个明显不同:

+                                 2352 -[NSApplication run]  (in AppKit) + 727  [0x9887035c]
+                                   2352 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]  (in AppKit) + 119  [0x9887dad0]
+                                     2352 _DPSNextEvent  (in AppKit) + 1602  [0x9887e5a9]
+                                       2352 _BlockUntilNextEventMatchingListInModeWithFilter  (in HIToolbox) + 92  [0x9428298d]
+                                         2352 ReceiveNextEventCommon  (in HIToolbox) + 526  [0x94282bb2]
+                                           2352 RunCurrentEventLoopInMode  (in HIToolbox) + 259  [0x94282e2d]
+                                             2352 CFRunLoopRunInMode  (in CoreFoundation) + 123  [0x930d6bbb]
+                                               2352 CFRunLoopRunSpecific  (in CoreFoundation) + 394  [0x930d6d5a]
+                                                 2332 __CFRunLoopRun  (in CoreFoundation) + 1393  [0x930d7541]
+                                                 ! 2332 __CFRunLoopServiceMachPort  (in CoreFoundation) + 169  [0x930d7f69]
+                                                 !   2332 mach_msg  (in libsystem_kernel.dylib) + 68  [0x91bc316c]
+                                                 !     2332 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x91bc3f7a]
+                                                 17 __CFRunLoopRun  (in CoreFoundation) + 1779  [0x930d76c3]
+                                                 ! 16 __CFRunLoopDoTimers  (in CoreFoundation) + 349  [0x9319a2ad]
+                                                 ! : 10 __CFRunLoopDoTimer  (in CoreFoundation) + 1395  [0x9311fb43]
+                                                 ! : | 10 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__  (in CoreFoundation) + 22  [0x93120186]
+                                                 ! : |   4 __NSFireTimer  (in Foundation) + 117  [0x96cac78b]
+                                                 ! : |   + 4 -[ThirdPartyView nsTimerCallBack:]  (in ThirdPartyLib) + 61  [0x24958bd]
+                                                 ! : |   +   1 -[NSPasteboard changeCount]  (in AppKit) + 19  [0x98a44fc6]
+                                                 ! : |   +   ! 1 CFPasteboardGetGenerationCount  (in CoreFoundation) + 0  [0x930e3470]
+                                                 ! : |   +   1 -[NSPasteboard changeCount]  (in AppKit) + 0  [0x98a44fb3]
+                                                 ! : |   +   1 DYLD-STUB$$CFPasteboardGetGenerationCount  (in AppKit) + 0  [0x992f994c]
+                                                 ! : |   +   1 objc_msgSend  (in libobjc.A.dylib) + 26  [0x9b1094aa]
+                                                 ! : |   3 __NSFireTimer  (in Foundation) + 164  [0x96cac7ba]
+                                                 ! : |   + 3 _CFAutoreleasePoolPop  (in CoreFoundation) + 47  [0x9309bcdf]
+                                                 ! : |   +   3 (anonymous namespace)::AutoreleasePoolPage::pop(void*)  (in libobjc.A.dylib) + 559  [0x9b10b4b7]
+                                                 ! : |   2 __NSFireTimer  (in Foundation) + 98  [0x96cac778]
+                                                 ! : |   + 2 ???  (in <unknown binary>)  [0x3589ca0]
+                                                 ! : |   +   2 ???  (in <unknown binary>)  [0x99575bc]
+                                                 ! : |   +     2 ???  (in <unknown binary>)  [0x9957668]
+                                                 ! : |   +       1 _objc_rootRetainCount  (in libobjc.A.dylib) + 88  [0x9b10bdd0]
+                                                 ! : |   +       ! 1 objc::DenseMapBase<objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*> >, objc_object*, unsigned long, objc::DenseMapInfo<objc_object*>, true>::find(objc_object* const&)  (in libobjc.A.dylib) + 32  [0x9b11f820]
+                                                 ! : |   +       !   1 bool objc::DenseMapBase<objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*> >, objc_object*, unsigned long, objc::DenseMapInfo<objc_object*>, true>::LookupBucketFor<objc_object*>(objc_object* const&, std::__1::pair<objc_object*, unsigned long> const*&) const  (in libobjc.A.dylib) + 73  [0x9b11f9ff]
+                                                 ! : |   +       1 objc_msgSend  (in libobjc.A.dylib) + 64  [0x9b1094d0]
+                                                 ! : |   1 __NSFireTimer  (in Foundation) + 53  [0x96cac74b]
+                                                 ! : |     1 NSPushAutoreleasePool  (in Foundation) + 0  [0x96c4a188]
+                                                 ! : 4 __CFRunLoopDoTimer  (in CoreFoundation) + 557  [0x9311f7fd]
+                                                 ! : | 3 __CFArmNextTimerInMode  (in CoreFoundation) + 773  [0x930df535]
+                                                 ! : | + 3 mk_timer_arm  (in libsystem_kernel.dylib) + 10  [0x91bc40ca]
+                                                 ! : | 1 __CFArmNextTimerInMode  (in CoreFoundation) + 554  [0x930df45a]
+                                                 ! : |   1 __CFTSRToNanoseconds  (in CoreFoundation) + 25  [0x931bedb9]
+                                                 ! : 1 __CFRunLoopDoTimer  (in CoreFoundation) + 1556  [0x9311fbe4]
+                                                 ! : | 1 pthread_mutex_lock  (in libsystem_pthread.dylib) + 16  [0x911ca7ac]
+                                                 ! : |   1 _pthread_mutex_lock  (in libsystem_pthread.dylib) + 181  [0x911ca866]
+                                                 ! : 1 __CFRunLoopDoTimer  (in CoreFoundation) + 2093  [0x9311fdfd]
+                                                 ! :   1 __CFRunLoopFindMode  (in CoreFoundation) + 174  [0x930b1b5e]
+                                                 ! :     1 _CFRuntimeSetInstanceTypeIDAndIsa  (in CoreFoundation) + 33  [0x93065711]
+                                                 ! :       1 _CFRuntimeSetInstanceTypeID  (in CoreFoundation) + 0  [0x93063f50]
+                                                 ! 1 __CFRunLoopDoTimers  (in CoreFoundation) + 237  [0x9319a23d]
+                                                 !   1 CFArrayAppendValue  (in CoreFoundation) + 157  [0x9308ea9d]
+                                                 !     1 -[__NSArrayM addObject:]  (in CoreFoundation) + 64  [0x9306f9e0]
+                                                 !       1 -[__NSArrayM insertObject:atIndex:]  (in CoreFoundation) + 400  [0x9306fb90]
+                                                 !         1 _platform_bzero$VARIANT$sse42  (in libsystem_platform.dylib) + 0  [0x94d2d200]
+                                                 2 __CFRunLoopRun  (in CoreFoundation) + 1601  [0x930d7611]
+                                                 ! 1 __CFRunLoopDoObservers  (in CoreFoundation) + 81  [0x930e63b1]
+                                                 ! : 1 CFArrayGetCount  (in CoreFoundation) + 20  [0x930797f4]
+                                                 ! 1 __CFRunLoopDoObservers  (in CoreFoundation) + 194  [0x930e6422]
+                                                 !   1 CFArrayGetValueAtIndex  (in CoreFoundation) + 0  [0x9308ef80]
+                                                 1 __CFRunLoopRun  (in CoreFoundation) + 1550  [0x930d75de]
+                                                   1 mach_port_extract_member  (in libsystem_kernel.dylib) + 31  [0x91bc7363]
+                                                     1 _kernelrpc_mach_port_extract_member_trap  (in libsystem_kernel.dylib) + 10  [0x91bc3f26]
4

0 回答 0