Commit graph

212 commits

Author SHA1 Message Date
kriswright
54b4354d8e Bug Bug 1882552 - Add logging to QoS signals r=xpcom-reviewers,barret
Adds logging for Qos overrides, changes, override removals, setting shutdown, and refusing QoS changes due to shutdown.

Differential Revision: https://phabricator.services.mozilla.com/D203271
2024-03-08 17:25:25 +00:00
Gabriele Svelto
aa43fa218e Bug 1831092 - Use the new pull-based API for all crash annotations and remove the global annotations table r=jgilbert,necko-reviewers,media-playback-reviewers,profiler-reviewers,win-reviewers,padenot,handyman,afranchuk,valentin,alwu,sotaro
This changes comes with several different refactorings all rolled into one,
unfotunately I couldn't find a way to pull them apart:
- First of all annotations now can either recorded (that is, we copy the value
  and have the crash reporting code own the copy) or registered. Several
  annotations are changed to use this functionality so that we don't need to
  update them as their value change.
- The code in the exception handler is modified to read the annotations from
  the mozannotation_client crate. This has the unfortunate side-effect that
  we need three different bits of code to serialize them: one for annotations
  read from a child process, one for reading annotations from the main process
  outside of the exception handler and one for reading annotations from the
  main process within the exception handler. As we move to fully
  out-of-process crash reporting the last two methods will go away.
- The mozannotation_client crate now doesn't record annotation types anymore.
  I realized as I was working on this that storing types at runtime has two
  issues: the first one is that buggy code might change the type of an
  annotation (that is record it under two different types at two different
  moments), the second issue is that types might become corrupt during a
  crash, so better enforce them at annotation-writing time. The end result is
  that the mozannotation_* crates now only store byte buffers, track the
  format the data is stored in (null-terminated string, fixed size buffer,
  etc...) but not the type of data each annotation is supposed to contain.
- Which brings us to the next change: concrete types for annotations are now
  enforced when they're written out. If an annotation doesn't match the
  expected type it's skipped. Storing an annotation with the wrong type will
  also trigger an assertion in debug builds.

Differential Revision: https://phabricator.services.mozilla.com/D195248
2024-03-04 10:24:43 +00:00
Andrew McCreight
7b3569e8d5 Bug 1859535, part 1 - Remove dead code from nsPluginHost. r=dom-core,sefeng
Technically IncrementChromeEpoch is called, but the value is never used.

Also remove some unused includes.

Differential Revision: https://phabricator.services.mozilla.com/D191188
2023-11-20 17:44:19 +00:00
Andrew McCreight
d15bd0078d Bug 1859530 - Remove unused HangMonitorParent fields. r=gsvelto
mBrowserCrashDumpIds and mBrowserCrashDumpHashLock were used to record
NPAPI plugin hangs, but that code is long gone.

Differential Revision: https://phabricator.services.mozilla.com/D192964
2023-11-07 18:27:13 +00:00
Emilio Cobos Álvarez
c7d8e549f3 Bug 1848357 - Cleanup layer observer handling. r=mconley,gfx-reviewers,bradwerth
This seems to work, and turns out I need to fix this before bug 1847584,
because the epoch handling breaks with those patches in the case
customize mode sets display: none on browser elements.

Instead of dealing with epochs, just always report the last "has layers"
state to BrowserParent. This is both simpler and more reliable (there
were a couple hacks in WebRenderBridgeParent to make sure we notified
even though a transaction failed).

AsyncTabSwitcher pretty much already deals with this correctly because
it already needs to deal with browsers that already have layers, we only
had to loosen some assertions for potentially previous messages which
are fine.

Differential Revision: https://phabricator.services.mozilla.com/D187203
2023-09-01 17:09:27 +00:00
kriswright
51331a8ca5 Bug 1834629 - Set main thread QoS Priority from another thread. r=mccr8
This bug uses the existing process hang messaging infrastructure to raise priorities on main threads. To ensure reduced latency, we also increase the priority of ProcessHangMon threads. We also address an edge-case bug where flipping the QoS prefs during use might lead to a tab getting stuck at the wrong priority.

Due to increasing the priority of the hang monitor thread, we may see some increase in its utilization on MacOS during high CPU load. I'm not sure the extent of how this may impact the browser, but as it makes the thread "faster" it may be more responsive than some other threads during this case.

