martin rudalics writes: > Dima, just in case you're still around Hi. I'm around, just don't have time to work on emacs as much as I would like. > I now installed in master a "fix" for this, see also the discussion of > Bug#27816. > > Can you try it and also check whether it has any implications on the > memory leak problem? Thank you very much for tracking this down! I'm at the current HEAD (979797b9eca0ab009cc75a29765f998ec2aa1b45). This is after your fix was applied. I gathered data with 4 different sets of code: - Lucid widgets. At HEAD, but with the fix (commit d577d1609c6c9d11b6af30a33e02bb21ffa821fd) pulled out. This should trigger this bug. Confirmed. - Lucid widgets. At HEAD, with fix pulled out (same as above), but with the scroll bar turned off. This bug should not be triggered. Confirmed also. - Lucid widgets. At HEAD, without any changes. The fix is in place. The bug should not be triggered. Again, confirmed. The fix works. - GTK widgets. At HEAD, without any changes. For each of these cases, I started a daemon with dima@scrawny:~/emacs/src$ ./emacs -Q --daemon=tst Then I looped the client, repeatedly spawning and killing new frames (same as what I was doing when looking for leaks before) dima@scrawny:~/emacs/lib-src$ while true; do timeout 1 ./emacsclient -a '' -c -s tst; sleep 1; done; At the same time, I'd collect memory usage data: dima@scrawny:~$ while true; do ps -h -p PID -O rss; sleep 1; done | tee /tmp/logfile I'm attaching the gathered data for all the cases, and a plot made with this command: $ cat \ <(< /tmp/before.log awk '{print NR,"nofix_yesscroll",$2}') \ <(< /tmp/before.no.scroll.log awk '{print NR,"nofix_noscroll",$2}') \ <(< /tmp/after.yes.scroll.log awk '{print NR,"yesfix_yesscroll",$2}') \ <(< /tmp/after.yes.scroll.gtk.log awk '{print NR,"yesfix_yesscroll_gtk",$2}') \ | feedgnuplot --lines --dataid --domain --autolegend --xlabel 'frame index (2 seconds per frame)' --ylabel 'Memory consumed (kB)' So in the case of lucid widgets, you not only fixed the bug, but also massively plugged the memory leaks that were associated with new emacs frames. Awesome! The fix doesn't affect GTK, so that plot is just for reference. It's clearly still leaking, and its baseline memory usage is higher. I was thinking that GTK does a larger number of small allocations that are soon freed, and thus suffers from more fragmentation issues. To test that, I invoked malloc_trim(0) just after t=450 in the gtk run. This asks malloc to return the the kernel all the unused memory it's holding. And we see a 5MB drop. So the GTK leaks aren't as bad as they look. So yeah. Good fix and thanks.