There was a recent bug in GPU code where a DCHECK behind a non-released feature was crashing the gpu process and it would leave my dev ChromeOS in a bad state with a blank screen until I did a reboot.
I only noticed this because I compiled with `dcheck_always_on = true` and I also turned on `--enable-field-trial-config`. The code is now fixed, but I am still concerned about how the system handled this.
GpuProcessHost::RecordProcessCrash() has logic to keep a count of gpu crashes and will eventually crash chrome if the gpu is crashing too much. ChromeOS session_manager also keeps track of chrome crashes and will eventually restart chrome in safe-mode where the --enable-field-trial-config switch would be ignored, and the device should remain usable.
The problem on my cros eve device, was that browser process was not detecting that gpu process had exited, and was not calling RecordProcessCrash().
When I run this patch on linux-chrome, I can see that RecordProcessCrash() gets called as expected, and after 6 crashes, it crashes chrome as expected:
...
[826521:826521:0111/163016.433689:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=5
[826521:826521:0111/163016.433724:ERROR:gpu_process_host.cc(1355)] XXX RecordProcessCrash
[826521:826521:0111/163016.433757:FATAL:gpu_data_manager_impl_private.cc(448)] GPU process isn't usable. Goodbye.
Does anyone have ideas why this code is not working correctly for ChromeOS? In ChromeOS, the gpu process crashes, but nothing in BrowserChildProcessHostImpl::OnChildDisconnected() is noticing.