I tested thread responsiveness by using the stress tool and dispatching various numbers of worker threads, up to 250. During these tests, even when other parts of firefox were less responsive under stress, tab switching appeared to remain snappy and responsive.

I captured some updated power profiles using the change. Profile where pref flipped off during use: https://share.firefox.dev/46BksO3 (Note that we start with the prefs on, then we flip off the prefs half way and repeat the same behavior to observe the fix to the previous bug that left tabs trapped in the background)

Profile with the pref fully enabled: https://share.firefox.dev/46EBIC7

In regards to the edge case, to avoid spurious tab wakeups, we won't reinstate normal thread priority when pref is disabled until the tab is interacted with again.

Differential Revision: https://phabricator.services.mozilla.com/D182787
2023-07-14 16:13:00 +00:00
Narcis Beleuzu
060e6a5a23 Backed out changeset 70e3969301b9 (bug 1834629) for bustages on ProcessHangMonitor.cpp . CLOSED TREE 2023-07-13 21:00:46 +03:00
kriswright
e6c30dd889 Bug 1834629 - Set main thread QoS Priority from another thread. r=mccr8
This bug uses the existing process hang messaging infrastructure to raise priorities on main threads. To ensure reduced latency, we also increase the priority of ProcessHangMon threads. We also address an edge-case bug where flipping the QoS prefs during use might lead to a tab getting stuck at the wrong priority.

Due to increasing the priority of the hang monitor thread, we may see some increase in its utilization on MacOS during high CPU load. I'm not sure the extent of how this may impact the browser, but as it makes the thread "faster" it may be more responsive than some other threads during this case.

I tested thread responsiveness by using the stress tool and dispatching various numbers of worker threads, up to 250. During these tests, even when other parts of firefox were less responsive under stress, tab switching appeared to remain snappy and responsive.

I captured some updated power profiles using the change. Profile where pref flipped off during use: https://share.firefox.dev/46BksO3 (Note that we start with the prefs on, then we flip off the prefs half way and repeat the same behavior to observe the fix to the previous bug that left tabs trapped in the background)

Profile with the pref fully enabled: https://share.firefox.dev/46EBIC7

In regards to the edge case, to avoid spurious tab wakeups, we won't reinstate normal thread priority when pref is disabled until the tab is interacted with again.

Differential Revision: https://phabricator.services.mozilla.com/D182787
2023-07-13 15:44:03 +00:00
Nika Layzell
0b6551ba20 Bug 1824465 - Part 4: Make PProcessHangMonitor refcounted, r=ipc-reviewers,mccr8
Differential Revision: https://phabricator.services.mozilla.com/D173719
2023-04-19 22:10:07 +00:00
Noemi Erli
d637b3f05e Backed out 24 changesets (bug 1824465) for causing failures in nsISupportsImpl.cpp CLOSED TREE
Backed out changeset a5c8f22b7170 (bug 1824465)
Backed out changeset b551b655ac72 (bug 1824465)
Backed out changeset 0e6768a6419c (bug 1824465)
Backed out changeset fb115ebb7fe0 (bug 1824465)
Backed out changeset aaa7a2c8aa3b (bug 1824465)
Backed out changeset 7ef94bfa90b3 (bug 1824465)
Backed out changeset a4238fd6b86f (bug 1824465)
Backed out changeset 3a88e4cfbe45 (bug 1824465)
Backed out changeset 40c2467d3162 (bug 1824465)
Backed out changeset 8f900395c72c (bug 1824465)
Backed out changeset 92e4c6e4d73c (bug 1824465)
Backed out changeset 445c5d5d9661 (bug 1824465)
Backed out changeset de51ed5389d9 (bug 1824465)
Backed out changeset 72049d72bcb6 (bug 1824465)
Backed out changeset 126773c2427a (bug 1824465)
Backed out changeset 886e76bc80be (bug 1824465)
Backed out changeset a69a851411f0 (bug 1824465)
Backed out changeset 703599cf6189 (bug 1824465)
Backed out changeset 11ecb78ebc15 (bug 1824465)
Backed out changeset 563255aaa1e1 (bug 1824465)
Backed out changeset d1bf32c2a6c6 (bug 1824465)
Backed out changeset ef28b2777487 (bug 1824465)
Backed out changeset a2015d354bb1 (bug 1824465)
Backed out changeset 31d6b53fdc6a (bug 1824465)
2023-04-06 01:50:55 +03:00
Nika Layzell
172d1b089d Bug 1824465 - Part 4: Make PProcessHangMonitor refcounted, r=ipc-reviewers,mccr8
Differential Revision: https://phabricator.services.mozilla.com/D173719
2023-04-05 21:33:37 +00:00
Artur Iunusov
e62ca4e480 Bug 1711740 - Consider interrupting JS to unload layers, r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D167026
2023-02-04 19:07:55 +00:00
Jens Stutte
26b6f353fb Bug 1777198 - Improve IPCShutdownState annotation. r=gsvelto
Differential Revision: https://phabricator.services.mozilla.com/D155814
2022-09-01 09:43:37 +00:00
Sandor Molnar
99c83b6427 Backed out changeset 6cebcfdd9245 (bug 1777198) for causing build bustages. CLOSED TREE 2022-09-01 11:49:48 +03:00
Jens Stutte
6d8eda177a Bug 1777198 - Improve IPCShutdownState annotation. r=gsvelto
Differential Revision: https://phabricator.services.mozilla.com/D155814
2022-09-01 08:08:32 +00:00
Fabrice Desré
c50cb528fc Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-03 16:39:41 +00:00
Andreea Pavel
3ccd75af8d Backed out changeset b9d2965591b9 (bug 1761040) for landing with wrong author CLOSED TREE DONTBUILD 2022-08-03 18:55:00 +03:00
Andreea Pavel
fdb7cb2ecd Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-03 15:27:43 +00:00
Jens Stutte
3ca1fb43c7 Bug 1777198 - Cancel content JS execution on quit-application-granted or on normal content process shutdown. r=smaug
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.

Depends on D150539

Differential Revision: https://phabricator.services.mozilla.com/D150598
2022-08-02 14:02:40 +00:00
Sandor Molnar
646227cd7d Backed out 2 changesets (bug 1777198) for causing build bustage in dom/ipc/ProcessHangMonitor.cpp CLOSED TREE
Backed out changeset 472fe2d7af01 (bug 1777198)
Backed out changeset 0b9cb5b44360 (bug 1777198)
2022-08-02 14:08:45 +03:00
Jens Stutte
f9302b34cc Bug 1777198 - Cancel content JS execution on quit-application-granted or on normal content process shutdown. r=smaug
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.

Depends on D150539

Differential Revision: https://phabricator.services.mozilla.com/D150598
2022-08-02 09:08:23 +00:00
Andreea Pavel
89d63c91e6 Backed out changeset a907159a482f (bug 1761040) for causing build bustages on a CLOSED TREE 2022-08-02 04:59:08 +03:00
Fabrice Desré
0f4ac7ad97 Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-02 00:49:41 +00:00
smolnar
aad7ba8a33 Backed out 2 changesets (bug 1777198) for causing leakcheck failures. CLOSED TREE
Backed out changeset 1bf944a0828d (bug 1777198)
Backed out changeset 05afbf32acea (bug 1777198)
2022-07-18 15:54:46 +03:00
Jens Stutte
416238d1b5 Bug 1777198 - Cancel content JS execution on quit-application-granted or on normal content process shutdown. r=smaug
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.

Depends on D150539

Differential Revision: https://phabricator.services.mozilla.com/D150598
2022-07-18 10:56:41 +00:00
Kagami Sascha Rosylight
6abe98f452 Bug 1769290 - Part 8: Apply mozilla-js-handle-rooted-typedef against dom/canvas,crypto,fetch,gamepad,geolocation,indexedDB,ipc r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D148281
2022-06-05 20:54:59 +00:00
Jens Stutte
349c893775 Bug 1762604: Further audit ContentParent::ActorDestroy to avoid crashes if run late during shutdown. r=smaug
If run late in shutdown, we cannot rely on any of our normal infrastructure to be still in place. This patch collects a series of additional guards to avoid potential crashes.

Not all of them might ever been hit, but there is no harm in additional checks as this is not performance critical at all.

Differential Revision: https://phabricator.services.mozilla.com/D143687
2022-04-14 10:06:17 +00:00
Randell Jesup
258c7cbfe7 Bug 1207753 - dom misc thread-safety annotations r=hsivonen,smaug
Differential Revision: https://phabricator.services.mozilla.com/D130598
2022-03-25 13:32:35 +00:00
Csoregi Natalia
8183a2d0cd Backed out changeset 22dd9ee7e4a4 (bug 1207753) for causing bustage on ProcessHangMonitor.cpp. CLOSED TREE 2022-03-22 01:31:19 +02:00
Randell Jesup
b18c3e4ebb Bug 1207753 - dom misc thread-safety annotations r=hsivonen,smaug,media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D130598
2022-03-21 23:02:23 +00:00
Randell Jesup
fcaf70841e Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 18:47:08 +00:00
Noemi Erli
2390d257e6 Backed out changeset 12a59e5a50bf (bug 1207753) for causing build bustage CLOSED TREE 2022-03-16 18:32:51 +02:00
Randell Jesup
4b033a5256 Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 16:16:14 +00:00
Butkovits Atila
927ad62c6a Backed out changeset a68ee4b09f92 (bug 1207753) for causing Hazard bustages. CLOSED TREE 2022-03-16 14:38:14 +02:00
Randell Jesup
7d4b5fae04 Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 12:01:14 +00:00
Nika Layzell
acedd82927 Bug 1734739 - Part 3: Stop providing pids in places where it's not needed/used, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D128220
2021-11-24 17:56:01 +00:00
Kagami Sascha Rosylight
deeaa7ead1 Bug 1723050 - Part 16: Replace typedef by using in dom/ipc/ r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D121314
2021-08-09 13:37:28 +00:00
David Parks
e37ad4b27a Bug 1698959: Remove HangData union and SLOW_SCRIPT enum value r=dthayer,geckoview-reviewers,agi
HangData is the only member left in the union and SLOW_SCRIPT is the only member left in the enum.
This patch also migrates the one remaining (invalid) use of PLUGIN_HANG in testing to work as a SLOW_SCRIPT instead.

Differential Revision: https://phabricator.services.mozilla.com/D113885
2021-05-01 01:12:46 +00:00
David Parks
8256d4a828 Bug 1682030 - Remove NPAPI plugin reporting from HangMonitor r=mconley
Removes the methods for handling NPAPI plugin process hangs, as we are eliminating all NPAPI behavior.

Differential Revision: https://phabricator.services.mozilla.com/D107155
2021-04-06 19:28:17 +00:00
David Parks
cd6fd9bfe5 Bug 1682030 - Remove more dead NPAPI code from dom/plugins and related spots. r=jmathies,mconley,emilio
This is the second of two patches in this series that removes a large amount of now dead code from dom/plugins as part of removing all NPAPI plugin support.

Differential Revision: https://phabricator.services.mozilla.com/D107150
2021-04-06 19:28:15 +00:00
David Parks
311a1c73dd Bug 1682030 - Remove some dead NPAPI code from dom/plugins and related spots. r=jmathies,mconley,ipc-reviewers,mccr8
This is the first of two patches in this series that removes a large amount of now dead code from dom/plugins as part of removing all NPAPI plugin support.  This patch removes re-entrancy guards we have for Windows OnPaint messages, as the guards were only needed for windowed plugins.

