gecko-dev/tools
Jens Stutte b21e2d519a Bug 1726813: Ensure AppShutdown remains in sync with shutdown notifications in the parent process. r=nika,asuth a=RyanVM
The goal here is to ensure we can always rely on `AppShutdown::GetShutdownPhase` to be in sync with the "real" application status, mainly this was needed for xpcshell tests to not break if we add assertions on our shutdown state on some global singletons.

We keep the existing observer notification topics but force them (on the parent process) to be issued through the new `advanceShutdownPhase` function of the startup service using the `ShutdownPhase` enum. This way we can synchronize `AppShutdown`'s internal status accordingly.

Some further notes:

  # The `MOZ_ASSERT(AppShutdown::IsNoOrLegalShutdownTopic(aTopic));` in `NotifyObservers` helped a lot to identify missing cases. I think we should keep it in order to stay safe.
  # Introducing the `cenum IDLShutdownPhase` helps to keep the knowledge about the mapping from shutdown phases to observer topics exclusively inside AppShutdown.cpp. Still callers must know what they do in order to choose a proper phase, of course.
  # However we must be aware that `AppShutdown` this way can be kept in sync with the shutdown notifications only in the parent process and that `GetCurrentShutdownPhase` might not give the correct result in child processes. We might want to file a follow up bug that adds some asserts to avoid improper use of `AppShutdown` functions in child processes (but I do not want to make this patch bigger as needed to solve the blocking dependency for bug 1697972).
  # The socket process is one example of a child process that "overloads" shutdown topics. I was wondering if it is the right call to use the very same topic names here to request shutdown to the socket process or if it should have its own topics. Those topics triggered the assert and thus I had to disable it for child processes, for now.
  # This goes together with the more general approach to define process type specific shutdown phases (and hence mappings to topics) as drafted very roughly in bug 1697745.
  # This patch seemed to trigger a known intermittent more often, thus the change here in `ServiceWorkerManager`.

Differential Revision: https://phabricator.services.mozilla.com/D124350
2021-09-15 07:25:29 +00:00
..
bloatview
browsertime Bug 1714641: Remove usages of vendored "backports" code r=ahal,perftest-reviewers 2021-06-09 15:48:52 +00:00
clang-tidy
code-coverage
compare-locales Bug 1659691 - Update cross-channel algorithm to not replay history. r=firefox-build-system-reviewers,releng-reviewers,bhearsum,mhentges 2021-06-17 18:52:58 +00:00
coverity
crashreporter Bug 1718819 - Export gBreakpadEnabled symbol to fix minidump suppression mechanism. r=gsvelto 2021-07-10 14:17:31 +00:00
fuzzing Bug 1726813: Ensure AppShutdown remains in sync with shutdown notifications in the parent process. r=nika,asuth a=RyanVM 2021-09-15 07:25:29 +00:00
github-sync
infer
jprof
leak-gauge
lint Bug 1715650: Add linter for detecting COM initialization; r=linter-reviewers,andi 2021-07-06 14:05:42 +00:00
moztreedocs Bug 1714788 - Fixed more Sphinx warnings in 'mach doc' r=sylvestre DONTBUILD 2021-06-09 20:27:09 +00:00
performance
phabricator Bug 1696251 - Pass MachCommandBase object as first argument for Mach Commands. r=mhentges,remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers 2021-05-17 16:15:58 +00:00
power Bug 1711828 - Cap printed Watts to 6 characters. r=xpcom-reviewers,mccr8 2021-05-19 21:58:12 +00:00
profiler Bug 1724770 - Fix a format string for AppendPrintf in SharedLibraryInfo::GetInfoForSelf()". r=gerald, a=RyanVM 2021-08-14 06:27:38 +00:00
quitter
rb Bug 1696531: fix dmd.py and related tools to support python 3, r=bhearsum 2021-06-14 15:31:42 +00:00
rewriting Bug 1686071 - Add PasswordRulesParser module. r=dimi 2021-06-09 13:54:09 +00:00
rusttests
sanitizer/docs Bug 1717002 - document how to download tsan toolchains. r=andi DONTBUILD 2021-06-23 17:08:00 +00:00
tryselect Bug 1722913 - Port remaining tests on Linux to WebRender. r+a=RyanVM 2021-08-04 20:59:49 +00:00
update-packaging
update-programs
update-verify
vcs Bug 1696251 - Pass MachCommandBase object as first argument for Mach Commands. r=mhentges,remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers 2021-05-17 16:15:58 +00:00
mach_commands.py Bug 1716257 - make mach npm use the same version of node, r=mhentges 2021-06-14 19:21:47 +00:00
moz.build