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: Mon, 05 Oct 2015 11:19:14 -0700 Message-ID: <877fn118m5.fsf@secretsauce.net> References: <87zj8l3r32.fsf@secretsauce.net> <87vbbbxz2e.fsf@secretsauce.net> <55F998C8.4080203@cs.ucla.edu> <87vbb492ea.fsf@secretsauce.net> <83twqonub8.fsf@gnu.org> <87oagw885o.fsf@secretsauce.net> <837fnknlbm.fsf@gnu.org> <834mionkdg.fsf@gnu.org> <87fv1p232b.fsf@secretsauce.net> <83wpv1zr4q.fsf@gnu.org> <87egh9205z.fsf@secretsauce.net> <83r3l9zowx.fsf@gnu.org> <87d1wt1xe0.fsf@secretsauce.net> <87bncd1w88.fsf@secretsauce.net> <87a8rx1vmf.fsf@secretsauce.net> <83lhbhzj6b.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1444069194 9645 80.91.229.3 (5 Oct 2015 18:19:54 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 5 Oct 2015 18:19:54 +0000 (UTC) Cc: schwab@suse.de, eggert@cs.ucla.edu, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Oct 05 20:19:40 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 1ZjAMN-0007y7-G4 for ged-emacs-devel@m.gmane.org; Mon, 05 Oct 2015 20:19:39 +0200 Original-Received: from localhost ([::1]:47134 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZjAMM-0005Ow-Vd for ged-emacs-devel@m.gmane.org; Mon, 05 Oct 2015 14:19:38 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35485) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZjAM3-0005M4-OW for emacs-devel@gnu.org; Mon, 05 Oct 2015 14:19:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZjAM0-0008NL-Ik for emacs-devel@gnu.org; Mon, 05 Oct 2015 14:19:19 -0400 Original-Received: from out4-smtp.messagingengine.com ([66.111.4.28]:59856) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZjAM0-0008My-Be for emacs-devel@gnu.org; Mon, 05 Oct 2015 14:19:16 -0400 Original-Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id AA477209BE for ; Mon, 5 Oct 2015 14:19:15 -0400 (EDT) Original-Received: from frontend2 ([10.202.2.161]) by compute5.internal (MEProxy); Mon, 05 Oct 2015 14:19:15 -0400 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=vICGE pVShOYcffR9ixx736VrXws=; b=SmvssX/ffW+loepbJ6ep5SUBNQVx6VMaxKs6K Lp26LHCTYNBxwSnYQoot91A9v15oY7R6+30pwznRKaFMF/vN6NMY4cZ60NLbEA2C pqL6qcxlqmGfON+VnFRUAo4VeBZnERTBL82QwwGMVoV1h9k9ym2PRiWUp0ImpKxw yDFxhU= 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=vICGEpVShOYcffR9ixx736VrXws=; b=FOqmm AMlhmMOE+sTqJjg69JQnkm8xUWhKeFB13yMAVnU0gjlOlatZitI3a70/lkfgZIH/ chJnaw+qJ4vVvvogUnwWK5MDoVc7GswJCqGhy/r6BsjiaJg0vWW0W5+9D8nXMHIq hOyGI/pD5Sk9A76KsTOXBC5JRIKN+wmOUutJIc= X-Sasl-enc: vgSchPnCwyEpgdE9K52Fpe9m2ocg60MiaK+zC0u1+FxF 1444069155 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 52BC46800FF; Mon, 5 Oct 2015 14:19:15 -0400 (EDT) Original-Received: from ip6-localhost ([::1] helo=shorty) by shorty.local with esmtp (Exim 4.84) (envelope-from ) id 1ZjALy-000147-38; Mon, 05 Oct 2015 11:19:14 -0700 In-reply-to: <83lhbhzj6b.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.111.4.28 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:190953 Archived-At: Eli Zaretskii writes: >> From: Dima Kogan >> Cc: Eli Zaretskii , eggert@cs.ucla.edu, emacs-devel@gnu.org >> Date: Mon, 05 Oct 2015 03:02:16 -0700 >> >> Andreas Schwab writes: >> > Dima Kogan writes: >> > >> >> diff --git a/src/font.c b/src/font.c >> >> index 8e06532..ca872d0 100644 >> >> --- a/src/font.c >> >> +++ b/src/font.c >> >> @@ -3981,7 +3981,15 @@ copy_font_spec (Lisp_Object font) >> >> pcdr = spec->props + FONT_EXTRA_INDEX; >> >> for (tail = AREF (font, FONT_EXTRA_INDEX); CONSP (tail); tail = XCDR (tail)) >> >> if (!EQ (XCAR (XCAR (tail)), QCfont_entity)) >> >> - *pcdr = Fcons (XCAR (tail), Qnil), pcdr = xcdr_addr (*pcdr); >> >> + { >> >> + if (CONSP (XCAR (tail))) >> > >> > This better be always true, otherwise XCAR (XCAR (tail)) would be a bug. >> >> It isn't. Without that check I was getting every time. >> >> *ERROR*: Wrong type argument: listp, "monospace-10" > > I think what Andreas meant was this: the old code used > XCAR (XCAR (tail)) unconditionally, which seems to indicate that > XCAR (tail) is always a cons cell, and your test should always > yield true. I just looked at it again, and it was my mistake; this is always a cons cell as it should be. I was getting the error when using Fcopy_sequence instead of making a new cell with Fcons. The former would make a deeper copy, but the alist entries aren't lists, so Fcopy_sequence() was barfing. Making a new cons-cell is one-level deep, and it's deep-enough, so it works. So yeah, my bad. >> Surprised me too, and I haven't checked to see what was happening there. > > So maybe your code should include some check for QCfont_entity in the > 'else' clause as well. Here's the updated patch: diff --git a/src/font.c b/src/font.c index 8e06532..dd574ca 100644 --- a/src/font.c +++ b/src/font.c @@ -3981,7 +3981,12 @@ copy_font_spec (Lisp_Object font) pcdr = spec->props + FONT_EXTRA_INDEX; for (tail = AREF (font, FONT_EXTRA_INDEX); CONSP (tail); tail = XCDR (tail)) if (!EQ (XCAR (XCAR (tail)), QCfont_entity)) - *pcdr = Fcons (XCAR (tail), Qnil), pcdr = xcdr_addr (*pcdr); + { + *pcdr = Fcons (Fcons( XCAR (XCAR (tail)), + XCDR (XCAR (tail))), + Qnil); + pcdr = xcdr_addr (*pcdr); + } XSETFONT (new_spec, spec); return new_spec; I'm not sure what you mean about checking for QCfont_entity. This new patch doesn't add an if(), and there's already a QCfont_entity check there. This is fine, right? > Btw, isn't 12KB per frame still a lot? Yes, I think so. There are more leaks to find.