Closed Bug 1770290 Opened 2 years ago Closed 2 years ago

Intermittent Assertion failure: pthread_mutex_destroy(&mMutex) == 0 (pthread_mutex_destroy failed), at /builds/worker/checkouts/gecko/xpcom/threads/RecursiveMutex.cpp:63 in docshell/test/unit/test_privacy_transition.js

Categories

(Core :: Graphics: Text, defect)

defect

Tracking

()

RESOLVED FIXED
102 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox100 --- unaffected
firefox101 --- unaffected
firefox102 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: jfkthame)

References

Details

(Keywords: assertion, intermittent-failure, regression, Whiteboard: [stockwell unknown])

Attachments

(1 file)

Filed by: mlaza [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=378731205&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/XIfjihmMQ7WSCtwnlZhyHQ/runs/0/artifacts/public/logs/live_backing.log


[task 2022-05-20T04:17:08.699Z] 04:17:08     INFO -  TEST-START | docshell/test/unit/test_privacy_transition.js
[task 2022-05-20T04:17:09.047Z] 04:17:09  WARNING -  TEST-UNEXPECTED-FAIL | docshell/test/unit/test_privacy_transition.js | xpcshell return code: 1
[task 2022-05-20T04:17:09.047Z] 04:17:09     INFO -  TEST-INFO took 347ms
[task 2022-05-20T04:17:09.048Z] 04:17:09     INFO -  >>>>>>>
[task 2022-05-20T04:17:09.048Z] 04:17:09     INFO -  PID 8699 | [Parent 8699, Main Thread] WARNING: Couldn't get the user appdata directory. Crash events may not be produced.: file /builds/worker/checkouts/gecko/toolkit/crashreporter/nsExceptionHandler.cpp:2981
[task 2022-05-20T04:17:09.048Z] 04:17:09     INFO -  (xpcshell/head.js) | test MAIN run_test pending (1)
[task 2022-05-20T04:17:09.048Z] 04:17:09     INFO -  TEST-PASS | docshell/test/unit/test_privacy_transition.js | run_test - [run_test : 20] 2 == 2
[task 2022-05-20T04:17:09.049Z] 04:17:09     INFO -  (xpcshell/head.js) | test MAIN run_test finished (1)
[task 2022-05-20T04:17:09.049Z] 04:17:09     INFO -  exiting test
[task 2022-05-20T04:17:09.049Z] 04:17:09     INFO -  PID 8699 | Couldn't convert chrome URL: chrome://branding/locale/brand.properties
[task 2022-05-20T04:17:09.049Z] 04:17:09     INFO -  PID 8699 | [Parent 8699, Main Thread] WARNING: Could not get the program name for a cubeb stream.: 'NS_SUCCEEDED(rv)', file /builds/worker/checkouts/gecko/dom/media/CubebUtils.cpp:413
[task 2022-05-20T04:17:09.050Z] 04:17:09     INFO -  "CONSOLE_MESSAGE: (info) No chrome package registered for chrome://branding/locale/brand.properties"
[task 2022-05-20T04:17:09.050Z] 04:17:09     INFO -  PID 8699 | GL_VENDOR: Intel Inc.
[task 2022-05-20T04:17:09.050Z] 04:17:09     INFO -  PID 8699 | mVendor: Intel
[task 2022-05-20T04:17:09.050Z] 04:17:09     INFO -  PID 8699 | GL_RENDERER: Intel(R) UHD Graphics 630
[task 2022-05-20T04:17:09.050Z] 04:17:09     INFO -  PID 8699 | mRenderer: Unknown
[task 2022-05-20T04:17:09.050Z] 04:17:09     INFO -  PID 8699 | mIsMesa: 0
[task 2022-05-20T04:17:09.051Z] 04:17:09     INFO -  PID 8699 | [Parent 8699, Main Thread] WARNING: NS_ENSURE_TRUE(currentInner) failed: file /builds/worker/checkouts/gecko/dom/base/WindowDestroyedEvent.cpp:113
[task 2022-05-20T04:17:09.051Z] 04:17:09     INFO -  PID 8699 | [Parent 8699, Main Thread] WARNING: Extra shutdown CC: 'i < NORMAL_SHUTDOWN_COLLECTIONS', file /builds/worker/checkouts/gecko/xpcom/base/nsCycleCollector.cpp:3359
[task 2022-05-20T04:17:09.051Z] 04:17:09     INFO -  PID 8699 | [Parent 8699, Main Thread] WARNING: NS_ENSURE_TRUE(InitStaticMembers()) failed: file /builds/worker/workspace/obj-build/dist/include/mozilla/Preferences.h:129
[task 2022-05-20T04:17:09.052Z] 04:17:09     INFO -  PID 8699 | Assertion failure: pthread_mutex_destroy(&mMutex) == 0 (pthread_mutex_destroy failed), at /builds/worker/checkouts/gecko/xpcom/threads/RecursiveMutex.cpp:63
[task 2022-05-20T04:17:09.052Z] 04:17:09     INFO -  PID 8699 | #01: mozilla::RecursiveMutex::~RecursiveMutex() [xpcom/threads/RecursiveMutex.cpp:58]
[task 2022-05-20T04:17:09.052Z] 04:17:09     INFO -  PID 8699 | #02: gfxPlatformFontList::~gfxPlatformFontList() [gfx/thebes/gfxPlatformFontList.cpp:324]
[task 2022-05-20T04:17:09.052Z] 04:17:09     INFO -  PID 8699 | #03: gfxMacPlatformFontList::~gfxMacPlatformFontList() [gfx/thebes/gfxMacPlatformFontList.mm:1003]
[task 2022-05-20T04:17:09.053Z] 04:17:09     INFO -  PID 8699 | #04: gfxPlatform::Shutdown() [gfx/thebes/gfxPlatform.cpp:1221]
[task 2022-05-20T04:17:09.053Z] 04:17:09     INFO -  PID 8699 | #05: nsLayoutModuleDtor() [layout/build/nsLayoutModule.cpp:250]
[task 2022-05-20T04:17:09.053Z] 04:17:09     INFO -  PID 8699 | #06: nsComponentManagerImpl::Shutdown() [xpcom/components/nsComponentManager.cpp:862]
[task 2022-05-20T04:17:09.053Z] 04:17:09     INFO -  PID 8699 | #07: mozilla::ShutdownXPCOM(nsIServiceManager*) [xpcom/build/XPCOMInit.cpp:721]
[task 2022-05-20T04:17:09.053Z] 04:17:09     INFO -  PID 8699 | #08: XRE_XPCShellMain(int, char**, char**, XREShellData const*) [js/xpconnect/src/XPCShellImpl.cpp:1434]
[task 2022-05-20T04:17:09.054Z] 04:17:09     INFO -  PID 8699 | #09: main [js/xpconnect/shell/xpcshell.cpp:82]
Flags: needinfo?(hpeuckmann)
Keywords: regression
Regressed by: 1770423
Summary: Intermittent Assertion failure: pthread_mutex_destroy(&mMutex) == 0 (pthread_mutex_destroy failed), at /builds/worker/checkouts/gecko/xpcom/threads/RecursiveMutex.cpp:63 → Intermittent Assertion failure: pthread_mutex_destroy(&mMutex) == 0 (pthread_mutex_destroy failed), at /builds/worker/checkouts/gecko/xpcom/threads/RecursiveMutex.cpp:63 in docshell/test/unit/test_privacy_transition.js
Regressed by: 1681495
No longer regressed by: 1770423
Has Regression Range: --- → yes

I suspect neither bug 1770423 nor bug 1681495 is really at fault here; they're just getting unlucky, depending how timing works out during the test runs.

The real issue is that the browser is being launched and then shut down very quickly, and we end up trying to destroy the gfxPlatformFontList while the InitFontList thread (thread 7 in the comment 0 log) that runs early during startup on macOS is still busy. That thread calls gfxPlatformFontList::InitFontList(), which holds the gfxPlatformFontList lock; but then, while that is still running (and holding the lock), the shutdown process tries to destroy the mutex.

We should be able to fix this by explicitly joining the InitFontList thread at the beginning of the font-list destructor, if it is still in existence at that time. (In normal use, it'll be long gone, but a test that launches and immediately quits the browser could hit this, and that's what I think must be happening in CI.)

Assignee: nobody → jfkthame
Status: NEW → ASSIGNED
Pushed by jkew@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/6b90d439f932
Ensure the InitFontList thread is joined before destroying gfxPlatformFontList. r=lsalzman
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 102 Branch
Flags: needinfo?(hpeuckmann)

Will this fix Bug 1770423 as well?

Flags: needinfo?(jfkthame)

Yes, it should do - although the current fix isn't quite sufficient, it turns out; I'll be fixing it better in bug 1770832.

Flags: needinfo?(jfkthame)
No longer regressed by: 1681495
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: