You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been tracking down a memory leak with a program I work on which uses skia-canvas. I tracked the issue to s-c and I seem to have narrowed it down to some difference in v1.0.1 vs. 1.0.0.
I've also narrowed down that it only occurs when:
Async toBuffer('png') is used (I haven't tested other output formats)
toBufferSync('png') with canvas.gpu = false
So using async version causes a leak regardless of GPU option, but using the sync version and GPU rendering does not.
More specifically, seems to be caused by 68bef1b. At the commit prior to that I cannot recreate it (detailed observations below). Why this has anything to do with async operation, I have no idea, but my results were clear and reproducible.
I'm attaching my test script (and a basic package file). It works with skia-canvas versions going back to at leat 0.9.25 and has no other dependencies. Async and GPU (for v1+) can be en/disabled on command line or with variables at the top. The image output is discarded, no files are written... there's a little running time counter to show the script is working. CTRL-C to exit.
Copied from the comments in the test script, here are my observations (memory counts are just for reference, YMMV on various systems of course).
// Observed memory (measurements from "active set" counter in Win10 Task Manger > Details):
//
// v1.0.1rc1 - 1.0.1:
// ASYNC on, GPU any == LEAK, steady increase until exit
// ASYNC off, GPU off == LEAK, "
// ASYNC off, GPU on == hovers ~65MB
// ---------------------------------------
// v1.0.0 - skia-canvas@9f35d190122e1aaa85469d2a74044ee026071e47
// ASYNC on, GPU off == hovers ~45MB
// ASYNC on, GPU on == hovers ~160MB
// ASYNC off, GPU off == hovers ~43MB
// ASYNC off, GPU on == hovers ~65MB
// ---------------------------------------
// v0.9.25 - v0.9.30:
// ASYNC on or off == climb to just < ~300MB then sharp reset to ~60MB, repeat
// ---------------------------------------
My test system is Windows 10, Intel CPU (no GPU), NVIDIA RTX2080Ti with Studio driver 536.40 (first reported by another user with AMD CPU, NVIDIA RTX3xxx on Win10). Node v18.16.0. I haven't tried it on a system with non-supported GPU yet, but that's on my list.
If anyone else cares to give the test script a shot with the different settings, that'd be great. I spent quite a while verifying my results, but ya never know. It can take a bit of time before the leak is obvious, patience and comparison to "non-leaky" results are helpful.
Please let me know if I can provide any further details.
Just FYI for others that considered holding off updating, because of this issue - test on your machines.
I wasn't able to reproduce the issue on Mac from the gist with async=on, gpu=any. Also we don't have an issue running in production on Windows machines with steady load generating about 17M images/day - we use async and gpu off.
Hello!
I've been tracking down a memory leak with a program I work on which uses skia-canvas. I tracked the issue to s-c and I seem to have narrowed it down to some difference in v1.0.1 vs. 1.0.0.
I've also narrowed down that it only occurs when:
toBuffer('png')
is used (I haven't tested other output formats)toBufferSync('png')
withcanvas.gpu = false
So using async version causes a leak regardless of GPU option, but using the sync version and GPU rendering does not.
More specifically, seems to be caused by 68bef1b. At the commit prior to that I cannot recreate it (detailed observations below). Why this has anything to do with async operation, I have no idea, but my results were clear and reproducible.
I'm attaching my test script (and a basic package file). It works with skia-canvas versions going back to at leat 0.9.25 and has no other dependencies. Async and GPU (for v1+) can be en/disabled on command line or with variables at the top. The image output is discarded, no files are written... there's a little running time counter to show the script is working. CTRL-C to exit.
Copied from the comments in the test script, here are my observations (memory counts are just for reference, YMMV on various systems of course).
My test system is Windows 10, Intel CPU (no GPU), NVIDIA RTX2080Ti with Studio driver 536.40 (first reported by another user with AMD CPU, NVIDIA RTX3xxx on Win10). Node v18.16.0. I haven't tried it on a system with non-supported GPU yet, but that's on my list.
If anyone else cares to give the test script a shot with the different settings, that'd be great. I spent quite a while verifying my results, but ya never know. It can take a bit of time before the leak is obvious, patience and comparison to "non-leaky" results are helpful.
Please let me know if I can provide any further details.
Thanks!
-Max
skia-canvas-mem-test.zip
PS. I also posted the script as a Gist, to see w/out a download. Not much to it.
https://gist.github.com/mpaperno/75284be4de0ef2006d876773507e6ddf
The text was updated successfully, but these errors were encountered: