mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 19:59:17 +00:00
LibWebView: Don't re-create WebContent proceses when repeatedly crashing
Serenity handles this in the SystemServer already, but the simplest place to put this logic is the ViewImplementation base class. This is trivial to see when running Ladybird without SERENTIY_SOURCE_DIR set, or set improperly.
This commit is contained in:
parent
bdeccf8844
commit
5fd2fc70e5
Notes:
sideshowbarker
2024-07-17 04:49:48 +09:00
Author: https://github.com/ADKaster
Commit: 5fd2fc70e5
Pull-request: https://github.com/SerenityOS/serenity/pull/19095
2 changed files with 18 additions and 0 deletions
|
@ -19,6 +19,12 @@ ViewImplementation::ViewImplementation()
|
|||
m_backing_store_shrink_timer = Core::Timer::create_single_shot(3000, [this] {
|
||||
resize_backing_stores_if_needed(WindowResizeInProgress::No);
|
||||
}).release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
m_repeated_crash_timer = Core::Timer::create_single_shot(1000, [this] {
|
||||
// Reset the "crashing a lot" counter after 1 second in case we just
|
||||
// happen to be visiting crashy websites a lot.
|
||||
this->m_crash_count = 0;
|
||||
}).release_value_but_fixme_should_propagate_errors();
|
||||
}
|
||||
|
||||
WebContentClient& ViewImplementation::client()
|
||||
|
@ -304,6 +310,15 @@ void ViewImplementation::handle_web_content_process_crash()
|
|||
{
|
||||
dbgln("WebContent process crashed!");
|
||||
|
||||
++m_crash_count;
|
||||
constexpr size_t max_reasonable_crash_count = 5U;
|
||||
if (m_crash_count >= max_reasonable_crash_count) {
|
||||
dbgln("WebContent has crashed {} times in quick succession! Not restarting...", m_crash_count);
|
||||
m_repeated_crash_timer->stop();
|
||||
return;
|
||||
}
|
||||
m_repeated_crash_timer->restart();
|
||||
|
||||
create_client();
|
||||
VERIFY(m_client_state.client);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue