microsoft / WinObjC

Objective-C for Windows
MIT License
6.24k stars 808 forks source link

UIActivityIndicatorView stopAnimating needs to push its Xaml interaction to the UIThread #2577

Closed jaredhms closed 7 years ago

jaredhms commented 7 years ago

IslandwoodNews is crashing on recent builds, likely surfaced by 71042590d. The fix is easy; we need to push the contents of UIActivityIndicatorView stopAnimating to the UIThread (just as we do for UIView initWithFrame and UIView delloc.

jaredhms commented 7 years ago

00 097fea2c 6e924545 KERNELBASE!RaiseException+0x62 [d:\rs1\minkernel\kernelbase\xcpt.c @ 904] 01 097fea70 6f55063e VCRUNTIME140_APP!_CxxThrowException+0x65 [f:\dd\vctools\crt\vcruntime\src\eh\throw.cpp @ 131] 02 097feb0c 6f5ce149 UIKit!winrt::impl::throw_hresult+0x2de [d:\build\agent7_work\17\s\packages\cppwinrt\2017.3.31.1\build\native\include\winrt/internal/../base.h @ 1734] 03 097feb1c 00510eb8 UIKit!-[UIActivityIndicatorView stopAnimating]+0x39 [d:\build\agent7_work\17\s\frameworks\uikit\uiactivityindicatorview.mm @ 247] 04 097feb30 0051155e IslandwoodNews!-[AXPRefreshControl endRefreshing]+0x3d [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axprefreshcontrol.m @ 109] 05 097fec00 0051136e IslandwoodNews!-[AXPRefreshControl updateRefreshControlMessage:]+0x1c2 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axprefreshcontrol.m @ 171] 06 097fec20 005111cf IslandwoodNews!-[AXPRefreshControl observeValueForKeyPath:ofObject:change:context:]+0x65 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axprefreshcontrol.m @ 156] 07 097fec68 00421aa3 IslandwoodNews!38-[AXPRefreshControl setStateDelegate:]_block_invoke+0xb5 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axprefreshcontrol.m @ 129] 08 097fed34 6ef26080 IslandwoodNews!-[AXPListener observeValueForKeyPath:ofObject:change:context:]+0x444 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axpobserver.m @ 109] 09 097fede8 6ef25ea2 Foundation!_dispatchDidChange+0x1d0 [d:\build\agent7_work\17\s\frameworks\foundation\nskvosupport.mm @ 633] 0a 097fedf8 6ef84f6f Foundation!-[NSObject(NSKeyValueObserving) didChangeValueForKey:]+0x22 [d:\build\agent7_work\17\s\frameworks\foundation\nskvosupport.mm @ 644] 0b 097fee48 0038071a Foundation!notifyingSetImpl+0x5f [d:\build\agent7_work\17\s\frameworks\foundation\nskvoswizzling.mm @ 116] 0c 097fef98 00382d8a IslandwoodNews!-[AXHeadlinesDelegate observeValueForKeyPath:ofObject:change:context:]+0xb55 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\apps\bingnews\bingnews\view controllers\axheadlinesdelegate.m @ 134] 0d 097fefe8 00421aa3 IslandwoodNews!__45-[AXHeadlinesDelegate refreshWithCachedData:]_block_invoke_2+0xf8 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\apps\bingnews\bingnews\view controllers\axheadlinesdelegate.m @ 338] 0e 097ff0b4 6ef26080 IslandwoodNews!-[AXPListener observeValueForKeyPath:ofObject:change:context:]+0x444 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axpobserver.m @ 109] 0f 097ff168 6ef25ea2 Foundation!_dispatchDidChange+0x1d0 [d:\build\agent7_work\17\s\frameworks\foundation\nskvosupport.mm @ 633] 10 097ff178 6ef8535f Foundation!-[NSObject(NSKeyValueObserving) didChangeValueForKey:]+0x22 [d:\build\agent7_work\17\s\frameworks\foundation\nskvosupport.mm @ 644] 11 097ff1c8 003f6c57 Foundation!notifyingSetImpl<APAUobjc_object *>+0x5f [d:\build\agent7_work\17\s\frameworks\foundation\nskvoswizzling.mm @ 116] 12 097ff22c 003f6283 IslandwoodNews!79+[AXGHeadlinesData queryWithObserver:parameters:inSession:forObserver:context:]_block_invoke_2+0x135 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\datamodel\axgheadlinesdata.m @ 66] 13 097ff25c 003f3c8a IslandwoodNews!67-[AXPProxyObject baseQuery:parameters:inSession:completionHandler:]_block_invoke+0xa9 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axpproxyobject.m @ 41] 14 097ff2c8 004cdd64 IslandwoodNews!__63+[AXPCodeUtils dataForUrlWithTask:inSession:completionHandler:]_block_invoke+0x29a [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axpcodeutils.m @ 133] 15 097ff3f8 6ef3404a IslandwoodNews!-[AXPURLManager URLSession:task:didCompleteWithError:]+0xb72 [d:\build\agent7_work\r1\a\winobjc_internal\apps\msn\common\axplatform\axplatform\axpurlmanager.m @ 818] 16 097ff414 6ef13f99 Foundation!std::stack<CurrentProgress,std::deque<CurrentProgress,std::allocator > >::top+0x537a [d:\build\agent7_work\17\s\frameworks\foundation\nsurlsession.mm @ 57] 17 097ff490 6ef15ebc Foundation!-[NSBlockOperation main]+0x69 [d:\build\agent7_work\17\s\frameworks\foundation\nsblockoperation.mm @ 72] 18 097ff4c8 6ef0d5dc Foundation!-[NSOperation start]+0x13c [d:\build\agent7_work\17\s\frameworks\foundation\nsoperation.mm @ 289] 19 097ff528 6ea47987 Foundation!36-[NSOperationQueue _startOperation:]_block_invoke+0x10c [d:\build\agent7_work\17\s\frameworks\foundation\nsoperationqueue.mm @ 213] 1a 097ff53c 6ea48f0e libdispatch!_dispatch_call_block_and_release+0x1f [z:\winobjc\deps\3rdparty\libdispatch\src\queue.c @ 124] 1b 097ff55c 6ea496db libdispatch!_dispatch_continuation_pop+0x7b [z:\winobjc\deps\3rdparty\libdispatch\src\queue.c @ 415] 1c 097ff598 6ea43668 libdispatch!_dispatch_worker_thread2+0xad [z:\winobjc\deps\3rdparty\libdispatch\src\queue.c @ 1643] 1d 097ff5b4 6ea45219 libdispatch!_native_work_callback+0x88 [z:\winobjc\deps\3rdparty\libdispatch\platform\windows\pthread_workqueue_winrt.cpp @ 325] 1e 097ff5c4 6ea45f32 libdispatch!::operator()+0x19 [z:\winobjc\deps\3rdparty\libdispatch\platform\windows\pthread_workqueue_winrt.cpp @ 355] 1f 097ff5d0 6ba34c6f libdispatch!Microsoft::WRL::Details::InvokeHelper<Microsoft::WRL::Implements<Microsoft::WRL::RuntimeClassFlags<2>,ABI::Windows::System::Threading::IWorkItemHandler,Microsoft::WRL::FtmBase,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil>,,1>::Invoke+0x12 [c:\program files (x86)\windows kits\10\include\10.0.10586.0\winrt\wrl\event.h @ 256] 20 097ff5fc 6ba346ea threadpoolwinrt!Windows::System::Threading::CThreadPoolWorkItem::CommonWorkCallback+0xaf [d:\rs1\onecoreuap\base\threadpool\winrt\impl\threadpool.cpp @ 467] 21 097ff62c 779a7c43 threadpoolwinrt!Windows::System::Threading::CThreadPoolWorkItem::BatchedCallback+0xaa [d:\rs1\onecoreuap\base\threadpool\winrt\impl\threadpool.cpp @ 578] 22 097ff718 779a6b56 ntdll!TppWorkpExecuteCallback+0x153 [d:\rs1\minkernel\threadpool\ntdll\work.c @ 671] 23 097ff8b4 744f62c4 ntdll!TppWorkerThread+0x396 [d:\rs1\minkernel\threadpool\ntdll\worker.c @ 1083] 24 097ff8c8 779d0fd9 kernel32!BaseThreadInitThunk+0x24 [d:\rs1\base\win32\client\thread.c @ 64] 25 097ff910 779d0fa4 ntdll!__RtlUserThreadStart+0x2f [d:\rs1\minkernel\ntdll\rtlstrt.c @ 997] 26 097ff920 00000000 ntdll!_RtlUserThreadStart+0x1b [d:\rs1\minkernel\ntdll\rtlstrt.c @ 914] 0:016> kp5

