From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dima Kogan Newsgroups: gmane.emacs.bugs Subject: bug#21556: 25.0.50; Memory leak in emacs -Q with lucid (font) Date: Sun, 08 Nov 2015 18:55:06 -0800 Message-ID: <87si4fevat.fsf@secretsauce.net> References: <87zj082t34.fsf@gnu.org> <83io6wffm9.fsf@gnu.org> <87lhbqdhjp.fsf@secretsauce.net> <83d1x2eugp.fsf@gnu.org> <87oagl376v.fsf@secretsauce.net> <560BB690.3020804@yandex.ru> <87612q3oxj.fsf@secretsauce.net> <560D34CB.5010900@yandex.ru> <874mia2zjh.fsf@secretsauce.net> <560E106C.6010103@yandex.ru> <87r3kdguf9.fsf@secretsauce.net> <83wpu4zbe6.fsf@gnu.org> <87io5ogo8f.fsf@secretsauce.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1447037784 12227 80.91.229.3 (9 Nov 2015 02:56:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 9 Nov 2015 02:56:24 +0000 (UTC) Cc: dmantipov@yandex.ru, 21556@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Nov 09 03:56:11 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1Zvccs-00060R-EI for geb-bug-gnu-emacs@m.gmane.org; Mon, 09 Nov 2015 03:56:10 +0100 Original-Received: from localhost ([::1]:49740 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvccr-0004B2-Um for geb-bug-gnu-emacs@m.gmane.org; Sun, 08 Nov 2015 21:56:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47469) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvccn-0004Ax-NG for bug-gnu-emacs@gnu.org; Sun, 08 Nov 2015 21:56:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zvcck-0005Yv-FZ for bug-gnu-emacs@gnu.org; Sun, 08 Nov 2015 21:56:05 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:39091) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvcck-0005Yr-Bz for bug-gnu-emacs@gnu.org; Sun, 08 Nov 2015 21:56:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Zvcck-0005dd-2L for bug-gnu-emacs@gnu.org; Sun, 08 Nov 2015 21:56:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dima Kogan Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 Nov 2015 02:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21556 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 21556-submit@debbugs.gnu.org id=B21556.144703773021624 (code B ref 21556); Mon, 09 Nov 2015 02:56:01 +0000 Original-Received: (at 21556) by debbugs.gnu.org; 9 Nov 2015 02:55:30 +0000 Original-Received: from localhost ([127.0.0.1]:58031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZvccE-0005ci-2Q for submit@debbugs.gnu.org; Sun, 08 Nov 2015 21:55:30 -0500 Original-Received: from out1-smtp.messagingengine.com ([66.111.4.25]:51603) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Zvcbs-0005c7-SR for 21556@debbugs.gnu.org; Sun, 08 Nov 2015 21:55:28 -0500 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 4B085205D3 for <21556@debbugs.gnu.org>; Sun, 8 Nov 2015 21:55:08 -0500 (EST) Original-Received: from frontend2 ([10.202.2.161]) by compute3.internal (MEProxy); Sun, 08 Nov 2015 21:55:08 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=secretsauce.net; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=USVOs 36FrAyd38Yvu7fUlhb1xvU=; b=CIBLugiUSAhBMP1/b0UrF1tKY09yhtcCUVRrq xcMrZKlpeaqztY5glFZcMn6cKclgumSM6KXEtwVylLw9FwUkQ8IvCVVIT02AZOab ozQkDYP0lZQ+7e9UY7j4p3pahaP4WVK5t+BNpdzO//CU+D6kM4gS/SmkDaNwi4eQ ALq6jM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=smtpout; bh=USVOs36FrAyd38Yvu7fUlhb1xvU=; b=SGEdj 5GGI/sGDXozcAY45Bj7r5NXIBb/lu07dWlzusbFOaUNHXZDtz6Ww2xdh4Jp+oIV/ vCvu5L/H1aRuC6VYAraMnlhuvgoA41Q3TSYoPRb+zJ83kqWJVu1lO1ltSpnNqC+r 6GvQHwZ24hP/74A9utIZnJy/xDahxtpI8rtv/4= X-Sasl-enc: cy7xK4w41z8gkoQyfqjx9ovkhX5vXRRPwtade9rEFkbB 1447037707 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 DC6E3680125; Sun, 8 Nov 2015 21:55:07 -0500 (EST) Original-Received: from ip6-localhost ([::1] helo=shorty) by shorty.local with esmtp (Exim 4.84) (envelope-from ) id 1Zvcbq-0003Ry-FR; Sun, 08 Nov 2015 18:55:06 -0800 In-reply-to: <87io5ogo8f.fsf@secretsauce.net> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:108596 Archived-At: --=-=-= Content-Type: text/plain Dima Kogan writes: > Eli Zaretskii writes: > >> It's a long time since we last spoke about this, so maybe I've lost >> the focus. > > I'm forgetting what's happening here too, so trying to finish this bug > now. Hi Eli. It looks like Dmitry is busy. What do you think about merging the patch now before we both forget what this is all about? When Dmitry gets time to comment, we can revisit. The concern wasn't that the patch was "wrong", but rather that it maybe is a workaround for a deeper issue instead of a fix for the issue itself. I'm attaching the latest version of the patch. It takes Dmitry's suggestion for avoiding an extra local variable, and adds some comments --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-compact_font_cache_entry-now-properly-checks-for-mar.patch >From 6a0c91e750cdab83a63f0ef03ea037b1e6d8d381 Mon Sep 17 00:00:00 2001 From: Dima Kogan Date: Tue, 29 Sep 2015 02:19:35 -0700 Subject: [PATCH] compact_font_cache_entry() now properly checks for marked fonts * src/alloc.c (compact_font_cache_entry): When checking for marked fonts we were looking at a font entity object. However the entity could contain a list of font objects that need to be checked, which we now do. This resolves a memory leak Fixes: bug#21556 --- src/alloc.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 3ab2a6e..2cdc581 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5303,10 +5303,31 @@ compact_font_cache_entry (Lisp_Object entry) are not marked too. But we must be sure that nothing is marked within OBJ before we really drop it. */ for (i = 0; i < size; i++) - if (VECTOR_MARKED_P (XFONT_ENTITY (AREF (XCDR (obj), i)))) - break; + { + Lisp_Object objlist; + + if (VECTOR_MARKED_P (XFONT_ENTITY (AREF (XCDR (obj), i)))) + break; + + objlist = AREF (AREF (XCDR (obj), i), FONT_OBJLIST_INDEX); + for (; CONSP (objlist); objlist = XCDR (objlist)) + { + Lisp_Object val = XCAR (objlist); + struct font *font = XFONT_OBJECT (val); + + if (! NILP (AREF (val, FONT_TYPE_INDEX)) && + VECTOR_MARKED_P(font)) + break; + } + if (CONSP (objlist)) + // we left the for() early because we found marked + // font + break; + } if (i == size) + // we didn't leave the for() early because no marked fonts + // or entities were found. drop = 1; } if (drop) -- 2.1.4 --=-=-=--