У меня случился сбой в клиентском приложении, а не на много WTFCrash
, я не получаю много пользы от трассировки стека.
Я использую экземпляр WKWebView
, чтобы показать веб-страницу с несколькими анимациями на основе CSS и видео. Проблемы возникают на iOS 8 и 9 на самых разных устройствах (iPhone 5c до 6s и аналогичный диапазон iPads).
WKWebView
работает в своем собственном процессе, а не в приложении. Когда происходит сбой, белый слой остается позади, который покрывает основное приложение, делая его недоступным даже при том, что его процесс не был затронут.
Глядя на журналы устройств, я нахожу сбои в процессе com.apple.WebKit.WebContent
, и все они имеют один и тот же журнал для разбившегося потока.
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 JavaScriptCore 0x0000000184c9f22c WTFCrash + 72
1 JavaScriptCore 0x0000000184c9f224 WTFCrash + 64
2 WebKit 0x0000000188ecd850 WebKit::RemoteLayerTreeDrawingArea::acceleratedAnimationDidStart(unsigned long long, WTF::String const&, double) + 0
3 WebCore 0x0000000184f2e70c WebCore::ThreadTimers::sharedTimerFiredInternal() + 148
4 WebCore 0x0000000184f2e64c WebCore::timerFired(__CFRunLoopTimer*, void*) + 36
5 CoreFoundation 0x000000018107d81c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
6 CoreFoundation 0x000000018107d4c0 __CFRunLoopDoTimer + 884
7 CoreFoundation 0x000000018107abd4 __CFRunLoopRun + 1520
8 CoreFoundation 0x0000000180fa4d10 CFRunLoopRunSpecific + 384
9 Foundation 0x00000001819b4d8c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
10 Foundation 0x0000000181a09ff8 -[NSRunLoop(NSRunLoop) run] + 88
11 libxpc.dylib 0x0000000180d68cf8 _xpc_objc_main + 660
12 libxpc.dylib 0x0000000180d6aa2c xpc_main + 200
13 com.apple.WebKit.WebContent 0x0000000100057924 0x100054000 + 14628
14 libdyld.dylib 0x0000000180b428b8 start + 4
Вот пример html/css, который мы используем для воспроизведения проблемы.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<style media="screen, project">
body {
background-color: #4cb9e4;
}
div#mytest {
position: absolute;
top: 0;
width: 100%;
height: 5000px;
background-color: rgba(0, 0, 0, 0.7);
text-align: center;
overflow-y: hidden;
-webkit-transition-property: height;
-moz-transition-property: height;
transition-property: height;
-webkit-transition-duration: 0.5s;
-moz-transition-duration: 0.5s;
transition-duration: 0.5s;
-webkit-transition-timing-function: ease;
-moz-transition-timing-function: ease;
transition-timing-function: ease; }
div#mytest.hidden {
height: 0; }
</style>
<script>
var initialWidth = 100;
window.addEventListener('load', function () {
var div = document.getElementById('mytest');
div.className = '';
setInterval(function () {
initialWidth += 10;
if (initialWidth > 1000) {
initialWidth = 1;
}
div.style.height = initialWidth + 'px';
}, 40);
}, false);
</script>
</head>
<body>
<div class="hidden" id="mytest">
This is sample test
</div>
</body>
</html>
Это знакомо кому-нибудь? Есть ли что-то, что я должен сказать веб-инженеру изменить в отношении анимации?