[webkit-help] [EXTERNAL] Re: Debugging Memory Leaks in WebKit

Ryosuke Niwa rniwa at webkit.org
Mon Apr 5 14:31:19 PDT 2021

On Mon, Apr 5, 2021 at 9:15 AM Joe Liccini <joliccin at microsoft.com> wrote:

> Thanks for the tips, Simon.
> I haven't forgotten about the trace collection; I plan on getting to it
> soon. I have been continuing to read through source code and had some
> additional questions.
> I am reading up on WebKit architecture
> <https://github.com/WebKit/WebKit/blob/main/Introduction.md>and found
> this note:
> *WebContent process* - This process loads & runs code loaded from
> websites. Each tab in Safari typically has its own WebContent process.
> This is important to keep each tab responsive and protect websites from one
> another.
> From my testing and personal debugging, I am observing this behavior:
>    1. User initiates a new tab (i.e., user clicks on + New Tab button in
>    Safari), it gets a *new *WebKitWebProcess
>    2. User clicks a button that runs window.open('
>    https://www.microsoft.com', '_blank'), the new page is added to the
>    *same* WebKitWebProcess, yet different tab. (i.e., they share the same
>    process and therefore process memory).
>    - Is this behavior accurate and representative or am I missing
>    something?
> Yes, this behavior is expected because window.open will return a
WindowProxy object, which allows bidirectional DOM API access.

In addition, I found some memory pressure handling code here:
> https://github.com/WebKit/WebKit/blob/dbed638e9975b00d206546a3f0294db75ff0f0c0/Source/WTF/wtf/MemoryPressureHandler.cpp#L129-L152
>    - Is this the code that triggers this banner in Safari?

>    - If so, how does the grouping of tabs / webpages in a single
>    WebKitWebProcess affect this banner?
>    - Is WebKit able to determine which of the webpages within the process
>    is causing memory pressure?
>    - Is the presence of this banner a clear giveaway that the leak is
>    indeed from the WebContents and not within the WebKit engine itself?
> +Chris for these questions.

- R. Niwa

> ------------------------------
> *From:* Simon Fraser <simon.fraser at apple.com>
> *Sent:* Thursday, March 25, 2021 3:31 PM
> *To:* Joe Liccini <joliccin at microsoft.com>
> *Cc:* webkit-help at lists.webkit.org <webkit-help at lists.webkit.org>
> *Subject:* [EXTERNAL] Re: [webkit-help] Debugging Memory Leaks in WebKit
> The first step should be to figure out whether the memory is being
> triggered by page content; you can do that by inspecting the JS Heap via
> Web Inspector:
> https://webkit.org/blog/6425/memory-debugging-with-web-inspector/
> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwebkit.org%2Fblog%2F6425%2Fmemory-debugging-with-web-inspector%2F&data=04%7C01%7Cjoliccin%40microsoft.com%7Cf7bfe7749af349ebd5e008d8efddc917%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637523083745299393%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LLDRWu%2BVkBK0gaXXDz2XrNEE8FiXLAdSjpc4juEfRY8%3D&reserved=0>
> For code-level memory debugging, these are good starting places:
> https://trac.webkit.org/wiki/Memory%20Use
> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftrac.webkit.org%2Fwiki%2FMemory%2520Use&data=04%7C01%7Cjoliccin%40microsoft.com%7Cf7bfe7749af349ebd5e008d8efddc917%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637523083745309349%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Xj28GHBQphvRYyrrJAR9E62bM6XLruQm3aRLjudcPXs%3D&reserved=0>
> https://trac.webkit.org/wiki/InvestigatingLeaksAndBloat
> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftrac.webkit.org%2Fwiki%2FInvestigatingLeaksAndBloat&data=04%7C01%7Cjoliccin%40microsoft.com%7Cf7bfe7749af349ebd5e008d8efddc917%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637523083745309349%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=uh%2BWDwsQa7GFHi8Npraa33H9A5fSyx1CAg3%2FDoIMfvU%3D&reserved=0>
> Once you know a bit more about the memory growth, report back and we can
> direct you.
> Simon
> On Mar 25, 2021, at 3:03 PM, Joe Liccini <joliccin at microsoft.com> wrote:
> Hi WebKit Help,
> I am investigating what I believe is a memory leak in WebKit that is
> manifesting as high memory usage for Office 365 online apps (Word, Excel,
> PowerPoint, etc.) for Safari users.
> I have downloaded and built the source of WebKit, and by opening and
> closing a document or two, can very quickly get the memory utilization of
> WebKitWebProcess beyond 1 GB.
> I was wondering if anyone here has experience investigating memory leaks
> on WebKit? I can attach via the debugger but I'm not familiar enough with
> the code or tools to best identify common sources of memory leaks.
> Thanks!
> Joe
> _______________________________________________
> webkit-help mailing list
> webkit-help at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-help
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-help/attachments/20210405/5eeec38a/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 117738 bytes
Desc: not available
URL: <http://lists.webkit.org/pipermail/webkit-help/attachments/20210405/5eeec38a/attachment-0001.png>

More information about the webkit-help mailing list