Skip to content
This repository has been archived by the owner on Feb 22, 2024. It is now read-only.

Possible Memory Leak when Animating #54

Open
JU12000 opened this issue Dec 20, 2023 · 1 comment
Open

Possible Memory Leak when Animating #54

JU12000 opened this issue Dec 20, 2023 · 1 comment
Assignees

Comments

@JU12000
Copy link

JU12000 commented Dec 20, 2023

What is the issue
When running compfy with bspwm, any time I switch desktops or a window otherwise animates there is an increase in RAM usage. Killing the compfy process does not free the RAM. The additional RAM is not cache RAM, if I continue to switch desktops I can max out RAM usage and crash my computer.

What did you expect
Either animations cause temporary RAM usage or the additional RAM is freed properly when compfy is stopped.

Your configuration
I am still using the default example configuration from /etc/xdg/compfy.conf.example for compfy, copied to ~/.config/compfy/compfy.conf.example.

Relevant Images/Videos
No images or videos but I did wrap the compfy -b process in valgrind (using valgrind -s --leak-check=full compfy -b > valout 2>&1) and received the following. I think for this to really be useful I'd have to run it again having built compfy with different flags:

Valgrind Output
==2312== Memcheck, a memory error detector
==2312== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==2312== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==2312== Command: compfy -b
==2312==
==2325== Syscall param writev(vector[0]) points to uninitialised byte(s)
==2325==    at 0x4ECB484: writev (writev.c:26)
==2325==    by 0x4ABA3DD: UnknownInlinedFun (xcb_conn.c:296)
==2325==    by 0x4ABA3DD: _xcb_conn_wait.part.0 (xcb_conn.c:553)
==2325==    by 0x4ABA55F: UnknownInlinedFun (xcb_out.c:469)
==2325==    by 0x4ABA55F: _xcb_out_send (xcb_out.c:470)
==2325==    by 0x4ABA7D6: _xcb_out_flush_to (xcb_out.c:495)
==2325==    by 0x4ABC0BE: xcb_request_check (xcb_in.c:753)
==2325==    by 0x1150B6: ??? (in /usr/bin/compfy)
==2325==    by 0x4DE2CCF: (below main) (libc_start_call_main.h:58)
==2325==  Address 0x544d139 is 4,537 bytes inside a block of size 21,176 alloc'd
==2325==    at 0x4848953: calloc (vg_replace_malloc.c:1595)
==2325==    by 0x4ABCF35: xcb_connect_to_fd (xcb_conn.c:368)
==2325==    by 0x4ABD7BD: xcb_connect_to_display_with_auth_info (xcb_util.c:553)
==2325==    by 0x49A5612: _XConnectXCB (xcb_disp.c:78)
==2325==    by 0x49968EA: XOpenDisplay (OpenDis.c:129)
==2325==    by 0x114218: ??? (in /usr/bin/compfy)
==2325==    by 0x4DE2CCF: (below main) (libc_start_call_main.h:58)
==2325==
==2312==
==2312== HEAP SUMMARY:
==2312==     in use at exit: 16,520 bytes in 10 blocks
==2312==   total heap usage: 143 allocs, 133 frees, 24,624 bytes allocated
==2312==
==2312== LEAK SUMMARY:
==2312==    definitely lost: 0 bytes in 0 blocks
==2312==    indirectly lost: 0 bytes in 0 blocks
==2312==      possibly lost: 0 bytes in 0 blocks
==2312==    still reachable: 16,520 bytes in 10 blocks
==2312==         suppressed: 0 bytes in 0 blocks
==2312== Reachable blocks (those to which a pointer was found) are not shown.
==2312== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==2312==
==2312== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==2325==
==2325== Process terminating with default action of signal 15 (SIGTERM)
==2325==    at 0x4ECBBB7: epoll_wait (epoll_wait.c:30)
==2325==    by 0x4959AB5: ??? (in /usr/lib/libev.so.4.0.0)
==2325==    by 0x495C692: ev_run (in /usr/lib/libev.so.4.0.0)
==2325==    by 0x115F05: ??? (in /usr/bin/compfy)
==2325==    by 0x4DE2CCF: (below main) (libc_start_call_main.h:58)
==2325==
==2325== HEAP SUMMARY:
==2325==     in use at exit: 1,386,536 bytes in 8,927 blocks
==2325==   total heap usage: 1,395,603 allocs, 1,386,676 frees, 103,307,890 bytes allocated
==2325==
==2325== 80 bytes in 1 blocks are possibly lost in loss record 122 of 176
==2325==    at 0x4841828: malloc (vg_replace_malloc.c:442)
==2325==    by 0x4FF9DE7: RegisterStubCallbacks (GLdispatch.c:426)
==2325==    by 0x4FFA4CB: __glDispatchInit (GLdispatch.c:202)
==2325==    by 0x50730CB: __glXInit (libglx.c:2079)
==2325==    by 0x4004EED: call_init (dl-init.c:90)
==2325==    by 0x4004EED: call_init (dl-init.c:27)
==2325==    by 0x4004FDB: _dl_init (dl-init.c:137)
==2325==    by 0x401B2CF: ??? (in /usr/lib/ld-linux-x86-64.so.2)
==2325==    by 0x1: ???
==2325==    by 0x1FFF000C3E: ???
==2325==    by 0x1FFF000C45: ???
==2325==
==2325== 80 bytes in 1 blocks are possibly lost in loss record 123 of 176
==2325==    at 0x4841828: malloc (vg_replace_malloc.c:442)
==2325==    by 0x4FF9DE7: RegisterStubCallbacks (GLdispatch.c:426)
==2325==    by 0x4FFA6FE: __glDispatchRegisterStubCallbacks (GLdispatch.c:445)
==2325==    by 0x4CED07A: __libGLInit (libgl.c:48)
==2325==    by 0x4004EED: call_init (dl-init.c:90)
==2325==    by 0x4004EED: call_init (dl-init.c:27)
==2325==    by 0x4004FDB: _dl_init (dl-init.c:137)
==2325==    by 0x401B2CF: ??? (in /usr/lib/ld-linux-x86-64.so.2)
==2325==    by 0x1: ???
==2325==    by 0x1FFF000C3E: ???
==2325==    by 0x1FFF000C45: ???
==2325==
==2325== 1,234,512 bytes in 8,573 blocks are definitely lost in loss record 176 of 176
==2325==    at 0x4841828: malloc (vg_replace_malloc.c:442)
==2325==    by 0x4B48876: UnknownInlinedFun (pixman-region.c:213)
==2325==    by 0x4B48876: pixman_rect_alloc.lto_priv.1 (pixman-region.c:465)
==2325==    by 0x4B4BF05: pixman_op.lto_priv.1 (pixman-region.c:828)
==2325==    by 0x4B53BCE: pixman_region32_subtract (pixman-region.c:1987)
==2325==    by 0x14832B: ??? (in /usr/bin/compfy)
==2325==    by 0x11A985: ??? (in /usr/bin/compfy)
==2325==    by 0x11B8BB: ??? (in /usr/bin/compfy)
==2325==    by 0x49590CA: ev_invoke_pending (in /usr/lib/libev.so.4.0.0)
==2325==    by 0x495CD0F: ev_run (in /usr/lib/libev.so.4.0.0)
==2325==    by 0x115F05: ??? (in /usr/bin/compfy)
==2325==    by 0x4DE2CCF: (below main) (libc_start_call_main.h:58)
==2325==
==2325== LEAK SUMMARY:
==2325==    definitely lost: 1,234,512 bytes in 8,573 blocks
==2325==    indirectly lost: 0 bytes in 0 blocks
==2325==      possibly lost: 160 bytes in 2 blocks
==2325==    still reachable: 151,864 bytes in 352 blocks
==2325==         suppressed: 0 bytes in 0 blocks
==2325== Reachable blocks (those to which a pointer was found) are not shown.
==2325== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==2325==
==2325== Use --track-origins=yes to see where uninitialised values come from
==2325== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
==2325==
==2325== 1 errors in context 1 of 4:
==2325== Syscall param writev(vector[0]) points to uninitialised byte(s)
==2325==    at 0x4ECB484: writev (writev.c:26)
==2325==    by 0x4ABA3DD: UnknownInlinedFun (xcb_conn.c:296)
==2325==    by 0x4ABA3DD: _xcb_conn_wait.part.0 (xcb_conn.c:553)
==2325==    by 0x4ABA55F: UnknownInlinedFun (xcb_out.c:469)
==2325==    by 0x4ABA55F: _xcb_out_send (xcb_out.c:470)
==2325==    by 0x4ABA7D6: _xcb_out_flush_to (xcb_out.c:495)
==2325==    by 0x4ABC0BE: xcb_request_check (xcb_in.c:753)
==2325==    by 0x1150B6: ??? (in /usr/bin/compfy)
==2325==    by 0x4DE2CCF: (below main) (libc_start_call_main.h:58)
==2325==  Address 0x544d139 is 4,537 bytes inside a block of size 21,176 alloc'd
==2325==    at 0x4848953: calloc (vg_replace_malloc.c:1595)
==2325==    by 0x4ABCF35: xcb_connect_to_fd (xcb_conn.c:368)
==2325==    by 0x4ABD7BD: xcb_connect_to_display_with_auth_info (xcb_util.c:553)
==2325==    by 0x49A5612: _XConnectXCB (xcb_disp.c:78)
==2325==    by 0x49968EA: XOpenDisplay (OpenDis.c:129)
==2325==    by 0x114218: ??? (in /usr/bin/compfy)
==2325==    by 0x4DE2CCF: (below main) (libc_start_call_main.h:58)
==2325==
==2325== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)

I run compfy from bspwmrc

#! /bin/sh

pgrep -x compfy > /dev/null || compfy -b
pgrep -x sxhkd > /dev/null || sxhkd &
pgrep -x polybar > /dev/null || polybar example &

xrandr --output DisplayPort-1 --off
bspc monitor DisplayPort-1 -r

xsetroot -cursor_name left_ptr

bspc monitor -d 1 2 3 4 5 6 7 8 9 10

bspc config border_width 2
bspc config window_gap 12

bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true

Package Version: 1.7.2-1
Build Method: Arch makepkg
WM: bspwm

@nathansCodes
Copy link

I'm seeing something like that as well. When running compfy normally with the same build options as described in the readme, there's a steady increase in RAM usage. I don't exactly remember in what version if compfy I first saw this happening, but I wrote it in an issue somewhere

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants