GNU bug report logs - #76091
31.0.50; festure/igc: buffer.h:829: Emacs fatal error: assertion failed: BUFFERP (a)

Previous Next

Package: emacs;

Reported by: Gregor Zattler <telegraph <at> gmx.net>

Date: Thu, 6 Feb 2025 12:51:01 UTC

Severity: normal

Found in version 31.0.50

Done: Pip Cet <pipcet <at> protonmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Pip Cet <pipcet <at> protonmail.com>
To: Gerd Möllmann <gerd.moellmann <at> gmail.com>
Cc: 76091 <at> debbugs.gnu.org, Gregor Zattler <telegraph <at> gmx.net>, Helmut Eller <eller.helmut <at> gmail.com>, Eli Zaretskii <eliz <at> gnu.org>
Subject: bug#76091: 31.0.50; festure/igc: buffer.h:829: Emacs fatal error: assertion failed: BUFFERP (a)
Date: Fri, 07 Feb 2025 16:07:30 +0000
Gerd Möllmann <gerd.moellmann <at> gmail.com> writes:

> Pip Cet <pipcet <at> protonmail.com> writes:
>
>> Well, here it is:
>
> IIUC, that fixes the problem with igc_on_grow_specpdl as part of a
> grander effort that avoids parking the arena in more cases.

My assumption was the other root resizing methods would have similar
issues, yes.  I'm not sure this is true, but why risk it?

> (I'd naively just written a new igc_xpalloc_specpdl patterned after the
> existing igc_xpalloc_exectly and ambig variants, but I'm also lazy :-).)

Laziness is a virtue for hackers :-)

> Hard to review. Did you take this into account?

Well, yes.  I'll split it up into individual patches, so we can review
them one by one?

> igc.c:
>  3240   /* Can't make a root that has zero length.  Want one to be able to
>  3241      detect calling igc_free on something not having a root.  */
>  3242   void *end = (char *) p + size;
>  3243   if (end == p)
>  3244     end = (char *) p + IGC_ALIGN_DFLT;
>  3245   root_create_ambig (global_igc, p, end, "xzalloc-ambig");

Ugh.  No, I didn't.  Need to fix igc_realloc_ambig (also, it doesn't
handle the "shrinking" case correctly, oops.  However, there appear to
be no callers of igc_realloc_ambig that expect the root to shrink,
whew).

As for that code, is it really necessary to lie about this case?  Can't
we simply force size to be >= IGC_ALIGN_DFLT when making the allocation?

Pip





This bug report was last modified 102 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.