Reduce the frequency of connection-related renderer crashes (see #3664)

- Use ResetWithReason to report intentional browser side disconnects of
  existing Mojo connections. Don't retry for those disconnects.
- Add set_disconnect_with_reason_and_result_handler in Chromium/Mojo to
  expose the MojoResult code for failed connections, allowing
  identification of connections that are intentionally unbound on the
  browser side.
- Optimize initial reconnect delay for known disconnect cases such as
  navigation-related and bfcache changes.
- Remove connection timeout and increase total connection deadline by
  100% to further reduce crash rates on slower machines.
- Only fail fatally for main frames (not sub-frames) in cases where the
  connection fails or disconnects for unknown reasons.
- Improve connection debug logging when running with
  `--enable-logging --vmodule=*frame*=1 --log-file=C:\temp\log.txt`
This commit is contained in:
Marshall Greenblatt
2024-11-22 16:12:52 -05:00
parent a02960b2fc
commit 7f253f83a2
11 changed files with 691 additions and 190 deletions

View File

@@ -86,6 +86,16 @@ std::string GetFrameDebugString(
std::string GetFrameDebugString(
const content::GlobalRenderFrameHostToken& global_token);
// Used in combination with ResetWithReason() to report mojo connection
// disconnect reasons. |kNoReason| (0) is the default when a mojo connection
// disconnects without a specified reason.
enum class ResetReason : uint32_t {
kNoReason,
kDeleted,
kDetached,
kExcluded,
};
} // namespace frame_util
#endif // CEF_LIBCEF_COMMON_FRAME_UTIL_H_