Popcorn-desktop: Unusable desktop version when too much film is loaded (high CPU, GUI lag )

Created on 9 Oct 2020  Â·  9Comments  Â·  Source: popcorn-official/popcorn-desktop

Hello,

The desktop app become unusable when too much series is viewed (scrolled down).

Thanks for your work.
you are awesome

Operating System Version:
Debian SID gnome 3.38 kernel 5.8.10

Popcorn Time Version:
last 0.4.4 love in the time of corona

Download date:
dont remember

Download url (optional):
https://popcorntime.app/

Expected Behaviour

smoothness in scrolling, using it generaly, selecting the subtitle
...

Actual Behaviour

SLOW, high cpu usage, very slow GUI response
...

Steps to reproduce the behaviour

1 filter sci fi,
2 sort by date,
3 scroll down until 1990 films

Screenshot(s) of issue or error(s) logs of developer console (Windows/Linux: F12, MacOS: ⌘ + 0 ... then 'console' tab) (recommended)

[7706:7706:1009/003326.070921:ERROR:edid_parser.cc(102)] Too short EDID data: manufacturer id

DevTools listening on ws://127.0.0.1:9222/devtools/browser/37671ad6-e2ee-4365-be46-298c80173d4e
[7725:7725:1009/003326.409346:ERROR:sandbox_linux.cc(376)] InitializeSandbox() called with multiple threads in process gpu-process.
[7730:7741:1009/003326.947374:ERROR:nss_util.cc(283)] After loading Root Certs, loaded==false: NSS error code: -8018
(node:7748) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
[7725:7725:1009/003330.525690:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 1 times!
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
[7748:7748:1008/183715.557978:ERROR:child_process_sandbox_support_impl_linux.cc(79)] FontService unique font name matching request did not receive a response.
[7748:7748:1008/183715.559253:ERROR:child_process_sandbox_support_impl_linux.cc(79)] FontService unique font name matching request did not receive a response.
[7748:7748:1008/183715.638854:ERROR:child_process_sandbox_support_impl_linux.cc(79)] FontService unique font name matching request did not receive a response.
[7748:7748:1008/183715.640058:ERROR:child_process_sandbox_support_impl_linux.cc(79)] FontService unique font name matching request did not receive a response.
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
[7725:7757:1009/003854.672179:ERROR:latency_info.cc(139)] RenderWidgetHostImpl::OnSwapCompositorFrame, LatencyInfo vector size 115 is too big.
[7725:7757:1009/003901.771117:ERROR:latency_info.cc(139)] RenderWidgetHostImpl::OnSwapCompositorFrame, LatencyInfo vector size 165 is too big.
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
[7725:7725:1009/004047.085995:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 2 times!
[7725:7725:1009/004138.513587:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 3 times!
[7725:7725:1009/004138.530462:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 4 times!
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
[7725:7725:1009/004244.586747:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 5 times!
[7725:7725:1009/004244.594627:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 6 times!
[7725:7725:1009/004244.606638:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 7 times!
[7725:7725:1009/004244.611001:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 8 times!
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
(node:7748) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
[7725:7725:1009/004415.011787:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 9 times!
[7725:7725:1009/004415.024388:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 10 times!
[7725:7725:1009/004421.395066:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 11 times!
[7725:7725:1009/004421.407456:ERROR:gl_surface_presentation_helper.cc(259)] GetVSyncParametersIfAvailable() failed for 12 times!

bug

Most helpful comment

@Persei08 same here. @gyust ofc there is increased memory usage when you load 5000 movies in the list. All those are objects with meta and images and called functions etc being loaded in memory and the view must also be rendered through all that which I guess is the reason for some drop in ui performance. Cant replicate the high cpu usage though (on Windows), when I stop scrolling and it can stop doing stuff the cpu usage returns to zero.

EDIT: Other than the above I think the OP is on to something (while scrolling). The issue is with https://github.com/popcorn-official/popcorn-desktop/blob/development/src/app/lib/views/browser/list.js#L421-L424 which is what loads more items in the list. SCROLL_MORE (0.7 -> 70% of the list) becomes too big of a difference once you have a lot of items and the result is to make a lot more fetchMore() calls to the API than what's necessary. E.g you have 5000 items loaded, and you are no 3800 (76%) and you scroll (up/down doesnt matter) it will make a call for more items even if you have 1200 items below you (25pages +-), which ofc other than the unnecessary call to the API will also affect performance in the app until that call and all the other functions it runs complete. Maybe this should be changed to something with absolute values (e.g x * window.height) instead of a percentage to avoid this issue.

Thank You ! I will definitively check this improvement.

All 9 comments

I tried this with the same setting to Si-Fi and year descending, went back to 1924 with no problem or high cpu usage (using Windows 10 and dev build 438).

I did get some errors in console but not sure that that is caused by scrolling down.

Click here for console output

@kiriles90 I got your comment in an E-mail but it's not showing here,

missing posters once in a while, nothing out of the ordinary with your log @dutchy1001
@gyust try clean installing the latest dev build from ci.popcorntime.app and check if this still exists
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Like I said, "not sure that that is caused by scrolling down."

@gyust get the latest dev build from here

oh, sorry probably deleted and didnt notice
well.. that :)

@gyust those (node:128870) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit are chromium errors, but you have other errors i don't know.

For me (xubuntu 20.04) it make PT a bit slower an less responsive but I think I will have similar issue if i open a similar page in a browser.
Also it stop when it unload the view. Maybe some optimisation can be done.

Maybe try with latest build like @dutchy1001 suggested it will improve things a bit eventually

I tried this with the same setting to Si-Fi and year descending, went back to 1924 with no problem or high cpu usage (using Windows 10 and dev build 438).

I did get some errors in console but not sure that that is caused by scrolling down.

Click here for console output

I'm not using windows...

@Persei08 same here. @gyust ofc there is increased memory usage when you load 5000 movies in the list. All those are objects with meta and images and called functions etc being loaded in memory and the view must also be rendered through all that which I guess is the reason for some drop in ui performance. Cant replicate the high cpu usage though (on Windows), when I stop scrolling and it can stop doing stuff the cpu usage returns to zero.

EDIT: Other than the above I think the OP is on to something (while scrolling). The issue is with https://github.com/popcorn-official/popcorn-desktop/blob/development/src/app/lib/views/browser/list.js#L421-L424 which is what loads more items in the list. SCROLL_MORE (0.7 -> 70% of the list) becomes too big of a difference once you have a lot of items and the result is to make a lot more fetchMore() calls to the API than what's necessary. E.g you have 5000 items loaded, and you are no 3800 (76%) and you scroll (up/down doesnt matter) it will make a call for more items even if you have 1200 items below you (25pages +-), which ofc other than the unnecessary call to the API will also affect performance in the app until that call and all the other functions it runs complete. Maybe this should be changed to something with absolute values (e.g x * window.height) instead of a percentage to avoid this issue.

@Persei08 same here. @gyust ofc there is increased memory usage when you load 5000 movies in the list. All those are objects with meta and images and called functions etc being loaded in memory and the view must also be rendered through all that which I guess is the reason for some drop in ui performance. Cant replicate the high cpu usage though (on Windows), when I stop scrolling and it can stop doing stuff the cpu usage returns to zero.

EDIT: Other than the above I think the OP is on to something (while scrolling). The issue is with https://github.com/popcorn-official/popcorn-desktop/blob/development/src/app/lib/views/browser/list.js#L421-L424 which is what loads more items in the list. SCROLL_MORE (0.7 -> 70% of the list) becomes too big of a difference once you have a lot of items and the result is to make a lot more fetchMore() calls to the API than what's necessary. E.g you have 5000 items loaded, and you are no 3800 (76%) and you scroll (up/down doesnt matter) it will make a call for more items even if you have 1200 items below you (25pages +-), which ofc other than the unnecessary call to the API will also affect performance in the app until that call and all the other functions it runs complete. Maybe this should be changed to something with absolute values (e.g x * window.height) instead of a percentage to avoid this issue.

Thank You ! I will definitively check this improvement.

@gyust build 440 is out at ci.popcorntime.app :)

I'm on it ! Thanks a lot it is way faster and responsive.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

LuMagalhaes picture LuMagalhaes  Â·  4Comments

vRITHNER picture vRITHNER  Â·  4Comments

Villelmo picture Villelmo  Â·  4Comments

sorin-costea picture sorin-costea  Â·  3Comments

msamyelsheikh picture msamyelsheikh  Â·  4Comments