gecko-dev/gfx/ipc
Doug Thayer bad3183238 Bug 1594577 - Record hangs which precede forced shutdowns r=froydnj
In short - if a user forcibly terminates the browser because it seems
to be permanently hung, we currently do not get a change to record the
hang. This is unfortunate, because these likely represent the most
egregious hangs in terms of user frustration. This patch seeks to
address that.

If a hang exceeds 8192ms (the current definition of a "permahang" in
existing BHR terms), then we decide to immediately persist it to disk,
in case we never get a chance to return to the main thread and
submit it. On the next start of the browser, we read the file from
disk on a background thread, and just submit it using the normal
mechanism.

Regarding the handling of the file itself, I tried to do the simplest
thing I could - as far as I can tell there is no standard simple
serialization mechanism available directly to C++ in Gecko, so I just
serialized it by hand. I didn't take any special care with endianness
or anything as I can't think of a situation in which we really care
at all about these files being transferable between architectures. I
directly used PR_Write / PR_Read instead of doing something fancy
like memory mapping the file, because I don't think performance is a
critical concern here and it offers a simple protection against
reading out of bounds.

Differential Revision: https://phabricator.services.mozilla.com/D52566

--HG--
extra : moz-landing-system : lando
2019-11-21 22:41:00 +00:00
..
CompositorOptions.h Bug 1589022 - Partial support for moving a tab between windows with different APZ enablement. r=nika,tnikkel 2019-11-18 23:13:55 +00:00
CompositorSession.cpp Bug 1533296 - Make WebRender error as to Fallback to Compositor rendering during disabling WebRender on android r=nical 2019-06-19 16:14:56 +00:00
CompositorSession.h Bug 1533296 - Make WebRender error as to Fallback to Compositor rendering during disabling WebRender on android r=nical 2019-06-19 16:14:56 +00:00
CompositorWidgetVsyncObserver.cpp
CompositorWidgetVsyncObserver.h
CrossProcessPaint.cpp Bug 1592849 - Add MOZ_LOG support to CrossProcessPaint. r=jya 2019-10-31 00:08:47 +00:00
CrossProcessPaint.h Bug 1571341 - Default to using DocumentRelative for the root document being drawn, since callers generally expect coordinates relative to the document. r=rhunt 2019-08-14 10:23:39 +00:00
D3DMessageUtils.cpp
D3DMessageUtils.h
GPUChild.cpp Bug 1594577 - Record hangs which precede forced shutdowns r=froydnj 2019-11-21 22:41:00 +00:00
GPUChild.h Bug 1571711 - Factorize crash handling out of the various process IPC classes r=froydnj 2019-08-15 12:06:51 +00:00
GPUParent.cpp Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
GPUParent.h Bug 1561179 - P4: Create PVideoBridge between RDDProcess and GPUProcess. r=mattwoodrow 2019-11-04 03:41:57 +00:00
GPUProcessHost.cpp Bug 1563139 - Remove StaticPrefs.h. r=glandium 2019-07-26 01:10:23 +00:00
GPUProcessHost.h Bug 1550422 - P2. add shared pref serializer/deserializer to GPU process. r=kmag 2019-05-26 02:33:12 +00:00
GPUProcessImpl.cpp Bug 1580268: Sandbox GPU process on OpenBSD with pledge() r=gcp 2019-11-07 09:56:07 +00:00
GPUProcessImpl.h
GPUProcessListener.h
GPUProcessManager.cpp Bug 1561179 - P4: Create PVideoBridge between RDDProcess and GPUProcess. r=mattwoodrow 2019-11-04 03:41:57 +00:00
GPUProcessManager.h Bug 1561179 - P4: Create PVideoBridge between RDDProcess and GPUProcess. r=mattwoodrow 2019-11-04 03:41:57 +00:00
GfxMessageUtils.h Bug 1561179 - P1: Enable the creation of multiple VideoBridgeParent actors. r=mattwoodrow 2019-11-04 03:41:45 +00:00
GraphicsMessages.ipdlh Bug 1586396 - Add WebGPUThreading mock r=jgilbert 2019-10-15 21:57:37 +00:00
InProcessCompositorSession.cpp Bug 1533296 - Make WebRender error as to Fallback to Compositor rendering during disabling WebRender on android r=nical 2019-06-19 16:14:56 +00:00
InProcessCompositorSession.h Bug 1533296 - Make WebRender error as to Fallback to Compositor rendering during disabling WebRender on android r=nical 2019-06-19 16:14:56 +00:00
PGPU.ipdl Bug 1561179 - P4: Create PVideoBridge between RDDProcess and GPUProcess. r=mattwoodrow 2019-11-04 03:41:57 +00:00
PVsyncBridge.ipdl
RemoteCompositorSession.cpp Bug 1533296 - Make WebRender error as to Fallback to Compositor rendering during disabling WebRender on android r=nical 2019-06-19 16:14:56 +00:00
RemoteCompositorSession.h Bug 1533296 - Make WebRender error as to Fallback to Compositor rendering during disabling WebRender on android r=nical 2019-06-19 16:14:56 +00:00
SharedDIB.cpp Bug 1479960 - Get rid of base::SharedMemory::handle. r=froydnj 2019-08-14 22:48:22 +00:00
SharedDIB.h
SharedDIBSurface.cpp
SharedDIBSurface.h
SharedDIBWin.cpp Bug 1479960 - Get rid of base::SharedMemory::handle. r=froydnj 2019-08-14 22:48:22 +00:00
SharedDIBWin.h
VsyncBridgeChild.cpp
VsyncBridgeChild.h
VsyncBridgeParent.cpp
VsyncBridgeParent.h
VsyncIOThreadHolder.cpp
VsyncIOThreadHolder.h
moz.build Bug 1570009 - Part 3 : Added GPU Process testing to the framework. r=bobowen 2019-10-14 15:26:47 +00:00