Unreproducible webcore stürzt ab

Habe ich eine iPad app, die im App-Store für etwa drei Monate jetzt, und ich habe Empfang einige seltsame crash-Berichte, die ich nicht herausfinden können. Diese sind nicht so Häufig, hab um die 15-20 Instanzen seit dem Start, aber immer noch Häufig genug, um wirklich bug mich. Die Abstürze sind etwas anders (siehe stack-traces unten), aber da Sie im Zusammenhang mit WebCore ich vermute, Sie haben zu tun mit der Verwendung der UIWebView in der app und haben möglicherweise eine gemeinsame Ursache, obwohl ich bin nicht 100% positiv. Die Bereitstellung Ziel der app ist iOS 6.0, aber stürzt ab, erscheinen auf dem iPad 2, iPad 3 und iPad Mini, die ausschließlich auf iOS 7.

Gibt es nur einen Platz in der app, wo ich mit einem webview, die für die Anzeige von news-Artikel web-Seiten aus verschiedenen Quellen. Ich habe einen view-controller, der hat ein UIWebView als seine Ansicht. Es ist eine Instanz der view-controller, dass das Leben überall in der app, jedes mal, wenn ein neuer Artikel ausgewählt wird, wird die bestehende webview neu geladen, mit der url des neu gewählten Artikels.

Einer der vorgeschlagenen Lösungen auf der Basis der Diskussion rund um WebCore Themen vorgeschlagen, die Einstellung des webviews delegate Eigenschaft nil im controller dealloc Methode. Leider glaube ich nicht, es ist anwendbar in meinem Fall, weil die view-controller nicht freigegeben ist, während der gesamten Lebensdauer der app.

Ein weiteres Problem könnte sein, falsche Webseiten, haben schlechte Bild-Referenzen in der CSS (loadPendingImages Absturz). Ich konnte nicht finden, eine solche Seite allerdings noch nicht.

Auch habe ich überprüft und sicher gestellt, dass zu tun webview-bezogene Operationen auf dem Haupt-thread.

Abstürze

Exception Type: EXC_BAD_ACCESS 
Code: KERN_INVALID_ADDRESS

mit den folgenden stack-traces (volle hier)

0 WebCore WebCore::StyleResolver::applyMatchedProperties(WebCore::StyleResolver::MatchResult const&, WebCore::Element const*) + 815
1 WebCore WebCore::StyleResolver::applyMatchedProperties(WebCore::StyleResolver::MatchResult const&, WebCore::Element const*) + 788
2 WebCore WebCore::StyleResolver::styleForElement(WebCore::Element*, WebCore::RenderStyle*, WebCore::StyleSharingBehavior, WebCore::RuleMatchingBehavior, WebCore::RenderRegion*) + 948
3 WebCore WebCore::Document::styleForElementIgnoringPendingStylesheets(WebCore::Element*) + 96
4 WebCore WebCore::Element::computedStyle(WebCore::PseudoId) + 142
5 WebCore WebCore::ComputedStyleExtractor::propertyValue(WebCore::CSSPropertyID, WebCore::EUpdateLayout) const + 458

und

0 WebCore WebCore::StyleResolver::loadPendingImages() + 1153
1 WebCore WebCore::ResourceRequestBase::~ResourceRequestBase() + 104
2 WebCore WebCore::StyleResolver::applyMatchedProperties(WebCore::StyleResolver::MatchResult const&, WebCore::Element const*) + 782
3 WebCore WebCore::StyleResolver::styleForElement(WebCore::Element*, WebCore::RenderStyle*, WebCore::StyleSharingBehavior, WebCore::RuleMatchingBehavior, WebCore::RenderRegion*) + 948
4 WebCore WebCore::Document::styleForElementIgnoringPendingStylesheets(WebCore::Element*) + 96
5 WebCore WebCore::Element::computedStyle(WebCore::PseudoId) + 142

und

0 WebCore WebCore::StyleResolver::adjustRenderStyle(WebCore::RenderStyle*, WebCore::RenderStyle*, WebCore::Element*) + 19
1 WebCore WebCore::StyleResolver::styleForElement(WebCore::Element*, WebCore::RenderStyle*, WebCore::StyleSharingBehavior, WebCore::RuleMatchingBehavior, WebCore::RenderRegion*) + 964
2 WebCore WebCore::Document::styleForElementIgnoringPendingStylesheets(WebCore::Element*) + 96
3 WebCore WebCore::Element::computedStyle(WebCore::PseudoId) + 142
4 WebCore WebCore::ComputedStyleExtractor::propertyValue(WebCore::CSSPropertyID, WebCore::EUpdateLayout) const + 458
5 WebCore WebCore::CSSComputedStyleDeclaration::getPropertyValue(WebCore::CSSPropertyID) const + 42

und

0 WebCore WebCore::TimerBase::heapDeleteMin() + 37
1 WebCore WebCore::ThreadTimers::sharedTimerFiredInternal() + 94
2 WebCore WebCore::ThreadTimers::sharedTimerFiredInternal() + 94
3 WebCore WebCore::timerFired(__CFRunLoopTimer*, void*) + 24
4 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
5 CoreFoundation __CFRunLoopDoTimer + 782

Hat jemand ähnliches erlebt abstürzt? Wenn dem so ist:

1. Gibt es Möglichkeiten, zu replizieren?

2. Wie kann man Debuggen, ohne diese replizieren?

3. Was behebt die Probleme gelöst?

Dank!

  • iOS 7 verfügt über mehrere große Probleme mit der Grafik-rendering. Das Problem, das Sie versuchen, die Spur ist wahrscheinlich und OS-Ebene (oder SDK-level) - Problem. Zu Wagen, ein Blinder denke, es gibt einige CSS-Transformationen und-Animationen, die den Absturz verursachen. Ihre einzige Hoffnung zu isolieren, die Ursache zu finden ist die Seite, die Sie verursacht, und selbst dann Sie wahrscheinlich werden nicht in der Lage, etwas dagegen zu tun.
  • Ja, leider habe ich nicht bekommen, zu replizieren es selbst noch nicht und da bin ich auf das laden von news-Artikel aus verschiedenen (30+) news-Quellen habe ich das Gefühl, dass ich nicht in der Lage sein, es zu tun zu jeder Zeit bald. Falls sonst niemand eine bessere Idee, was wäre hier Los, wir müssen warten, bis iOS 7.1 und sehen, wenn Sie eine dieser Fragen.
  • Ich habe das replizieren dieser Fehler in cordova ios7 mit Fenster.requestAnimationFrame in eine Rekursion Schleife zu Schritt animieren sprite emoticons. Scheint, dass es passiert, wenn die app erwacht aus einem langen Schlaf und versucht, Sie zu animieren, wieder.
  • 7.1 nicht beheben diese Probleme, leider. Nicht in beta2, mindestens.
Schreibe einen Kommentar