Differential Revision: https://phabricator.services.mozilla.com/D107144
2021-04-06 19:28:12 +00:00
Csoregi Natalia
d68661e2cc Backed out 24 changesets (bug 1682030) for bustage on ProcessHangMonitor.cpp and nsCOMPtr.h. CLOSED TREE
Backed out changeset 5b1644096477 (bug 1682030)
Backed out changeset 35ae60eea3c7 (bug 1682030)
Backed out changeset 3eca76a6d639 (bug 1682030)
Backed out changeset 259c45447ad9 (bug 1682030)
Backed out changeset de9222dc8c31 (bug 1682030)
Backed out changeset 2986c7e14349 (bug 1682030)
Backed out changeset 6af3410bdb93 (bug 1682030)
Backed out changeset 42b0621c2927 (bug 1682030)
Backed out changeset 366e3e371858 (bug 1682030)
Backed out changeset 9adb2865adea (bug 1682030)
Backed out changeset 6af6af3bc03a (bug 1682030)
Backed out changeset da94a91b35ae (bug 1682030)
Backed out changeset 9143da258d0e (bug 1682030)
Backed out changeset 5e20d06952ba (bug 1682030)
Backed out changeset 6253d7e1ce7d (bug 1682030)
Backed out changeset 0e06ddeea3e2 (bug 1682030)
Backed out changeset 9c58d57c9e44 (bug 1682030)
Backed out changeset e90edd89430e (bug 1682030)
Backed out changeset 5861b8166b10 (bug 1682030)
Backed out changeset b4b88cdc7993 (bug 1682030)
Backed out changeset b80054e9805c (bug 1682030)
Backed out changeset 580d857674c0 (bug 1682030)
Backed out changeset a9cdf93c2662 (bug 1682030)
Backed out changeset 9c9c8b4998e2 (bug 1682030)
2021-04-06 03:54:12 +03:00
David Parks
db44f3a7f4 Bug 1682030 - Remove NPAPI plugin reporting from HangMonitor r=mconley
Removes the methods for handling NPAPI plugin process hangs, as we are eliminating all NPAPI behavior.

Differential Revision: https://phabricator.services.mozilla.com/D107155
2021-04-05 23:48:41 +00:00
David Parks
30be5dc789 Bug 1682030 - Remove more dead NPAPI code from dom/plugins and related spots. r=jmathies,mconley,emilio
This is the second of two patches in this series that removes a large amount of now dead code from dom/plugins as part of removing all NPAPI plugin support.

Differential Revision: https://phabricator.services.mozilla.com/D107150
2021-04-05 23:48:39 +00:00
David Parks
3987158be1 Bug 1682030 - Remove some dead NPAPI code from dom/plugins and related spots. r=jmathies,mconley,ipc-reviewers,mccr8
This is the first of two patches in this series that removes a large amount of now dead code from dom/plugins as part of removing all NPAPI plugin support.  This patch removes re-entrancy guards we have for Windows OnPaint messages, as the guards were only needed for windowed plugins.

Differential Revision: https://phabricator.services.mozilla.com/D107144
2021-04-05 23:48:35 +00:00
Doug Thayer
f75d49d54f Bug 1702516 - Remove all terminateGlobal uses r=kmag
This never actually worked, because nothing ever listened to the notification
sent in XPCJSContext (kill-content-script-sandbox). We're also removing the
"Temporarily disable extension" button in the slow addon notification, which
was the primary caller of this - however, that's in a separate patch.

Differential Revision: https://phabricator.services.mozilla.com/D110583
2021-04-05 16:00:09 +00:00
Olli Pettay
d1b5dfa384 Bug 1647433 - Fix use of GetTopLevelContentDocument in HangMonitorChild::InterruptCallback, r=peterv
No need to access top level doc. Disabling bfcaching on any subframe prevents bfcaching of the top level page.

(There may be other issues around stopping slow scripts in Fission.)

Differential Revision: https://phabricator.services.mozilla.com/D109400
2021-03-26 19:13:22 +00:00
Simon Giesecke
613e20d136 Bug 1184468 - Use nsBaseHashtable::Values. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D108587
2021-03-24 17:56:49 +00:00
Doug Thayer
14caf9713d Bug 1678411 - Ensure we show slow script notification for fission iframes r=smaug
See bug for more details, but effectively the decision is to show the same
notification which we would normally show for hung pages if an iframe hangs,
but only do so if the user is trying to interact with content hung by that
iframe. This should accomplish that.

Differential Revision: https://phabricator.services.mozilla.com/D107933
2021-03-11 17:41:19 +00:00
Simon Giesecke
ad01a10a3b Bug 1634281 - Use nsTHashMap instead of nsDataHashtable. r=xpcom-reviewers,necko-reviewers,jgilbert,nika,valentin
Note that this patch only transforms the use of the nsDataHashtable type alias
to a directly equivalent use of nsTHashMap. It does not change the specification
of the hash key type to make use of the key class deduction that nsTHashMap
allows for in some cases. That can be done in a separate step, but requires more
attention.

Differential Revision: https://phabricator.services.mozilla.com/D106008
2021-03-10 10:47:47 +00:00