From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dima Kogan Newsgroups: gmane.emacs.devel Subject: Re: Debugging emacs memory management Date: Tue, 15 Sep 2015 12:27:53 -0700 Message-ID: <87vbbbxz2e.fsf@secretsauce.net> References: <87zj8l3r32.fsf@secretsauce.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1442345297 5610 80.91.229.3 (15 Sep 2015 19:28:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 15 Sep 2015 19:28:17 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 15 21:28:06 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Zbvtd-0000Jl-SR for ged-emacs-devel@m.gmane.org; Tue, 15 Sep 2015 21:28:06 +0200 Original-Received: from localhost ([::1]:45389 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zbvtd-0002tz-7x for ged-emacs-devel@m.gmane.org; Tue, 15 Sep 2015 15:28:05 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59540) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbvtY-0002tc-RE for emacs-devel@gnu.org; Tue, 15 Sep 2015 15:28:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZbvtU-0003UK-Qn for emacs-devel@gnu.org; Tue, 15 Sep 2015 15:28:00 -0400 Original-Received: from out3-smtp.messagingengine.com ([66.111.4.27]:33674) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbvtU-0003U8-Ii for emacs-devel@gnu.org; Tue, 15 Sep 2015 15:27:56 -0400 Original-Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id C04C32049B for ; Tue, 15 Sep 2015 15:27:54 -0400 (EDT) Original-Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Tue, 15 Sep 2015 15:27:54 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=secretsauce.net; h=content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=F0wWK GNpofojPRF6xzwuusNju58=; b=SK4al39neDV2UEz9/PyWWsvq67oG2ax6HrguY dZCabvJtawTlr3natRUSIcf+eYdSAcEAwo/Rs1ltCFC30ANa+JKD+wYTBl1mWIAF k3yrzMKO6p4sUD9brohiU3bsTBQHBgI3rFcfGGzJCiZt/9xQ+FaTvTSrx0szealZ vdGzdo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=smtpout; bh=F0wWKGNpofojPRF6xzwuusNju58=; b=d7SZK LIS910UKKLuBC0GLzO3LFegIRDRFPSsgxFRvf6zfGSLhZyywhee5cAhIoZ8D+YsE 3bnP/vCn/Aeprij7yz64ikhoThdyfO9scfHrbl66jehHfO1a/mVZbAL9r29ovYCK GEfsbDa9fGelher0uSxBHAXaoVt6eQ1OGledvg= X-Sasl-enc: 0UyjxZ6ZugS3zr0RuBNDydMANWKz4L1H6Gdgfv/FmJSQ 1442345274 Original-Received: from shorty.local (50-1-153-216.dsl.dynamic.fusionbroadband.com [50.1.153.216]) by mail.messagingengine.com (Postfix) with ESMTPA id 33F4FC00022 for ; Tue, 15 Sep 2015 15:27:54 -0400 (EDT) Original-Received: from ip6-localhost ([::1] helo=shorty) by shorty.local with esmtp (Exim 4.84) (envelope-from ) id 1ZbvtR-0000Z4-2r for emacs-devel@gnu.org; Tue, 15 Sep 2015 12:27:53 -0700 In-reply-to: <87zj8l3r32.fsf@secretsauce.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.111.4.27 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:189987 Archived-At: --=-=-= Content-Type: text/plain Dima Kogan writes: > I'm running emacs snapshots from the latest git, usually as a > long-running daemon. For a few months now I've had to restart my emacs > session every week or so because it eats all my RAM, and cycling emacs > is the only way to get the RAM back. Hi. I'm resurrecting this thread. My issues have never gone away, and I've been unhappily living with this bug for at least a year now. Yesterday I FINALLY found a sequence of steps to reliably reproduce the issue, so debugging became possible. Sequence: 1. emacs --daemon 2. Repeat: 1. pop up a number of emacs clients 2. kill clients I do this in zsh: while true; do for i in `seq 10`; do timeout 5 emacsclient.emacs-snapshot -a '' -c & ; done; sleep 10; done While this runs, the memory consumption can be monitored with while (true) { ps -h -p `pidof emacs-snapshot-lucid` -O rss; sleep 1 } It looked like something in my .emacs.d/init.el was causing the leak, and a bisection found it: winner-mode Apparently winner-mode keeps a list of all active frames, and it doesn't clean dead frames off of this list, so a daemon workflow where frames are often created/removed causes it to keep references to data structures that are no longer active, preventing the gc from cleaning them up. I'm attaching a patch that fixes this in winner-mode. I'm also attaching a plot of memory usage over time, as the clients are opened and closed. As you can see, patching winner-mode makes a HUGE difference. However another observation is that even with an empty init.el this sequence still leaks memory, albeit more slowly. It looks like a bug also. I have some malloc tracing set up with backtrace reporting, but there're a LOT of allocations, and I haven't figured out a good way to sort through them yet. Another observation is that the gc never really gives back the memory. If I run the unpatched winner-mode for a while, then manually clear out the dead frames from the list and (garbage-collect), the memory usage (as reported by the OS) does not go back down. What does happen is that the memory usage stays flat for a while when clients are created/deleted, and starts climbing again much later. So the memory IS freed, but emacs never gives it back to the OS. I'll run with this for a while, and report back if I have any more patches. Hopefully this fixes my main issue; we'll see. Any further insight welcome. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-winner-no-longer-holds-on-to-dead-frames.patch >From 28a605a074afcde758ef0a2b1a7b5756f85b787a Mon Sep 17 00:00:00 2001 From: Dima Kogan Date: Tue, 15 Sep 2015 11:53:54 -0700 Subject: [PATCH] winner no longer holds on to dead frames This prevents a potentially massive memory leak --- lisp/winner.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/winner.el b/lisp/winner.el index fdf6213..ecb009b 100644 --- a/lisp/winner.el +++ b/lisp/winner.el @@ -177,6 +177,11 @@ You may want to include buffer names such as *Help*, *Apropos*, ;; Called whenever the window configuration changes ;; (a `window-configuration-change-hook'). (defun winner-change-fun () + + ;; cull dead frames + (setq winner-modified-list + (cl-remove-if-not 'frame-live-p winner-modified-list)) + (unless (or (memq (selected-frame) winner-modified-list) (/= 0 (minibuffer-depth))) (push (selected-frame) winner-modified-list))) -- 2.1.4 --=-=-= Content-Type: application/pdf Content-Disposition: attachment; filename=emacs_memory_consumption.pdf Content-Transfer-Encoding: base64 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 IXOhmgnw15Edf4MyV+b5Vp6hT0jHg0iZ9Vy+221oTRjgjugAuWhdUsNlzVwxM5wVDeIHZSxHOCN3 ZwENEYic/Gk3jfNiIRFSY2roT92tJupirb5j1WfRrqw8y4oKcQvi4TMnQkq8+YNGTuYxkhRn8RMk 5cXJLNVSSVmWPku1VFQrXc/45dCVt2yFWQdCr4Dp18m557lLVusDcpv3zmSdseKsyVJnsRBybP6u QB3eTnLLUDqnG+u2yOpCyKpD9YMjqw4lU5hYjodQVnZ1IJRTiwfUMV9yTI5SDK88b4Ay7TszJlmM tZCV0vClP6X8++v/ASl1OnAKZW5kc3RyZWFtCmVuZG9iago0IDAgb2JqCiAgIDc0NjcKZW5kb2Jq CjIgMCBvYmoKPDwKICAgL0V4dEdTdGF0ZSA8PAogICAgICAvYTAgPDwgL0NBIDEgL2NhIDEgPj4K ICAgPj4KICAgL0ZvbnQgPDwKICAgICAgL2YtMC0wIDUgMCBSCiAgID4+Cj4+CmVuZG9iago2IDAg b2JqCjw8IC9UeXBlIC9QYWdlCiAgIC9QYXJlbnQgMSAwIFIKICAgL01lZGlhQm94IFsgMCAwIDc5 MiA2MTIgXQogICAvQ29udGVudHMgMyAwIFIKICAgL0dyb3VwIDw8CiAgICAgIC9UeXBlIC9Hcm91 cAogICAgICAvUyAvVHJhbnNwYXJlbmN5CiAgICAgIC9JIHRydWUKICAgICAgL0NTIC9EZXZpY2VS R0IKICAgPj4KICAgL1Jlc291cmNlcyAyIDAgUgo+PgplbmRvYmoKNyAwIG9iago8PCAvTGVuZ3Ro IDggMCBSCiAgIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgIC9MZW5ndGgxIDEwNTE2Cj4+CnN0cmVh bQp4nOV6e3wURbZ/VZ2u7ume92Qmz0lmJpNJCOEREwIEUMYIyMPFIA8BFw0QIuKDIKJgYBNgSYjg AkICIsIIATEgRmQxwYi6Rh4G1LsS7+WKFxUQXSNGLy5uSCq/0zMEcR/39+fv8/vc7lQ/qrur6pz6 nu85pyaEEkI0UkaAeGc+PL34zLJtdxLiPkEImzrz8ce85IHEXEI8PQihoqj4/ofn9Xt8DiE+vCd7 7n9oUdGjVZ5YvN6L33hnz5peSHut9uHzU1jXfzZWmOrlxYQkm/A+ZfbDjy08+n5MMt5n6t88NHfm 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 Ahz4gkOAHWW154FtCVgLwSLAbIrmZgEmfNsUDUYBmg1UAQZ8zSBAcYJcCBI+lBABLsBaEOiNbJz1 BmoDIoDW08IVT9OM/x828v96AP/jlvh/AOt85sgKZW5kc3RyZWFtCmVuZG9iago4IDAgb2JqCiAg IDc2MDgKZW5kb2JqCjkgMCBvYmoKPDwgL0xlbmd0aCAxMCAwIFIKICAgL0ZpbHRlciAvRmxhdGVE ZWNvZGUKPj4Kc3RyZWFtCnicXZPNbtswEITvfAoe00MgmabIBBAMFMnFh/6gbh9AIleOgJgSaPng ty+HE6RADxI/LXeHs8SqeTm+HtO86eZnXsJJNj3NKWa5LrccRI9ynpPaGR3nsH181Xe4DKtqSvHp ft3kckzTovpeN7/K5nXLd/3wNS6jfFFa6+ZHjpLndNYPf15ODJ1u6/ouF0mbbtXhoKNMRe7bsH4f LqKbWvx4jGV/3u6Ppexfxu/7KtrU7x0thSXKdR2C5CGdRfVte9D9NB2UpPjfnjUsGafwNmTVG6S2 bVlUvzeVy1KY8X2Nd+QOvCfvwZZswY7swJ7swU/kJ/COvCtsY+WyqN5R30HfMe5qfCKXRnpPbx7e /DP5Gcxaj1pPbx7eHM9yOMvRj4MfQz8GftzI+Ag/1LfQN9Q30O/YY4ceHeMOcctzbfXMc109V8gC P7xDjzv01PFVJzAngBl3iBv2a9CvoY6BjqNnB8+WORY5ljkWOZaaFpodfXb1fti7r73zbsuCwfiY AIwIZvlz9sIt5zJ2deDrvGHS5iSf/8S6rKiqz19M69J7CmVuZHN0cmVhbQplbmRvYmoKMTAgMCBv YmoKICAgNDE2CmVuZG9iagoxMSAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IKICAgL0Zv bnROYW1lIC9KQlVBWlYrRGVqYVZ1U2FucwogICAvRm9udEZhbWlseSAoRGVqYVZ1IFNhbnMpCiAg IC9GbGFncyAzMgogICAvRm9udEJCb3ggWyAtMTAyMCAtNDE1IDE2ODAgMTE2NiBdCiAgIC9JdGFs aWNBbmdsZSAwCiAgIC9Bc2NlbnQgOTI4CiAgIC9EZXNjZW50IC0yMzUKICAgL0NhcEhlaWdodCAx MTY2CiAgIC9TdGVtViA4MAogICAvU3RlbUggODAKICAgL0ZvbnRGaWxlMiA3IDAgUgo+PgplbmRv YmoKNSAwIG9iago8PCAvVHlwZSAvRm9udAogICAvU3VidHlwZSAvVHJ1ZVR5cGUKICAgL0Jhc2VG b250IC9KQlVBWlYrRGVqYVZ1U2FucwogICAvRmlyc3RDaGFyIDMyCiAgIC9MYXN0Q2hhciAxMjEK ICAgL0ZvbnREZXNjcmlwdG9yIDExIDAgUgogICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwog ICAvV2lkdGhzIFsgMzE3IDAgMCAwIDAgMCAwIDAgMzkwIDM5MCAwIDAgMCAzNjAgMzE3IDMzNiA2 MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiAwIDAgMCAwIDAgMCAwIDAgMCA2ODYg MCAwIDYzMSAwIDAgMCAwIDAgMCA1NTcgODYyIDc0OCA3ODcgMCAwIDAgMCA2MTAgMCAwIDAgMCA2 MTAgMCAwIDAgMCAwIDAgMCA2MTIgMCA1NDkgNjM0IDYxNSAwIDYzNCA2MzMgMjc3IDAgNTc5IDI3 NyA5NzQgNjMzIDYxMSA2MzQgMCA0MTEgNTIwIDM5MiA2MzMgMCA4MTcgMCA1OTEgXQogICAgL1Rv VW5pY29kZSA5IDAgUgo+PgplbmRvYmoKMSAwIG9iago8PCAvVHlwZSAvUGFnZXMKICAgL0tpZHMg WyA2IDAgUiBdCiAgIC9Db3VudCAxCj4+CmVuZG9iagoxMiAwIG9iago8PCAvQ3JlYXRvciAoY2Fp cm8gMS4xNC4yIChodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcpKQogICAvUHJvZHVjZXIgKGNhaXJv IDEuMTQuMiAoaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnKSkKPj4KZW5kb2JqCjEzIDAgb2JqCjw8 IC9UeXBlIC9DYXRhbG9nCiAgIC9QYWdlcyAxIDAgUgo+PgplbmRvYmoKeHJlZgowIDE0CjAwMDAw MDAwMDAgNjU1MzUgZiAKMDAwMDAxNjg5NiAwMDAwMCBuIAowMDAwMDA3NTgyIDAwMDAwIG4gCjAw MDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwNzU1OSAwMDAwMCBuIAowMDAwMDE2NDE5IDAwMDAwIG4g CjAwMDAwMDc2OTEgMDAwMDAgbiAKMDAwMDAwNzkwNSAwMDAwMCBuIAowMDAwMDE1NjA4IDAwMDAw IG4gCjAwMDAwMTU2MzEgMDAwMDAgbiAKMDAwMDAxNjEyNSAwMDAwMCBuIAowMDAwMDE2MTQ4IDAw MDAwIG4gCjAwMDAwMTY5NjEgMDAwMDAgbiAKMDAwMDAxNzA4OSAwMDAwMCBuIAp0cmFpbGVyCjw8 IC9TaXplIDE0CiAgIC9Sb290IDEzIDAgUgogICAvSW5mbyAxMiAwIFIKPj4Kc3RhcnR4cmVmCjE3 MTQyCiUlRU9GCg== --=-=-=--