Mes applications ont un accident important -WKWebView se bloque si l'utilisateur répond à un iMessage entrant
CALayer position contains NaN: [377.833 nan]
avec la pile suivante -
Fatal Exception: CALayerInvalidGeometry
0 CoreFoundation 0x18283afe0 __exceptionPreprocess
1 libobjc.A.dylib 0x18129c538 objc_exception_throw
2 CoreFoundation 0x18283af28 -[NSException initWithCoder:]
3 QuartzCore 0x185b50acc CA::Layer::set_position(CA::Vec2<double> const&, bool)
4 QuartzCore 0x185b50c48 -[CALayer setPosition:]
5 QuartzCore 0x185b51198 -[CALayer setFrame:]
6 UIKit 0x1889657a8 -[UIView(Geometry) setFrame:]
7 UIKit 0x188979364 -[UIImageView _setViewGeometry:forMetric:]
8 UIKit 0x1889c6c38 -[UIScrollView _adjustScrollerIndicators:alwaysShowingThem:]
9 UIKit 0x188abfb34 -[UIScrollView(UIScrollViewInternal) _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:]
10 WebKit 0x18c14af3c -[WKWebView _keyboardChangedWithInfo:adjustScrollView:]
11 CoreFoundation 0x1827d55f4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
12 CoreFoundation 0x1827d4d08 _CFXRegistrationPost
13 CoreFoundation 0x1827d4a84 ___CFXNotificationPost_block_invoke
14 CoreFoundation 0x1828437a8 -[_CFXNotificationRegistrar find:object:observer:enumerator:]
15 CoreFoundation 0x18271895c _CFXNotificationPost
16 Foundation 0x18322a930 -[NSNotificationCenter postNotificationName:object:userInfo:]
17 UIKit 0x1893500e4 -[UIInputWindowController postStartNotifications:withInfo:]
18 UIKit 0x189352350 __77-[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:]_block_invoke.907
19 UIKit 0x188a383cc -[UIInputViewAnimationStyle launchAnimation:afterStarted:completion:forHost:fromCurrentPosition:]
20 UIKit 0x189351dc8 -[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:]
21 UIKit 0x1893588b0 -[UIInputWindowController setInputViewSet:]
22 UIKit 0x189351494 -[UIInputWindowController performOperations:withAnimationStyle:]
23 UIKit 0x188a30d94 -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:]
24 UIKit 0x1890f7160 -[_UIRemoteKeyboards keyboardChanged:shouldConsiderSnapshottingKeyboard:isLocalEvent:]
25 UIKit 0x1890f6e8c __37-[_UIRemoteKeyboards
En regardant les journaux des utilisateurs que j'ai trouvé quelques choses communes -
- Tous les utilisateurs sont dans un contrôleur de vue qui contient une WKWebView
- Tous les journaux indiquer que l'application a « applicationWillResignActive » avant le crash
- La pile montre qu'un clavier a été ouvert, mais nous ne pas loin d'ouvrir le clavier que View Controller
- tous les utilisateurs sont iOS 10.3 +
Le seul scénario qui convenait était qu'un utilisateur recevait un iMessage alors que l'application était avec un WKWebView visible et le forçait à répondre rapidement. Nous avons testé ce scénario et BOOOM l'application s'est écrasée.
Nous avons donc trouvé le crash, mais nous n'avons aucune idée de ce qui se passe. Quelqu'un a fait face à ce problème ou a une idée de ce que cela pourrait être?
Merci
Pouvez-vous reproduire ce problème avec un projet créé à partir de rien (donc une configuration minimale + WKWebView)? – idmean
Je seconde la motion de reproduire avec un projet distinct. Pendant ce temps, dans votre projet actuel qui plante, définissez un point d'arrêt symbolique sur '[CALayer setPosition:]' et imprimez la position en cours en faisant 'po NSStringFromCGPoint (position)'. Définissez également un point d'arrêt symbolique sur '[UIView setFrame:]' juste avant que cela n'arrive. Encore une fois, imprimez le cadre. Voyez ce qui est en train d'être défini. Voyez si le cadre de votre webview est valide ou non. Vérifiez vos contraintes, etc. – Brandon
Essayé et joué avec scénario que vous avez mentionné, mais n'a pas pu produire un accident. Semble quelque chose d'autre est cassé. –