Closed Bug 759162 Opened 13 years ago Closed 13 years ago

Crash in AndroidGLController::ProvideEGLSurface during CompositorParent::ResumeComposition

Categories

(Firefox for Android Graveyard :: General, defect)

ARM
Android
defect
Not set
critical

Tracking

(firefox14 fixed, blocking-fennec1.0 +)

RESOLVED FIXED
Firefox 15
Tracking Status
firefox14 --- fixed
blocking-fennec1.0 --- +

People

(Reporter: ajuma, Assigned: ajuma)

References

Details

(Keywords: crash, topcrash, Whiteboard: [native-crash][gfx])

Crash Data

Attachments

(2 files, 1 obsolete file)

This bug is for crashes in ProvideEGLSurface remaining after Bug 745243. The crashes that remain are (almost all) non-startup crashes, occurring during CompositorParent::ResumeComposition.
We're calling CreateConfig (which calls eglChooseConfig), but doing nothing with the result since GLController.provideEGLSurface on the Java side handles choosing a config for surface creation. This really shouldn't be causing crashes in provideEGLSurface, but we might as well fix it.
Attachment #627783 - Flags: review?(bgirard)
It's conceivable that we're crashing when we get a rapid sequence of surfaceChanged and surfaceDestroyed events, meaning that the compositor doesn't get around to creating an egl surface until after surfaceDestroyed has occurred. This patch makes us block on surfaceChanged until the compositor is actually resumed (and an egl surface is created). (Similarly, Bug 752368 made us block on surfaceDestroyed until the compositor is actually paused (and the egl surface is released). That fixed a bunch of crashes.)
Attachment #627786 - Flags: review?(bgirard)
Comment on attachment 627786 [details] [diff] [review] Part 2: Make CompositorParent::ScheduleResumeOnCompositorThread block until the compositor resumes. Looks good. I don't really like how we call these functions 'Schedule' yet they perform the operation synchronously but we already have another instance of that.
Attachment #627786 - Flags: review?(bgirard) → review+
This accomplishes the same thing as the previous version, but does so by entirely doing away with calls to CreateSurfaceForWindow on Native Fennec (so we no longer need to pass in a meaningless EGLConfig to this function) and making calls directly to ProvideEGLSurface instead.
Attachment #627783 - Attachment is obsolete: true
Attachment #627783 - Flags: review?(bgirard)
Attachment #627792 - Flags: review?(bgirard)
Attachment #627792 - Flags: review?(bgirard) → review+
Severity: normal → critical
Keywords: crash, topcrash
Whiteboard: [native-crash]
blocking-fennec1.0: ? → +
Whiteboard: [native-crash] → [native-crash][gfx]
Depends on: 741222, 741315
Comment on attachment 627792 [details] [diff] [review] Part 1: Remove unnecessary call to eglChooseConfig in GLContextProviderEGL::RenewSurface, v2 [Approval Request Comment] User impact if declined: Possible crashes. Testing completed (on m-c, etc.): On m-c since May 30th. Risk to taking this patch (and alternatives if risky): Low-risk. Because of #ifdefs, the changes made by this patch are effectively mobile-only. String or UUID changes made by this patch: None.
Attachment #627792 - Flags: approval-mozilla-aurora?
Comment on attachment 627786 [details] [diff] [review] Part 2: Make CompositorParent::ScheduleResumeOnCompositorThread block until the compositor resumes. [Approval Request Comment] User impact if declined: Possible crashes. Testing completed (on m-c, etc.): On m-c since May 30th. Risk to taking this patch (and alternatives if risky): Low-risk, affects OMTC only. String or UUID changes made by this patch: None.
Attachment #627786 - Flags: approval-mozilla-aurora?
This appears to be the likely cause of Bug 761003 (a crash on the HTC Vision), so we shouldn't uplift until we get this sorted out.
(In reply to Ali Juma [:ajuma] from comment #9) > This appears to be the likely cause of Bug 761003 (a crash on the HTC > Vision), so we shouldn't uplift until we get this sorted out. It's worth noting that those crashes appear to be from a single user using cyanogenmod, so it's not clear if the appearance of that crash after the landing of these patches is simply a coincidence, and even if it's not a simple coincidence, it may still be the case that the crashes potentially fixed by these patches outweigh the crashes potentially caused.
Comment on attachment 627786 [details] [diff] [review] Part 2: Make CompositorParent::ScheduleResumeOnCompositorThread block until the compositor resumes. [Triage Comment]
Attachment #627786 - Flags: approval-mozilla-aurora? → approval-mozilla-beta+
Comment on attachment 627792 [details] [diff] [review] Part 1: Remove unnecessary call to eglChooseConfig in GLContextProviderEGL::RenewSurface, v2 [Triage Comment]
Attachment #627792 - Flags: approval-mozilla-aurora? → approval-mozilla-beta+
Crash Signature: [@ AndroidGLController::ProvideEGLSurface] [@ JNI_GetCreatedJavaVMs] [@ dalvik-LinearAlloc (deleted)@0x2bb18e] [@ dalvik-LinearAlloc (deleted)@0x2be89e] [@ dalvik-LinearAlloc (deleted)@0x2bbe0e] [@ dalvik-LinearAlloc (deleted)@0x23b0b6] → [@ AndroidGLController::ProvideEGLSurface] [@ JNI_GetCreatedJavaVMs] [@ JNI_GetCreatedJavaVMs | AndroidGLController::ProvideEGLSurface] [@ dalvik-LinearAlloc (deleted)@0x2bb18e] [@ dalvik-LinearAlloc (deleted)@0x2be89e] [@ dalvik-LinearAlloc (deleted…
Re-nomming since: 1) The crash volume no longer seems to be high enough to justify this being a release blocker. Over the past 7 days in 14.0b5 (which doesn't even include the patches from this bug), there were 118 crashes (accounting for 1.2% of all crashes) with this signature during CompositorParent::ResumeComposition. 2) Since we don't have steps to reproduce this, it's not clear how much further progress can be made here.
blocking-fennec1.0: + → ?
> Over the past 7 days in 14.0b5 (which doesn't even > include the patches from this bug), there were 118 crashes (accounting for > 1.2% of all crashes) with this signature during > CompositorParent::ResumeComposition. This doesn't include the roughly 100 crashes with the JNI_GetCreatedJavaVMs signature. So the combined crashes actually accounted for roughly 2.2% of all crashes in 14.0b5. However, there are no JNI_GetCreatedJavaVMs crashes yet in 14.0b6 (which includes the patches from this bug).
In the first hours of 14.0b6, this bug and bug 745243 account for 3.8% of all crashes and are #2 top crasher. We need to wait more stats before unblocking.
OK. We think there might be something here, but we don't have enough information yet. We also want to separate this out for proper tracking. Scoobidiver, can you file (and nom) a bug regarding this crash, so we can re-evaluate on Monday?
Status: REOPENED → RESOLVED
blocking-fennec1.0: ? → +
Closed: 13 years ago13 years ago
Resolution: --- → FIXED
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: