Crash in [@ nsObserverService::EnsureValidCall | nsObserverService::RemoveObserver | ExpirationTrackerImpl<T>::ExpirationTrackerObserver::Destroy]
Categories
(Core :: Graphics, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr102 | --- | unaffected |
firefox111 | --- | wontfix |
firefox112 | --- | wontfix |
firefox113 | --- | fixed |
People
(Reporter: gsvelto, Assigned: sotaro)
Details
(Keywords: crash)
Crash Data
Attachments
(1 file)
Crash report: https://crash-stats.mozilla.org/report/index/77ff61e5-8d01-4012-b0de-d89250230326
Reason: SIGSEGV / SEGV_MAPERR
Top 10 frames of crashing thread:
0 libxul.so nsObserverService::EnsureValidCall const xpcom/ds/nsObserverService.cpp:171
0 libxul.so nsObserverService::RemoveObserver xpcom/ds/nsObserverService.cpp:237
1 libxul.so ExpirationTrackerImpl<mozilla::gfx::GradientCacheData, xpcom/ds/nsExpirationTracker.h:424
1 libxul.so ExpirationTrackerImpl<mozilla::gfx::GradientCacheData, xpcom/ds/nsExpirationTracker.h:145
2 libxul.so mozilla::gfx::GradientCache::~GradientCache gfx/thebes/gfxGradientCache.cpp:121
2 libxul.so mozilla::DefaultDelete<mozilla::gfx::GradientCache>::operator const mfbt/UniquePtr.h:459
3 libxul.so mozilla::UniquePtr<mozilla::gfx::GradientCache, mozilla::DefaultDelete<mozilla::gfx::GradientCache> >::reset mfbt/UniquePtr.h:301
3 libxul.so mozilla::UniquePtr<mozilla::gfx::GradientCache, mozilla::DefaultDelete<mozilla::gfx::GradientCache> >::~UniquePtr mfbt/UniquePtr.h:249
3 libxul.so mozilla::DataMutexBase<mozilla::UniquePtr<mozilla::gfx::GradientCache, mozilla::DefaultDelete<mozilla::gfx::GradientCache> >, mozilla::StaticMutexNameless>::~DataMutexBase xpcom/threads/DataMutex.h:39
4 libc.so libc.so@0x47f77
It seems like the GradientCache object is being destroyed in the CanvasRender thread, but the observer service can only be called in the main thread hence the crash. This crash signature was probably hidden in bug 1276919 before we introduced inlined function support to crash reports.
Assignee | ||
Comment 1•1 year ago
•
|
||
It is weird that GradientCache is destroyed in CanvasRender thread. GradientCache is created in GPUParent::Init() and it is destroyed in CompositorThreadHolder::Shutdown().
And in GPU process, GradientCache is used only by CanvasTranslator for remote canvas in Windows. Android does not use it.
Assignee | ||
Comment 2•1 year ago
|
||
Updated•1 year ago
|
Pushed by sikeda.birchill@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/19e54bc02198 Initialize gfxGradientCache in GPU process only when remote canvas is enabled r=gfx-reviewers,lsalzman
Comment 4•1 year ago
|
||
bugherder |
Updated•1 year ago
|
Comment 5•1 year ago
|
||
The patch landed in nightly and beta is affected.
:sotaro, is this bug important enough to require an uplift?
- If yes, please nominate the patch for beta approval.
- If no, please set
status-firefox112
towontfix
.
For more information, please visit auto_nag documentation.
Assignee | ||
Comment 6•1 year ago
|
||
Set set status-firefox112 to wontfix. Crash frequency is low. And it is still not clear yet how crash happened. The fix just stopped to create gfxGradientCache since gfxGradientCache is not used in GPU process on Android.
Description
•