ChildEBP RetAddr

00 097fea2c 6e924545 KERNELBASE!RaiseException(unsigned long dwExceptionCode = 0xe06d7363, unsigned long dwExceptionFlags = 1, unsigned long nNumberOfArguments = 3, unsigned long lpArguments = 0x097fea64)+0x62 [d:\rs1\minkernel\kernelbase\xcpt.c @ 904] 01 097fea70 6f55063e VCRUNTIME140_APP!_CxxThrowException(void pExceptionObject = 0x097feaf0, struct _s__ThrowInfo pThrowInfo = 0x6fc3dc08)+0x65 [f:\dd\vctools\crt\vcruntime\src\eh\throw.cpp @ 131] 02 097feb0c 6f5ce149 UIKit!winrt::impl::throw_hresult(HRESULT result = 0x8001010e)+0x2de [d:\build\agent7_work\17\s\packages\cppwinrt\2017.3.31.1\build\native\include\winrt/internal/../base.h @ 1734] 03 097feb1c 00510eb8 UIKit!-[UIActivityIndicatorView stopAnimating](class UIActivityIndicatorView self = 0x0beff40c, class objc_selector * _cmd = 0x02434958)+0x39 [d:\build\agent7_work\17\s\frameworks\uikit\uiactivityindicatorview.mm @ 247] WARNING: Stack unwind information not available. Following frames may be wrong. 04 097feb30 0051155e IslandwoodNews!VSDesignerDllMain+0x145128

jaredhms commented 7 years ago

Alternatively, we fix this in the app.

jaredhms commented 7 years ago

The UIKit docs say that off-thread usage of UIViews is unsupported.