Bug 197056 - [GTK] Behaves in weird ways when under "low memory"
Summary: [GTK] Behaves in weird ways when under "low memory"
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: Other
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-04-18 07:18 PDT by Bastien Nocera
Modified: 2019-04-25 04:08 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bastien Nocera 2019-04-18 07:18:10 PDT
Opening a new page when the system is low enough on memory leads to a "Blank page" instead of opening the "Most visited" page. The progress bar that shows the progress loading the new tab is stuck at around 10%, the URL bar is empty, and closing the tab takes up to 5 seconds, which points to the WebProcesses not responding (or not being started).

epiphany-3.32.1.2-1.fc30.x86_64
webkit2gtk3-2.24.1-1.fc30.x86_64

In epiphany, the process-model is one-secondary-process-per-web-view, and max-processes to 5. The problem can be reproduced by opening loads of tabs until the problems occur. There's no warnings or anything else in the journal.

I can provide more information if there is some runtime debug I can enable to make WebKit spit out information from the WebProcess, such as their stdout/stderr.
Comment 1 Carlos Garcia Campos 2019-04-22 04:59:37 PDT
Would it be possible to get a bt of the WebProcess when that happens?
Comment 2 Michael Catanzaro 2019-04-22 09:06:19 PDT
My theory is there's not enough memory to launch a new web process, so we can't show an error page because we need a new web process to show an error page.

Or: could be the web process is being launched, crashes due to OOM, and then gets relaunched again continuously.
Comment 3 Bastien Nocera 2019-04-25 03:01:47 PDT
(In reply to Michael Catanzaro from comment #2)
> My theory is there's not enough memory to launch a new web process, so we
> can't show an error page because we need a new web process to show an error
> page.
> 
> Or: could be the web process is being launched, crashes due to OOM, and then
> gets relaunched again continuously.

It's not crashing or getting killed due to OOM, because I'd see that in the journal. It's (probably) silently not able to launch new WebProcesses, because of resource limitation. I have no way to know which resource is missing because I have no way to make WebKit spit out information about this failure.

(In reply to Carlos Garcia Campos from comment #1)
> Would it be possible to get a bt of the WebProcess when that happens?

It's not a crash or a hang. If it were a hang, I don't know how I'd identify which one of the processes was associated with the the tab in question.
Comment 4 Carlos Garcia Campos 2019-04-25 03:22:45 PDT
We have:

g_error("Unable to fork a new child process: %s", error->message);

when g_subprocess_launcher_spawnv fails.
Comment 5 Bastien Nocera 2019-04-25 04:08:43 PDT
(In reply to Carlos Garcia Campos from comment #4)
> We have:
> 
> g_error("Unable to fork a new child process: %s", error->message);
> 
> when g_subprocess_launcher_spawnv fails.

That didn't show up in my logs either. Could the controlling process be running out of file descriptors instead?