GNU bug report logs - #81610
30.2; [PATCH] NS; NSRangeException when enabling tool-bar-mode

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Yavor Doganov <yavor@HIDDEN>; Keywords: patch; dated Wed, 12 Aug 2026 13:55:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 81610 <at> debbugs.gnu.org:


Received: (at 81610) by debbugs.gnu.org; 29 Aug 2026 10:00:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Aug 29 06:00:12 2026
Received: from localhost ([127.0.0.1]:54837 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1x0Fr7-0000zc-3m
	for submit <at> debbugs.gnu.org; Sat, 29 Aug 2026 06:00:12 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:58522)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1x0Fr1-0000ti-Q1
 for 81610 <at> debbugs.gnu.org; Sat, 29 Aug 2026 06:00:06 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1x0Fqw-0003Xb-As; Sat, 29 Aug 2026 05:59:58 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=ncsLe5P3+T+NLogKxwQSwHQqMAlKYSn1VQt2fSagKc8=; b=V476X0kM2TgT
 z6ute2blc6iWghOFm0bPUPP0dRZqpZnAYE3PkDYIREO/crbw+lcMxhhMjb7HU0ACW0kMVvgETAdgv
 gDEFmfHXAmc7inCeFHiZZTLXJ5KNhl8F7B+HvQd+cxkepxDM4D0MSGt1imugMSzO7e6m69NhKsYRh
 1JZ5ZY9eqvN06SHLPTODp1NVbyyT7aXQQX11VntXpcjAkqlSl5JceASFrhOhvdZa890fzkGsXJxKa
 xEcCTkoCg2HxxmGupgHLDPYYWtiNnQBF93F6QGjZQd+y/3GuRHAMhejkXcfuiiAgZNo8UsEfxOnkI
 EaKOKJokY1CKQFsV7KBlrQ==;
Date: Sat, 29 Aug 2026 12:59:55 +0300
Message-Id: <86qzjhb61w.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: alan@HIDDEN, Yavor Doganov <yavor@HIDDEN>
In-Reply-To: <87se4ezluz.GNU's_not_UNIX!-yavor@HIDDEN> (message from Yavor
 Doganov on Sun, 16 Aug 2026 08:16:04 +0300)
Subject: Re: bug#81610: 30.2; [PATCH] NS;
 NSRangeException when enabling tool-bar-mode
References: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN> <86o6f79ydd.fsf@HIDDEN>
 <an4m8B_35vAemiQP@HIDDEN>
 <87se4ezluz.GNU's_not_UNIX!-yavor@HIDDEN>
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81610
Cc: 81610 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Ping!  Alan, could you please reply to Yavor?

> Date: Sun, 16 Aug 2026 08:16:04 +0300
> From: Yavor Doganov <yavor@HIDDEN>
> 
> On Thu, 13 Aug 2026 23:20:00 +0300,
> Alan Third wrote:
> > On Wed, Aug 12, 2026 at 06:01:18PM +0300, Eli Zaretskii wrote:
> > > > From: Yavor Doganov <yavor@HIDDEN>
> > > > Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar
> > > > instances for a single Emacs frame.  The one from GDB frame 2,
> > > > 0x555557a87500, is a "parasite" object: it is initialized at frame
> > > > creation and toolbar items are never insterted in it.
> > > 
> > > Alan, any comments to the patch?  Because it's definitely
> > > macOS-specific.
> > 
> > This doesn't look right to me,
> 
> Could you please explain why do you think so?
> 
> The comment at free_frame_tool_bar says that we're only hiding the
> toolbar, so the same object that was initially and unconditionally
> created in EmacsWindow -initWithEmacsFrame:fullscreen:screen:
> (nsterm.m:9844) should be reused.  The following change demonstrates
> what's wrong -- it discards the exception and prints the just
> initialized EmacsToolbar object:
> 
> diff --git a/src/nsmenu.m b/src/nsmenu.m
> index ab6e7d7140d..5b0b289a6e4 100644
> --- a/src/nsmenu.m
> +++ b/src/nsmenu.m
> @@ -1277,6 +1277,7 @@ - (instancetype)initForView: (EmacsView *)view withIdentifier: (NSString *)ident
>    activeIdentifiers = [[NSMutableArray alloc] initWithCapacity: 8];
>    prevIdentifiers = nil;
>    prevEnablement = enablement = 0L;
> +  GSPrintf (stdout, @"%@, identifier: %@\n", self, identifier);
>    return self;
>  }
>  
> @@ -1307,7 +1308,10 @@ - (void) clearAll
>  
>    [self clearActive];
>    while ([[self items] count] > 0)
> +    NS_DURING
>      [self removeItemAtIndex: 0];
> +    NS_HANDLER
> +    NS_ENDHANDLER
>  }
>  
> 
> With this change, if I run "emacs -Q" and type several times "M-x
> tool-bar-mode RET", I get:
> 
> <EmacsToolbar: 0x55b37539c050>, identifier: 0x55b373d3d1d0
> <EmacsToolbar: 0x55b3750914d0>, identifier: 0x55b373d3d1d0
> <EmacsToolbar: 0x55b373f1b1b0>, identifier: 0x55b373d3d1d0
> 
> That's for a single Emacs frame.  With the patch I proposed, there's
> only one object and there's no exception.
> 
> The additional object is created precisely because the toolbar is set
> to nil in free_frame_tool_bar, then the "toolbar" local variable in
> update_frame_tool_bar is nil (because -toolbar returns nil), which
> leads to another call to -createToolbar:.
> 
> Since we're only hiding the toolbar, -setVisible: in
> free_frame_tool_bar is sufficient and -setToolbar: does only harm
> (memory leak + exception when you start Emacs with the toolbar
> disabled).
> 




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81610; Package emacs. Full text available.

Message received at 81610 <at> debbugs.gnu.org:


Received: (at 81610) by debbugs.gnu.org; 16 Aug 2026 05:16:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 16 01:16:21 2026
Received: from localhost ([127.0.0.1]:47288 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wvTEK-00055m-Nr
	for submit <at> debbugs.gnu.org; Sun, 16 Aug 2026 01:16:21 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:54772)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <yavor@HIDDEN>) id 1wvTEI-00055a-Go
 for 81610 <at> debbugs.gnu.org; Sun, 16 Aug 2026 01:16:19 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yavor@HIDDEN>)
 id 1wvTEC-00012K-AD; Sun, 16 Aug 2026 01:16:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Subject:To:From:
 Date; bh=Qf7QrET9+n8g+Qk0hqaF5lyV1h2qqcLAb/gxge/NzdU=; b=E6BalIv2QfCLIrzon816
 budaB2EZct9tLST/oIMetaPHYmSZUCsuPh+10GRbfAtN0Y6HeJCceYyniJMv9FEug/2qCQu0e381i
 4S8NG38xbTeV5UvmW4S6V8z4tCiwSsv9aecElSo/mb/Lfhofm7yY0pCbK+MKnDJXbRgqB2wkd9AME
 u3CYQUPaGQYz5omwZwssuTa8zrFN9HBhQ7f5hC918v8Dsxy8Q9E3pf4WCpcnCF+t+Y9kGO9LahRnP
 rUzNTFzNc6qzYgoh88g9O1lIlmLclqJydRGBUHryUArIm1r8uSroXQe1Ykbn744ERyqVM083jkTyb
 t7ajJ8mycsdBSg==;
Date: Sun, 16 Aug 2026 08:16:04 +0300
Message-ID: <87se4ezluz.GNU's_not_UNIX!-yavor@HIDDEN>
From: Yavor Doganov <yavor@HIDDEN>
To: Alan Third <alan@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 Yavor Doganov <yavor@HIDDEN>, 81610 <at> debbugs.gnu.org
Subject: Re: bug#81610: 30.2; [PATCH] NS;
 NSRangeException when enabling tool-bar-mode
In-Reply-To: <an4m8B_35vAemiQP@HIDDEN>
References: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN> <86o6f79ydd.fsf@HIDDEN>
 <an4m8B_35vAemiQP@HIDDEN>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/30.2
 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)
Organization: The GNU Emacs Church (Bulgarian Eparchy)
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=US-ASCII
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81610
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On Thu, 13 Aug 2026 23:20:00 +0300,
Alan Third wrote:
> On Wed, Aug 12, 2026 at 06:01:18PM +0300, Eli Zaretskii wrote:
> > > From: Yavor Doganov <yavor@HIDDEN>
> > > Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar
> > > instances for a single Emacs frame.  The one from GDB frame 2,
> > > 0x555557a87500, is a "parasite" object: it is initialized at frame
> > > creation and toolbar items are never insterted in it.
> > 
> > Alan, any comments to the patch?  Because it's definitely
> > macOS-specific.
> 
> This doesn't look right to me,

Could you please explain why do you think so?

The comment at free_frame_tool_bar says that we're only hiding the
toolbar, so the same object that was initially and unconditionally
created in EmacsWindow -initWithEmacsFrame:fullscreen:screen:
(nsterm.m:9844) should be reused.  The following change demonstrates
what's wrong -- it discards the exception and prints the just
initialized EmacsToolbar object:

diff --git a/src/nsmenu.m b/src/nsmenu.m
index ab6e7d7140d..5b0b289a6e4 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1277,6 +1277,7 @@ - (instancetype)initForView: (EmacsView *)view withIdentifier: (NSString *)ident
   activeIdentifiers = [[NSMutableArray alloc] initWithCapacity: 8];
   prevIdentifiers = nil;
   prevEnablement = enablement = 0L;
+  GSPrintf (stdout, @"%@, identifier: %@\n", self, identifier);
   return self;
 }
 
@@ -1307,7 +1308,10 @@ - (void) clearAll
 
   [self clearActive];
   while ([[self items] count] > 0)
+    NS_DURING
     [self removeItemAtIndex: 0];
+    NS_HANDLER
+    NS_ENDHANDLER
 }
 

With this change, if I run "emacs -Q" and type several times "M-x
tool-bar-mode RET", I get:

<EmacsToolbar: 0x55b37539c050>, identifier: 0x55b373d3d1d0
<EmacsToolbar: 0x55b3750914d0>, identifier: 0x55b373d3d1d0
<EmacsToolbar: 0x55b373f1b1b0>, identifier: 0x55b373d3d1d0

That's for a single Emacs frame.  With the patch I proposed, there's
only one object and there's no exception.

The additional object is created precisely because the toolbar is set
to nil in free_frame_tool_bar, then the "toolbar" local variable in
update_frame_tool_bar is nil (because -toolbar returns nil), which
leads to another call to -createToolbar:.

Since we're only hiding the toolbar, -setVisible: in
free_frame_tool_bar is sufficient and -setToolbar: does only harm
(memory leak + exception when you start Emacs with the toolbar
disabled).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81610; Package emacs. Full text available.

Message received at 81610 <at> debbugs.gnu.org:


Received: (at 81610) by debbugs.gnu.org; 13 Aug 2026 20:20:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Aug 13 16:20:10 2026
Received: from localhost ([127.0.0.1]:48304 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wubuM-0001im-H1
	for submit <at> debbugs.gnu.org; Thu, 13 Aug 2026 16:20:10 -0400
Received: from dane.soverin.net ([185.233.34.35]:54107)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <alan@HIDDEN>) id 1wubuK-0001eX-6r
 for 81610 <at> debbugs.gnu.org; Thu, 13 Aug 2026 16:20:08 -0400
Received: from smtp.soverin.net (unknown [10.10.4.100])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by dane.soverin.net (Postfix) with ESMTPS id 4hLcD15xkVz1B4S;
 Thu, 13 Aug 2026 20:20:01 +0000 (UTC)
Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.100]) by
 soverin.net (Postfix) with ESMTPSA id 4hLcD13Glvzph; 
 Thu, 13 Aug 2026 20:20:01 +0000 (UTC)
X-CM-Envelope: MS4xfI12b0tEILcgwz9R7rMMrzXoz2ukqX5P8al13uCQhryd2YnAeTyxSZgv8HeKrtBmpCKCAFUuPscvvOa6SADTR8lYsfArgKjcdQvkwfu72ce+5ZQtASTl
 W2pnxP92EEbXK5mo4VZw0NSEjOE5QPb8+HCYsBiN5+WSLe+LPXX/tFoSZSOGpxrjakuEnusl1BVZ5qJPLmRpKWW5GyaBB9OKrO24kS4TZbm8ztC2ZNZwvAtd
 5aQM6J6pB+Y1q8G8QxPXgEu3HsMVKT149teWlOADSRk=
X-Soverin-Id: 019ffcc8-1d68-736e-997b-9f4ae7c53d27
Received: from localhost (namib [local])
 by namib (OpenSMTPD) with ESMTPA id edf2bfe8;
 Thu, 13 Aug 2026 20:20:00 +0000 (UTC)
Date: Thu, 13 Aug 2026 21:20:00 +0100
From: Alan Third <alan@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#81610: 30.2; [PATCH] NS; NSRangeException when enabling
 tool-bar-mode
Message-ID: <an4m8B_35vAemiQP@HIDDEN>
Mail-Followup-To: Alan Third <alan@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>, Yavor Doganov <yavor@HIDDEN>,
 81610 <at> debbugs.gnu.org
References: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN> <86o6f79ydd.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <86o6f79ydd.fsf@HIDDEN>
X-Spampanel-Class: ham
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81610
Cc: Yavor Doganov <yavor@HIDDEN>, 81610 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On Wed, Aug 12, 2026 at 06:01:18PM +0300, Eli Zaretskii wrote:
> > Cc: yavor@HIDDEN
> > Date: Wed, 12 Aug 2026 16:54:06 +0300
> > From: Yavor Doganov <yavor@HIDDEN>
> > 
> > If I customize the tool-bar-mode variable to nil then the toolbar is
> > not displayed, as expected.  However, if I enable it explicitly with
> > the interactive command, an exception is thrown: a dialog "Critical
> > Error in emacs" appears containing "NSRangeException: Index 0 is out
> > of range 0 (in 'objectAtIndex:')".  Emacs then aborts.
> > 
> > Steps to reproduce:
> > 
> >   1. emacs -Q --eval "(tool-bar-mode -1)"
> >   2. M-x tool-bar-mode RET
> > 
> > Backtrace and proposed patch below based on the master branch.
> > 
<snip>
> > Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar
> > instances for a single Emacs frame.  The one from GDB frame 2,
> > 0x555557a87500, is a "parasite" object: it is initialized at frame
> > creation and toolbar items are never insterted in it.
> > 
> > GNUstep's NSToolbar implementation of -removeItemAtIndex: (called from
> > EmacsToolbar -clearAll, nsmenu.m:1310) calls the private method
> > -_removeItemAtIndex:broadcast: which calls itself recursively,
> > dispatching the method call to all instances of the same class with
> > identical identifiers (see the TRANSMIT macro definition in
> > gnustep-gui/Source/NSToolbar.m:1205).  The goal here is to update the
> > toolbars of the app's other windows ("frames" in Emacs terminology) if
> > the identifiers match.
> > 
> > Because this first EmacsToolbar instance doesn't have any toolbar
> > items, an exception occurs.
> 
> Alan, any comments to the patch?  Because it's definitely
> macOS-specific.

This doesn't look right to me, but I don't have a GNUstep environment
to test it in and, frankly, I can't remember how toolbars work, if I
ever knew.
-- 
Alan Third




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81610; Package emacs. Full text available.

Message received at 81610 <at> debbugs.gnu.org:


Received: (at 81610) by debbugs.gnu.org; 13 Aug 2026 18:04:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Aug 13 14:04:59 2026
Received: from localhost ([127.0.0.1]:47602 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wuZnV-0003C0-Uh
	for submit <at> debbugs.gnu.org; Thu, 13 Aug 2026 14:04:59 -0400
Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]:50330)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
 id 1wuZnT-0003Bl-EL
 for 81610 <at> debbugs.gnu.org; Thu, 13 Aug 2026 14:04:56 -0400
Received: by mail-vs1-xe31.google.com with SMTP id
 ada2fe7eead31-74ad03fa605so124750137.0
 for <81610 <at> debbugs.gnu.org>; Thu, 13 Aug 2026 11:04:55 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1786644289; cv=none;
 d=google.com; s=arc-20260327;
 b=MLG/H9r9KwILwszw3tQLyT6roThdvaTfit/L2lLQ6ilaDCC1Zj1TrCyqxyvsMy21bV
 mKWJU4ua871eMBvbXaoPCcj6Yz5TQScYaO+70bVamFeoIDjY71A1QAhg9qyR1dvWv4iH
 +mz2bh692ylsqh2DAu6AL1SAnYk2zlW84kKn3s/CdeCcNEB9ZRgq4jt63TfAm5vRtIoz
 fWlNqY4onaS4fBTE6b6wqBOUsnZhBSSOL+pCUQY17EefQnqiQ3jW6hvKLCriOJNRGUiv
 WaWd1E1wTJ56vUtiPGgS6/AJk59Q19bZ8mIJOlbnJq9jQa4bIEhNKnziqJCmCzBdriKa
 yy6g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
 s=arc-20260327; 
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:dkim-signature;
 bh=l5GdXDlUGbL4C4UhWWYdicQ/hJsz5InBq/ryaNZxSBY=;
 fh=bVu6EPm+d+MpxMTjmvCOn4BklomlKtCfXvw8CYT/HrA=;
 b=Gcdmql7mrj7dL/ZbSp9la/vExvC2Ty02ca/oY4+4FB55zp44Fif1OJ+/axdcX8+H9K
 G2bMpHU2X6b6BatzyKt66nPVGycHux5pEJvb6NUeW4D6tPvoRMqKjqHfYlNf7kiWZYbI
 jOr3DKmk/P76aMo8KfDcRR6mRhyzEU2vUKCS4US65/iiW60h8szkWLMplzIUyhkdRk+h
 jKzKMMeOfeIDt8Ti68fYSd3rEDmiOHpcEsM5MksO7RHrjXhjh8GFeyEX33Y3HjJqVb4j
 ZigfSVmeqWSrUZMlXqPUs1gbbOVAEf6Z2S9Hvud2iUWX2WRFTgO9SxsOiupp1gc+px6o
 /M/A==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20251104; t=1786644289; x=1787249089; darn=debbugs.gnu.org;
 h=content-type:cc:to:subject:message-id:date:from:in-reply-to
 :references:mime-version:from:to:cc:subject:date:message-id:reply-to
 :content-type; bh=l5GdXDlUGbL4C4UhWWYdicQ/hJsz5InBq/ryaNZxSBY=;
 b=JBiPBrRZHVsxbveyWdJ4rQ5lGIFUCuVrVI/oUaOiQRxtK7ULX6bsW4QLNzY8EojAgP
 BadV70juGugpTbAMZBJf8U2khgNW/l5dUVM0CLuK4DKjf6jqF6gmjS25HMADOr2V2qPT
 XtwfNTQFZlfIQNgn6d5vRw8r85NwxX1800+YiD79vINdNKwz3aAUFOoF/yd97c6CTlFA
 JBBiQ9rxw/lLX3C1vRpyKfFN/HhjZjEWFxMobsBvqAHkQVlszgQM1d+qPIpfGq9p1++n
 g/o4yVyipCsYq1a1s2O5I5kws0hiNJrIvKcMq6LSL+IIy2zyC97EVqOsZHHJhTsoKhbB
 DPiQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20251104; t=1786644289; x=1787249089;
 h=content-type:cc:to:subject:message-id:date:from:in-reply-to
 :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to:content-type;
 bh=l5GdXDlUGbL4C4UhWWYdicQ/hJsz5InBq/ryaNZxSBY=;
 b=YHRKF/v+5plzWpsQTLp1qzvXxQbM3gAH+ip2T/yCjK2rqeTm3SYqF1QAzrta+pT0S+
 F6AUKMPgFCaZjw2ZcMRCNg242dkVuSE4wh0L/0d4zwvArfpMN4fjHpuNDGPnXKoVfE8S
 J0pItROHaD9lRgy8qiTv2kYom1Dpx6UxIx8WvLmd3kxR8q/i5hSWIljjGg4gshjjseJ1
 rD9limZZ8vYaVyURpEGPwCap1S+PSuJnYooAQ6scdgvUZjSQsHdU/zdTYQ/cDfCclHLj
 jxuUDWARHLxvsnfLHrnXME+siUU8ml6/TshrBqbQcySOXTUXn8uGmyH9OZ4/EJfaUQZ6
 SvJA==
X-Forwarded-Encrypted: i=1;
 AHgh+RruziVbuebT2NB/yuYvIuqLgpzrL3VXwL8Ew4rVid6EXOrDd4WD09klLXKX++eWMc12X0UXkg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzhnmntrZXI2Jb8LsXGLNMfj5r79kxWQSBiYaNwXaCl4wwJoevD
 ibEX8XmqIsgClubCiODpRaT1qZeQgp4Yo+H5fQzgCmDv1R2ZitHXVVfwnHQgTW4O2AOYcibfSov
 3unnZmbmVsVaKWjeIfTlJPZ6pw8taBeQ=
X-Gm-Gg: AR+sD10UqX0aU/rmzQ5m6LHY0T1gglSe5TUpOElCdeOkoJunk1hQfhnA+xhfaekXkvk
 LKnJFug7w5Hyz5ZqK5Btd+SlTmTVfMYohTdtJe/5YSp4ZBbyLKSX85t5SJnz7Qp19sUGAly8rWa
 rd5rO8ofeb68+bHxAVgfLTBHr3BryRyW7u6Su6u9hpw7bWFPKCfCn3DMgIEy3wV4RRoIzi5br3l
 7lRHintms+Y6sEB2ObHIRImIN/qzDg5QZP9/isCR5Wh1KMk48kBWT0F+Gops3pEZXXGnGFNueEn
 fRjregK/+JotzPCrIIxdRj8ym/72rI8aUSNPV3JVN+vB1J5yORbT9E/37nHG0+FrlLo6vlDIXaO
 LznZOuTewrybdUo58OolP14WKPJhOKKC23auCTO4W8H1XzpfzRAlDwUvzlYSgp1k/5NReax/HyQ
 Ycp+3y86VJVQAE9oBcbZvlfXRjOZt4nqlugY8SKngcWyw4d9A2BNVArWly8ftREu3RXyYQBT/yy
 4dZrFlcG1RrtjJjIA==
X-Received: by 2002:a05:6102:1589:b0:737:e816:b26f with SMTP id
 ada2fe7eead31-76db748f79dmr2703906137.10.1786644289553; Thu, 13 Aug 2026
 11:04:49 -0700 (PDT)
MIME-Version: 1.0
References: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN> <86o6f79ydd.fsf@HIDDEN>
In-Reply-To: <86o6f79ydd.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Thu, 13 Aug 2026 14:04:38 -0400
X-Gm-Features: AUfX_mzic6bub0nBCNEo0JFmRWY6YXGDqhGVJ5ih96OTM0SEHzyzUTc2t7YOXpQ
Message-ID: <CAN+1Hbq2TZEodTPJh5eKHpNBDt=mSv7A0afvOX_UmV4MQ93MPQ@HIDDEN>
Subject: Re: bug#81610: 30.2; [PATCH] NS;
 NSRangeException when enabling tool-bar-mode
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000003808030658f18a9e"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81610
Cc: Yavor Doganov <yavor@HIDDEN>, Alan Third <alan@HIDDEN>,
 81610 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)

--0000000000003808030658f18a9e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Aug 12, 2026 at 11:16=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote=
:

> > Cc: yavor@HIDDEN
> > Date: Wed, 12 Aug 2026 16:54:06 +0300
> > From: Yavor Doganov <yavor@HIDDEN>
> >
> > If I customize the tool-bar-mode variable to nil then the toolbar is
> > not displayed, as expected.  However, if I enable it explicitly with
> > the interactive command, an exception is thrown: a dialog "Critical
> > Error in emacs" appears containing "NSRangeException: Index 0 is out
> > of range 0 (in 'objectAtIndex:')".  Emacs then aborts.
> >
> > Steps to reproduce:
> >
> >   1. emacs -Q --eval "(tool-bar-mode -1)"
> >   2. M-x tool-bar-mode RET
> >
> > Backtrace and proposed patch below based on the master branch.
> >
> > In GNU Emacs 30.2 (build 2, x86_64-pc-linux-gnu, NS
> >  gnustep-gui-0.32.0) of 2026-07-04, modified by Debian built on
> >  patilan
> > Windowing system distributor 'GNU', version 10.3.32
> > System Description: Debian GNU/Linux forky/sid
> >
> > Configured using:
> >  'configure --build x86_64-linux-gnu --prefix=3D/usr
> >  --sharedstatedir=3D/var/lib --libexecdir=3D/usr/libexec
> >  --localstatedir=3D/var/lib --infodir=3D/usr/share/info
> >  --mandir=3D/usr/share/man --with-libsystemd --with-pop=3Dyes
> >
> --enable-locallisppath=3D/etc/emacs:/usr/local/share/emacs/30.2/site-lisp=
:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/shar=
e/emacs/site-lisp
> >  --with-sound=3Dalsa --without-gconf --with-mailutils --build
> >  x86_64-linux-gnu --prefix=3D/usr --sharedstatedir=3D/var/lib
> >  --libexecdir=3D/usr/libexec --localstatedir=3D/var/lib
> >  --infodir=3D/usr/share/info --mandir=3D/usr/share/man --with-libsystem=
d
> >  --with-pop=3Dyes
> >
> --enable-locallisppath=3D/etc/emacs:/usr/local/share/emacs/30.2/site-lisp=
:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/shar=
e/emacs/site-lisp
> >  --with-sound=3Dalsa --without-gconf --with-mailutils --with-ns
> >  --disable-ns-self-contained --without-gif --without-jpeg
> >  --without-png --without-rsvg --without-tiff --without-webp 'CFLAGS=3D-=
g
> >  -O2 -Werror=3Dimplicit-function-declaration
> >  -ffile-prefix-map=3D/build/reproducible-path/emacs-30.2+1=3D.
> -fstack-protector-strong
> >  -fstack-clash-protection -Wformat -Werror=3Dformat-security
> >  -fcf-protection -Wall' 'CPPFLAGS=3D-Wdate-time -D_FORTIFY_SOURCE=3D2'
> >  LDFLAGS=3D-Wl,-z,relro'
> >
> > Configured features:
> > ACL DBUS GMP GNUTLS GPM LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
> > NATIVE_COMP NOTIFY INOTIFY NS PDUMPER SECCOMP SOUND SQLITE3 THREADS
> > TOOLKIT_SCROLL_BARS TREE_SITTER XIM ZLIB
> >
> > (gdb) break -[NSException raise]
> > =E2=9D=8C=EF=B8=8F Function "-[NSException raise]" not defined.
> > Make breakpoint pending on future shared library load? (y or [n]) y
> > Breakpoint 1 (-[NSException raise]) pending.
> > (gdb) r -Q --eval "(tool-bar-mode -1)"
> > Starting program: /home/yavor/src/emacs/src/emacs -Q --eval
> "(tool-bar-mode -1)"
> > [Thread debugging using libthread_db enabled]
> > Using host libthread_db library
> "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".
> > =E2=9A=A0=EF=B8=8F warning: Corrupted shared library list: 0x5555564e04=
b0 !=3D
> 0x5555564df930
> > [New Thread 0x7fffe8d5e6c0 (LWP 246730)]
> >
> > Thread 1 "emacs" hit Breakpoint 1, -[NSException raise]
> (self=3D0x5555574f8030,
> >     _cmd=3D0x7ffff758d640 <_OBJC_SELECTOR_TABLE+128>)
> >     at ./Source/NSException.m:1602
> > =E2=9A=A0=EF=B8=8F warning: 1602      ./Source/NSException.m: =D0=9D=D1=
=8F=D0=BC=D0=B0 =D1=82=D0=B0=D0=BA=D1=8A=D0=B2 =D1=84=D0=B0=D0=B9=D0=BB =D0=
=B8=D0=BB=D0=B8
> =D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D1=8F
> > (gdb) bt
> > #0  -[NSException raise]
> >     (self=3D0x5555574f8030, _cmd=3D0x7ffff758d640 <_OBJC_SELECTOR_TABLE=
+128>)
> >     at ./Source/NSException.m:1602
> > #1  0x00007ffff71c02b4 in -[GSArray objectAtIndex:]
> >     (self=3D0x555557b78bc0, _cmd=3D<optimized out>, index=3D0)
> >     at ./Source/GSArray.m:355
> > #2  0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcast:]
> >     (self=3D0x555557a87500, _cmd=3D<optimized out>, index=3D0, broadcas=
t=3D0
> '\000')
> >     at ./Source/NSToolbar.m:1270
> > #3  0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcast:]
> >     (self=3D0x555557fb5980, _cmd=3D<optimized out>, index=3D0,
> broadcast=3D<optimized out>) at ./Source/NSToolbar.m:1284
> > #4  0x0000555555851b79 in -[EmacsToolbar clearAll]
> >     (self=3D0x555557fb5980, _cmd=3D<optimized out>) at nsmenu.m:1310
> > #5  0x00005555558569de in update_frame_tool_bar_1
> >     (f=3D0x5555560725a0, toolbar=3D0x555557fb5980) at nsmenu.m:1133
> > #6  0x0000555555662e44 in redisplay_window
> >     (window=3D0x5555560f1105, just_this_one_p=3Djust_this_one_p@entry=
=3Dfalse)
> >     at xdisp.c:21545
> > #7  0x0000555555663adb in redisplay_window_0 (window=3D<optimized out>)
> >     at xdisp.c:18531
> > #8  0x0000555555773a29 in internal_condition_case_1
> >     (bfun=3Dbfun@entry=3D0x555555663ab0 <redisplay_window_0>,
> arg=3D0x5555560f1105, handlers=3D<optimized out>, hfun=3Dhfun@entry=3D0x5=
555556149b0
> <redisplay_window_error>) at eval.c:1736
> > #9  0x0000555555611c85 in redisplay_windows (window=3D0x5555560f1105)
> >     at xdisp.c:18500
> > #10 0x0000555555647cc0 in redisplay_internal () at xdisp.c:17917
> > #11 0x0000555555649b75 in redisplay () at xdisp.c:17063
> > #12 0x00005555556f0582 in read_char
> >     (commandflag=3D<optimized out>, map=3Dmap@entry=3D0x7fffecf61563,
> prev_event=3D<optimized out>, used_mouse_menu=3Dused_mouse_menu@entry=3D0=
x7fffffffd76b,
> end_time=3Dend_time@entry=3D0x0) at keyboard.c:2711
> > #13 0x00005555556f35e3 in read_key_sequence
> >     (keybuf=3Dkeybuf@entry=3D0x7fffffffd8b0, prompt=3Dprompt@entry=3D0x=
0,
> dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse,
> can_return_switch_frame=3Dcan_return_switch_frame@entry=3Dtrue,
> fix_current_buffer=3Dfix_current_buffer@entry=3Dtrue,
> prevent_redisplay=3Dprevent_redisplay@entry=3Dfalse,
> disable_text_conversion_p=3Dfalse)
> >     at keyboard.c:11224
> > #14 0x00005555556f5754 in command_loop_1 () at keyboard.c:1424
> > #15 0x00005555557739a4 in internal_condition_case
> >     (bfun=3Dbfun@entry=3D0x5555556f55a0 <command_loop_1>,
> handlers=3Dhandlers@entry=3D0x90, hfun=3Dhfun@entry=3D0x5555556e7b30 <cmd=
_error>)
> at eval.c:1712
> > #16 0x00005555556df366 in command_loop_2 (handlers=3D0x90) at
> keyboard.c:1163
> > #17 0x00005555557738fe in internal_catch
> >     (tag=3Dtag@entry=3D0x12270, func=3Dfunc@entry=3D0x5555556df340
> <command_loop_2>, arg=3Darg@entry=3D0x90) at eval.c:1392
> > #18 0x00005555556df303 in command_loop () at keyboard.c:1141
> > #19 0x00005555556e76e1 in recursive_edit_1 () at keyboard.c:749
> > #20 0x00005555556e7a68 in Frecursive_edit () at keyboard.c:832
> > #21 0x00005555555f1de8 in main (argc=3D<optimized out>, argv=3D<optimiz=
ed
> out>)
> >     at emacs.c:2635
> > (gdb) fr 3
> > #3  0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcast:] (
> >     self=3D0x555557fb5980, _cmd=3D<optimized out>, index=3D0,
> >     broadcast=3D<optimized out>) at ./Source/NSToolbar.m:1284
> > =E2=9A=A0=EF=B8=8F warning: 1284      ./Source/NSToolbar.m: =D0=9D=D1=
=8F=D0=BC=D0=B0 =D1=82=D0=B0=D0=BA=D1=8A=D0=B2 =D1=84=D0=B0=D0=B9=D0=BB =D0=
=B8=D0=BB=D0=B8
> =D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D1=8F
> > (gdb) po self
> > <EmacsToolbar: 0x555557fb5980>
> > (gdb) po _items
> > ("<<NSToolbarItem: 0x555557fb5210> - <5864062930753Open>>",
> "<<NSToolbarItem: 0x555557fb4ac0> - <5864062916976Open Directory>>",
> "<<NSToolbarItem: 0x555557fb42f0> - <5864062922955Close>>",
> "<<NSToolbarItem: 0x555557fb3b20> - <5864062924951Save>>",
> "<<NSToolbarItem: 0x555557fb3350> - <5864062937190Undo>>",
> "<<NSToolbarItem: 0x555557fb2b80> - <5864062939314Cut>>", "<<NSToolbarIte=
m:
> 0x555557fb23b0> - <5864062940411Copy>>", "<<NSToolbarItem: 0x555557fb1bc0=
>
> - <5864063816493Paste>>", "<<NSToolbarItem: 0x555557fb13f0> -
> <5864064151308Search>>")
> > (gdb) down
> > #2  0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcast:] (
> >     self=3D0x555557a87500, _cmd=3D<optimized out>, index=3D0, broadcast=
=3D0
> '\000')
> >     at ./Source/NSToolbar.m:1270
> > 1270  in ./Source/NSToolbar.m
> > (gdb) po self
> > <EmacsToolbar: 0x555557a87500>
> > (gdb) po _items
> > ()
> >
> > Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar
> > instances for a single Emacs frame.  The one from GDB frame 2,
> > 0x555557a87500, is a "parasite" object: it is initialized at frame
> > creation and toolbar items are never insterted in it.
> >
> > GNUstep's NSToolbar implementation of -removeItemAtIndex: (called from
> > EmacsToolbar -clearAll, nsmenu.m:1310) calls the private method
> > -_removeItemAtIndex:broadcast: which calls itself recursively,
> > dispatching the method call to all instances of the same class with
> > identical identifiers (see the TRANSMIT macro definition in
> > gnustep-gui/Source/NSToolbar.m:1205).  The goal here is to update the
> > toolbars of the app's other windows ("frames" in Emacs terminology) if
> > the identifiers match.
> >
> > Because this first EmacsToolbar instance doesn't have any toolbar
> > items, an exception occurs.
>
> Alan, any comments to the patch?  Because it's definitely
> macOS-specific.
>

It looks like GNUstep on GNU/Linux.  Not a combination I have readily
available to assist.

--0000000000003808030658f18a9e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif;b=
ackground-color:transparent">On Wed, Aug 12, 2026 at 11:16=E2=80=AFAM Eli Z=
aretskii &lt;<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN</a>&gt; wrote:</s=
pan></div></div><div class=3D"gmail_quote gmail_quote_container"><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex">&gt; Cc: <a href=3D"mailto:yavor@gn=
u.org" target=3D"_blank">yavor@HIDDEN</a><br>
&gt; Date: Wed, 12 Aug 2026 16:54:06 +0300<br>
&gt; From: Yavor Doganov &lt;<a href=3D"mailto:yavor@HIDDEN" target=3D"_bl=
ank">yavor@HIDDEN</a>&gt;<br>
&gt; <br>
&gt; If I customize the tool-bar-mode variable to nil then the toolbar is<b=
r>
&gt; not displayed, as expected.=C2=A0 However, if I enable it explicitly w=
ith<br>
&gt; the interactive command, an exception is thrown: a dialog &quot;Critic=
al<br>
&gt; Error in emacs&quot; appears containing &quot;NSRangeException: Index =
0 is out<br>
&gt; of range 0 (in &#39;objectAtIndex:&#39;)&quot;.=C2=A0 Emacs then abort=
s.<br>
&gt; <br>
&gt; Steps to reproduce:<br>
&gt; <br>
&gt;=C2=A0 =C2=A01. emacs -Q --eval &quot;(tool-bar-mode -1)&quot;<br>
&gt;=C2=A0 =C2=A02. M-x tool-bar-mode RET<br>
&gt; <br>
&gt; Backtrace and proposed patch below based on the master branch.<br>
&gt; <br>
&gt; In GNU Emacs 30.2 (build 2, x86_64-pc-linux-gnu, NS<br>
&gt;=C2=A0 gnustep-gui-0.32.0) of 2026-07-04, modified by Debian built on<b=
r>
&gt;=C2=A0 patilan<br>
&gt; Windowing system distributor &#39;GNU&#39;, version 10.3.32<br>
&gt; System Description: Debian GNU/Linux forky/sid<br>
&gt; <br>
&gt; Configured using:<br>
&gt;=C2=A0 &#39;configure --build x86_64-linux-gnu --prefix=3D/usr<br>
&gt;=C2=A0 --sharedstatedir=3D/var/lib --libexecdir=3D/usr/libexec<br>
&gt;=C2=A0 --localstatedir=3D/var/lib --infodir=3D/usr/share/info<br>
&gt;=C2=A0 --mandir=3D/usr/share/man --with-libsystemd --with-pop=3Dyes<br>
&gt;=C2=A0 --enable-locallisppath=3D/etc/emacs:/usr/local/share/emacs/30.2/=
site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:=
/usr/share/emacs/site-lisp<br>
&gt;=C2=A0 --with-sound=3Dalsa --without-gconf --with-mailutils --build<br>
&gt;=C2=A0 x86_64-linux-gnu --prefix=3D/usr --sharedstatedir=3D/var/lib<br>
&gt;=C2=A0 --libexecdir=3D/usr/libexec --localstatedir=3D/var/lib<br>
&gt;=C2=A0 --infodir=3D/usr/share/info --mandir=3D/usr/share/man --with-lib=
systemd<br>
&gt;=C2=A0 --with-pop=3Dyes<br>
&gt;=C2=A0 --enable-locallisppath=3D/etc/emacs:/usr/local/share/emacs/30.2/=
site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:=
/usr/share/emacs/site-lisp<br>
&gt;=C2=A0 --with-sound=3Dalsa --without-gconf --with-mailutils --with-ns<b=
r>
&gt;=C2=A0 --disable-ns-self-contained --without-gif --without-jpeg<br>
&gt;=C2=A0 --without-png --without-rsvg --without-tiff --without-webp &#39;=
CFLAGS=3D-g<br>
&gt;=C2=A0 -O2 -Werror=3Dimplicit-function-declaration<br>
&gt;=C2=A0 -ffile-prefix-map=3D/build/reproducible-path/emacs-30.2+1=3D. -f=
stack-protector-strong<br>
&gt;=C2=A0 -fstack-clash-protection -Wformat -Werror=3Dformat-security<br>
&gt;=C2=A0 -fcf-protection -Wall&#39; &#39;CPPFLAGS=3D-Wdate-time -D_FORTIF=
Y_SOURCE=3D2&#39;<br>
&gt;=C2=A0 LDFLAGS=3D-Wl,-z,relro&#39;<br>
&gt; <br>
&gt; Configured features:<br>
&gt; ACL DBUS GMP GNUTLS GPM LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES<br=
>
&gt; NATIVE_COMP NOTIFY INOTIFY NS PDUMPER SECCOMP SOUND SQLITE3 THREADS<br=
>
&gt; TOOLKIT_SCROLL_BARS TREE_SITTER XIM ZLIB<br>
&gt; <br>
&gt; (gdb) break -[NSException raise]<br>
&gt; =E2=9D=8C=EF=B8=8F Function &quot;-[NSException raise]&quot; not defin=
ed.<br>
&gt; Make breakpoint pending on future shared library load? (y or [n]) y<br=
>
&gt; Breakpoint 1 (-[NSException raise]) pending.<br>
&gt; (gdb) r -Q --eval &quot;(tool-bar-mode -1)&quot;<br>
&gt; Starting program: /home/yavor/src/emacs/src/emacs -Q --eval &quot;(too=
l-bar-mode -1)&quot;<br>
&gt; [Thread debugging using libthread_db enabled]<br>
&gt; Using host libthread_db library &quot;/usr/lib/x86_64-linux-gnu/libthr=
ead_db.so.1&quot;.<br>
&gt; =E2=9A=A0=EF=B8=8F warning: Corrupted shared library list: 0x5555564e0=
4b0 !=3D 0x5555564df930<br>
&gt; [New Thread 0x7fffe8d5e6c0 (LWP 246730)]<br>
&gt; <br>
&gt; Thread 1 &quot;emacs&quot; hit Breakpoint 1, -[NSException raise] (sel=
f=3D0x5555574f8030, <br>
&gt;=C2=A0 =C2=A0 =C2=A0_cmd=3D0x7ffff758d640 &lt;_OBJC_SELECTOR_TABLE+128&=
gt;)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at ./Source/NSException.m:1602<br>
&gt; =E2=9A=A0=EF=B8=8F warning: 1602=C2=A0 =C2=A0 =C2=A0 ./Source/NSExcept=
ion.m: =D0=9D=D1=8F=D0=BC=D0=B0 =D1=82=D0=B0=D0=BA=D1=8A=D0=B2 =D1=84=D0=B0=
=D0=B9=D0=BB =D0=B8=D0=BB=D0=B8 =D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=
=D1=80=D0=B8=D1=8F<br>
&gt; (gdb) bt<br>
&gt; #0=C2=A0 -[NSException raise]<br>
&gt;=C2=A0 =C2=A0 =C2=A0(self=3D0x5555574f8030, _cmd=3D0x7ffff758d640 &lt;_=
OBJC_SELECTOR_TABLE+128&gt;)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at ./Source/NSException.m:1602<br>
&gt; #1=C2=A0 0x00007ffff71c02b4 in -[GSArray objectAtIndex:]<br>
&gt;=C2=A0 =C2=A0 =C2=A0(self=3D0x555557b78bc0, _cmd=3D&lt;optimized out&gt=
;, index=3D0)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at ./Source/GSArray.m:355<br>
&gt; #2=C2=A0 0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcas=
t:]<br>
&gt;=C2=A0 =C2=A0 =C2=A0(self=3D0x555557a87500, _cmd=3D&lt;optimized out&gt=
;, index=3D0, broadcast=3D0 &#39;\000&#39;)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at ./Source/NSToolbar.m:1270<br>
&gt; #3=C2=A0 0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcas=
t:]<br>
&gt;=C2=A0 =C2=A0 =C2=A0(self=3D0x555557fb5980, _cmd=3D&lt;optimized out&gt=
;, index=3D0, broadcast=3D&lt;optimized out&gt;) at ./Source/NSToolbar.m:12=
84<br>
&gt; #4=C2=A0 0x0000555555851b79 in -[EmacsToolbar clearAll]<br>
&gt;=C2=A0 =C2=A0 =C2=A0(self=3D0x555557fb5980, _cmd=3D&lt;optimized out&gt=
;) at nsmenu.m:1310<br>
&gt; #5=C2=A0 0x00005555558569de in update_frame_tool_bar_1<br>
&gt;=C2=A0 =C2=A0 =C2=A0(f=3D0x5555560725a0, toolbar=3D0x555557fb5980) at n=
smenu.m:1133<br>
&gt; #6=C2=A0 0x0000555555662e44 in redisplay_window<br>
&gt;=C2=A0 =C2=A0 =C2=A0(window=3D0x5555560f1105, just_this_one_p=3Djust_th=
is_one_p@entry=3Dfalse)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at xdisp.c:21545<br>
&gt; #7=C2=A0 0x0000555555663adb in redisplay_window_0 (window=3D&lt;optimi=
zed out&gt;)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at xdisp.c:18531<br>
&gt; #8=C2=A0 0x0000555555773a29 in internal_condition_case_1<br>
&gt;=C2=A0 =C2=A0 =C2=A0(bfun=3Dbfun@entry=3D0x555555663ab0 &lt;redisplay_w=
indow_0&gt;, arg=3D0x5555560f1105, handlers=3D&lt;optimized out&gt;, hfun=
=3Dhfun@entry=3D0x5555556149b0 &lt;redisplay_window_error&gt;) at eval.c:17=
36<br>
&gt; #9=C2=A0 0x0000555555611c85 in redisplay_windows (window=3D0x5555560f1=
105)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at xdisp.c:18500<br>
&gt; #10 0x0000555555647cc0 in redisplay_internal () at xdisp.c:17917<br>
&gt; #11 0x0000555555649b75 in redisplay () at xdisp.c:17063<br>
&gt; #12 0x00005555556f0582 in read_char<br>
&gt;=C2=A0 =C2=A0 =C2=A0(commandflag=3D&lt;optimized out&gt;, map=3Dmap@ent=
ry=3D0x7fffecf61563, prev_event=3D&lt;optimized out&gt;, used_mouse_menu=3D=
used_mouse_menu@entry=3D0x7fffffffd76b, end_time=3Dend_time@entry=3D0x0) at=
 keyboard.c:2711<br>
&gt; #13 0x00005555556f35e3 in read_key_sequence<br>
&gt;=C2=A0 =C2=A0 =C2=A0(keybuf=3Dkeybuf@entry=3D0x7fffffffd8b0, prompt=3Dp=
rompt@entry=3D0x0, dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, c=
an_return_switch_frame=3Dcan_return_switch_frame@entry=3Dtrue, fix_current_=
buffer=3Dfix_current_buffer@entry=3Dtrue, prevent_redisplay=3Dprevent_redis=
play@entry=3Dfalse, disable_text_conversion_p=3Dfalse)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at keyboard.c:11224<br>
&gt; #14 0x00005555556f5754 in command_loop_1 () at keyboard.c:1424<br>
&gt; #15 0x00005555557739a4 in internal_condition_case<br>
&gt;=C2=A0 =C2=A0 =C2=A0(bfun=3Dbfun@entry=3D0x5555556f55a0 &lt;command_loo=
p_1&gt;, handlers=3Dhandlers@entry=3D0x90, hfun=3Dhfun@entry=3D0x5555556e7b=
30 &lt;cmd_error&gt;) at eval.c:1712<br>
&gt; #16 0x00005555556df366 in command_loop_2 (handlers=3D0x90) at keyboard=
.c:1163<br>
&gt; #17 0x00005555557738fe in internal_catch<br>
&gt;=C2=A0 =C2=A0 =C2=A0(tag=3Dtag@entry=3D0x12270, func=3Dfunc@entry=3D0x5=
555556df340 &lt;command_loop_2&gt;, arg=3Darg@entry=3D0x90) at eval.c:1392<=
br>
&gt; #18 0x00005555556df303 in command_loop () at keyboard.c:1141<br>
&gt; #19 0x00005555556e76e1 in recursive_edit_1 () at keyboard.c:749<br>
&gt; #20 0x00005555556e7a68 in Frecursive_edit () at keyboard.c:832<br>
&gt; #21 0x00005555555f1de8 in main (argc=3D&lt;optimized out&gt;, argv=3D&=
lt;optimized out&gt;)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at emacs.c:2635<br>
&gt; (gdb) fr 3<br>
&gt; #3=C2=A0 0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcas=
t:] (<br>
&gt;=C2=A0 =C2=A0 =C2=A0self=3D0x555557fb5980, _cmd=3D&lt;optimized out&gt;=
, index=3D0, <br>
&gt;=C2=A0 =C2=A0 =C2=A0broadcast=3D&lt;optimized out&gt;) at ./Source/NSTo=
olbar.m:1284<br>
&gt; =E2=9A=A0=EF=B8=8F warning: 1284=C2=A0 =C2=A0 =C2=A0 ./Source/NSToolba=
r.m: =D0=9D=D1=8F=D0=BC=D0=B0 =D1=82=D0=B0=D0=BA=D1=8A=D0=B2 =D1=84=D0=B0=
=D0=B9=D0=BB =D0=B8=D0=BB=D0=B8 =D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=
=D1=80=D0=B8=D1=8F<br>
&gt; (gdb) po self<br>
&gt; &lt;EmacsToolbar: 0x555557fb5980&gt;<br>
&gt; (gdb) po _items<br>
&gt; (&quot;&lt;&lt;NSToolbarItem: 0x555557fb5210&gt; - &lt;5864062930753Op=
en&gt;&gt;&quot;, &quot;&lt;&lt;NSToolbarItem: 0x555557fb4ac0&gt; - &lt;586=
4062916976Open Directory&gt;&gt;&quot;, &quot;&lt;&lt;NSToolbarItem: 0x5555=
57fb42f0&gt; - &lt;5864062922955Close&gt;&gt;&quot;, &quot;&lt;&lt;NSToolba=
rItem: 0x555557fb3b20&gt; - &lt;5864062924951Save&gt;&gt;&quot;, &quot;&lt;=
&lt;NSToolbarItem: 0x555557fb3350&gt; - &lt;5864062937190Undo&gt;&gt;&quot;=
, &quot;&lt;&lt;NSToolbarItem: 0x555557fb2b80&gt; - &lt;5864062939314Cut&gt=
;&gt;&quot;, &quot;&lt;&lt;NSToolbarItem: 0x555557fb23b0&gt; - &lt;58640629=
40411Copy&gt;&gt;&quot;, &quot;&lt;&lt;NSToolbarItem: 0x555557fb1bc0&gt; - =
&lt;5864063816493Paste&gt;&gt;&quot;, &quot;&lt;&lt;NSToolbarItem: 0x555557=
fb13f0&gt; - &lt;5864064151308Search&gt;&gt;&quot;)<br>
&gt; (gdb) down<br>
&gt; #2=C2=A0 0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcas=
t:] (<br>
&gt;=C2=A0 =C2=A0 =C2=A0self=3D0x555557a87500, _cmd=3D&lt;optimized out&gt;=
, index=3D0, broadcast=3D0 &#39;\000&#39;)<br>
&gt;=C2=A0 =C2=A0 =C2=A0at ./Source/NSToolbar.m:1270<br>
&gt; 1270=C2=A0 in ./Source/NSToolbar.m<br>
&gt; (gdb) po self<br>
&gt; &lt;EmacsToolbar: 0x555557a87500&gt;<br>
&gt; (gdb) po _items<br>
&gt; ()<br>
&gt; <br>
&gt; Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar<=
br>
&gt; instances for a single Emacs frame.=C2=A0 The one from GDB frame 2,<br=
>
&gt; 0x555557a87500, is a &quot;parasite&quot; object: it is initialized at=
 frame<br>
&gt; creation and toolbar items are never insterted in it.<br>
&gt; <br>
&gt; GNUstep&#39;s NSToolbar implementation of -removeItemAtIndex: (called =
from<br>
&gt; EmacsToolbar -clearAll, nsmenu.m:1310) calls the private method<br>
&gt; -_removeItemAtIndex:broadcast: which calls itself recursively,<br>
&gt; dispatching the method call to all instances of the same class with<br=
>
&gt; identical identifiers (see the TRANSMIT macro definition in<br>
&gt; gnustep-gui/Source/NSToolbar.m:1205).=C2=A0 The goal here is to update=
 the<br>
&gt; toolbars of the app&#39;s other windows (&quot;frames&quot; in Emacs t=
erminology) if<br>
&gt; the identifiers match.<br>
&gt; <br>
&gt; Because this first EmacsToolbar instance doesn&#39;t have any toolbar<=
br>
&gt; items, an exception occurs.<br>
<br>
Alan, any comments to the patch?=C2=A0 Because it&#39;s definitely<br>
macOS-specific.<br></blockquote><div><br></div><div class=3D"gmail_default"=
 style=3D"font-family:monospace">It looks like GNUstep on GNU/Linux.=C2=A0 =
Not a combination I have readily available=C2=A0to assist.</div></div></div=
>

--0000000000003808030658f18a9e--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81610; Package emacs. Full text available.

Message received at 81610 <at> debbugs.gnu.org:


Received: (at 81610) by debbugs.gnu.org; 12 Aug 2026 15:01:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 12 11:01:51 2026
Received: from localhost ([127.0.0.1]:35561 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wuASk-0002v1-Jw
	for submit <at> debbugs.gnu.org; Wed, 12 Aug 2026 11:01:51 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:50708)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wuASh-0002ul-VN
 for 81610 <at> debbugs.gnu.org; Wed, 12 Aug 2026 11:01:48 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1wuASU-0002Qx-Nz; Wed, 12 Aug 2026 11:01:41 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=B7ynf1kc4GqMyU5B6JeodoG9nAiQtn6euXow/vEnbw4=; b=io1/UJW8tSYTNgAak9YF
 9cxZz9X77tc5wJpCxqA2Fsv0PxfDtK0f2QgpUQaDvew4pgW1/pY53R9gvEOZsETeymdnd66opNNIM
 6OH6wqrxUU80l8hLfzhDY2zJMEiYPQaB3HOrdyamerZMahZsfX8LBccKmBaIuLctZ4nXMUWu7o1MX
 Od8p9057d68mI1nk5WltPY6tCMOSTAdMmbBkC65Yyl9VsmQTbOsfR2LolXjCVGX2KY1s1jIGcT7Fj
 WRgTJtSwzP7McvlfJG96l1XneEAWlNQp4aQnfN77PuIMDBn8ETLqJeXtkD/iGgOQmqyF1VPoWYDFY
 dqO1ygeggtuYSA==;
Date: Wed, 12 Aug 2026 18:01:18 +0300
Message-Id: <86o6f79ydd.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Yavor Doganov <yavor@HIDDEN>, Alan Third <alan@HIDDEN>
In-Reply-To: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN> (message from Yavor
 Doganov on Wed, 12 Aug 2026 16:54:06 +0300)
Subject: Re: bug#81610: 30.2; [PATCH] NS;
 NSRangeException when enabling tool-bar-mode
References: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81610
Cc: 81610 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Cc: yavor@HIDDEN
> Date: Wed, 12 Aug 2026 16:54:06 +0300
> From: Yavor Doganov <yavor@HIDDEN>
> 
> If I customize the tool-bar-mode variable to nil then the toolbar is
> not displayed, as expected.  However, if I enable it explicitly with
> the interactive command, an exception is thrown: a dialog "Critical
> Error in emacs" appears containing "NSRangeException: Index 0 is out
> of range 0 (in 'objectAtIndex:')".  Emacs then aborts.
> 
> Steps to reproduce:
> 
>   1. emacs -Q --eval "(tool-bar-mode -1)"
>   2. M-x tool-bar-mode RET
> 
> Backtrace and proposed patch below based on the master branch.
> 
> In GNU Emacs 30.2 (build 2, x86_64-pc-linux-gnu, NS
>  gnustep-gui-0.32.0) of 2026-07-04, modified by Debian built on
>  patilan
> Windowing system distributor 'GNU', version 10.3.32
> System Description: Debian GNU/Linux forky/sid
> 
> Configured using:
>  'configure --build x86_64-linux-gnu --prefix=/usr
>  --sharedstatedir=/var/lib --libexecdir=/usr/libexec
>  --localstatedir=/var/lib --infodir=/usr/share/info
>  --mandir=/usr/share/man --with-libsystemd --with-pop=yes
>  --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/share/emacs/site-lisp
>  --with-sound=alsa --without-gconf --with-mailutils --build
>  x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
>  --libexecdir=/usr/libexec --localstatedir=/var/lib
>  --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
>  --with-pop=yes
>  --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/share/emacs/site-lisp
>  --with-sound=alsa --without-gconf --with-mailutils --with-ns
>  --disable-ns-self-contained --without-gif --without-jpeg
>  --without-png --without-rsvg --without-tiff --without-webp 'CFLAGS=-g
>  -O2 -Werror=implicit-function-declaration
>  -ffile-prefix-map=/build/reproducible-path/emacs-30.2+1=. -fstack-protector-strong
>  -fstack-clash-protection -Wformat -Werror=format-security
>  -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
>  LDFLAGS=-Wl,-z,relro'
> 
> Configured features:
> ACL DBUS GMP GNUTLS GPM LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
> NATIVE_COMP NOTIFY INOTIFY NS PDUMPER SECCOMP SOUND SQLITE3 THREADS
> TOOLKIT_SCROLL_BARS TREE_SITTER XIM ZLIB
> 
> (gdb) break -[NSException raise]
> ❌️ Function "-[NSException raise]" not defined.
> Make breakpoint pending on future shared library load? (y or [n]) y
> Breakpoint 1 (-[NSException raise]) pending.
> (gdb) r -Q --eval "(tool-bar-mode -1)"
> Starting program: /home/yavor/src/emacs/src/emacs -Q --eval "(tool-bar-mode -1)"
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".
> ⚠️ warning: Corrupted shared library list: 0x5555564e04b0 != 0x5555564df930
> [New Thread 0x7fffe8d5e6c0 (LWP 246730)]
> 
> Thread 1 "emacs" hit Breakpoint 1, -[NSException raise] (self=0x5555574f8030, 
>     _cmd=0x7ffff758d640 <_OBJC_SELECTOR_TABLE+128>)
>     at ./Source/NSException.m:1602
> ⚠️ warning: 1602	./Source/NSException.m: Няма такъв файл или директория
> (gdb) bt
> #0  -[NSException raise]
>     (self=0x5555574f8030, _cmd=0x7ffff758d640 <_OBJC_SELECTOR_TABLE+128>)
>     at ./Source/NSException.m:1602
> #1  0x00007ffff71c02b4 in -[GSArray objectAtIndex:]
>     (self=0x555557b78bc0, _cmd=<optimized out>, index=0)
>     at ./Source/GSArray.m:355
> #2  0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcast:]
>     (self=0x555557a87500, _cmd=<optimized out>, index=0, broadcast=0 '\000')
>     at ./Source/NSToolbar.m:1270
> #3  0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcast:]
>     (self=0x555557fb5980, _cmd=<optimized out>, index=0, broadcast=<optimized out>) at ./Source/NSToolbar.m:1284
> #4  0x0000555555851b79 in -[EmacsToolbar clearAll]
>     (self=0x555557fb5980, _cmd=<optimized out>) at nsmenu.m:1310
> #5  0x00005555558569de in update_frame_tool_bar_1
>     (f=0x5555560725a0, toolbar=0x555557fb5980) at nsmenu.m:1133
> #6  0x0000555555662e44 in redisplay_window
>     (window=0x5555560f1105, just_this_one_p=just_this_one_p@entry=false)
>     at xdisp.c:21545
> #7  0x0000555555663adb in redisplay_window_0 (window=<optimized out>)
>     at xdisp.c:18531
> #8  0x0000555555773a29 in internal_condition_case_1
>     (bfun=bfun@entry=0x555555663ab0 <redisplay_window_0>, arg=0x5555560f1105, handlers=<optimized out>, hfun=hfun@entry=0x5555556149b0 <redisplay_window_error>) at eval.c:1736
> #9  0x0000555555611c85 in redisplay_windows (window=0x5555560f1105)
>     at xdisp.c:18500
> #10 0x0000555555647cc0 in redisplay_internal () at xdisp.c:17917
> #11 0x0000555555649b75 in redisplay () at xdisp.c:17063
> #12 0x00005555556f0582 in read_char
>     (commandflag=<optimized out>, map=map@entry=0x7fffecf61563, prev_event=<optimized out>, used_mouse_menu=used_mouse_menu@entry=0x7fffffffd76b, end_time=end_time@entry=0x0) at keyboard.c:2711
> #13 0x00005555556f35e3 in read_key_sequence
>     (keybuf=keybuf@entry=0x7fffffffd8b0, prompt=prompt@entry=0x0, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, disable_text_conversion_p=false)
>     at keyboard.c:11224
> #14 0x00005555556f5754 in command_loop_1 () at keyboard.c:1424
> #15 0x00005555557739a4 in internal_condition_case
>     (bfun=bfun@entry=0x5555556f55a0 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556e7b30 <cmd_error>) at eval.c:1712
> #16 0x00005555556df366 in command_loop_2 (handlers=0x90) at keyboard.c:1163
> #17 0x00005555557738fe in internal_catch
>     (tag=tag@entry=0x12270, func=func@entry=0x5555556df340 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1392
> #18 0x00005555556df303 in command_loop () at keyboard.c:1141
> #19 0x00005555556e76e1 in recursive_edit_1 () at keyboard.c:749
> #20 0x00005555556e7a68 in Frecursive_edit () at keyboard.c:832
> #21 0x00005555555f1de8 in main (argc=<optimized out>, argv=<optimized out>)
>     at emacs.c:2635
> (gdb) fr 3
> #3  0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcast:] (
>     self=0x555557fb5980, _cmd=<optimized out>, index=0, 
>     broadcast=<optimized out>) at ./Source/NSToolbar.m:1284
> ⚠️ warning: 1284	./Source/NSToolbar.m: Няма такъв файл или директория
> (gdb) po self
> <EmacsToolbar: 0x555557fb5980>
> (gdb) po _items
> ("<<NSToolbarItem: 0x555557fb5210> - <5864062930753Open>>", "<<NSToolbarItem: 0x555557fb4ac0> - <5864062916976Open Directory>>", "<<NSToolbarItem: 0x555557fb42f0> - <5864062922955Close>>", "<<NSToolbarItem: 0x555557fb3b20> - <5864062924951Save>>", "<<NSToolbarItem: 0x555557fb3350> - <5864062937190Undo>>", "<<NSToolbarItem: 0x555557fb2b80> - <5864062939314Cut>>", "<<NSToolbarItem: 0x555557fb23b0> - <5864062940411Copy>>", "<<NSToolbarItem: 0x555557fb1bc0> - <5864063816493Paste>>", "<<NSToolbarItem: 0x555557fb13f0> - <5864064151308Search>>")
> (gdb) down
> #2  0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcast:] (
>     self=0x555557a87500, _cmd=<optimized out>, index=0, broadcast=0 '\000')
>     at ./Source/NSToolbar.m:1270
> 1270	in ./Source/NSToolbar.m
> (gdb) po self
> <EmacsToolbar: 0x555557a87500>
> (gdb) po _items
> ()
> 
> Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar
> instances for a single Emacs frame.  The one from GDB frame 2,
> 0x555557a87500, is a "parasite" object: it is initialized at frame
> creation and toolbar items are never insterted in it.
> 
> GNUstep's NSToolbar implementation of -removeItemAtIndex: (called from
> EmacsToolbar -clearAll, nsmenu.m:1310) calls the private method
> -_removeItemAtIndex:broadcast: which calls itself recursively,
> dispatching the method call to all instances of the same class with
> identical identifiers (see the TRANSMIT macro definition in
> gnustep-gui/Source/NSToolbar.m:1205).  The goal here is to update the
> toolbars of the app's other windows ("frames" in Emacs terminology) if
> the identifiers match.
> 
> Because this first EmacsToolbar instance doesn't have any toolbar
> items, an exception occurs.

Alan, any comments to the patch?  Because it's definitely
macOS-specific.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81610; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 12 Aug 2026 13:54:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 12 09:54:24 2026
Received: from localhost ([127.0.0.1]:34895 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wu9PT-0007qu-Qs
	for submit <at> debbugs.gnu.org; Wed, 12 Aug 2026 09:54:24 -0400
Received: from lists1p.gnu.org ([2001:470:142::17]:41866)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <yavor@HIDDEN>) id 1wu9PR-0007qg-4R
 for submit <at> debbugs.gnu.org; Wed, 12 Aug 2026 09:54:22 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yavor@HIDDEN>) id 1wu9PL-0004gX-Nb
 for bug-gnu-emacs@HIDDEN; Wed, 12 Aug 2026 09:54:15 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yavor@HIDDEN>) id 1wu9PL-0000Ok-FT
 for bug-gnu-emacs@HIDDEN; Wed, 12 Aug 2026 09:54:15 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Subject:To:From:Date:in-reply-to:
 references; bh=CleoffTTBPw6FjqeXdxTUljfrX6IshIs/eIJ/uxKib0=; b=AKhbjkd1sBeJzb
 YEUlrm6aV9kR+kaASFT0EFeNxqez31rodGBLY+Fw+Q5h8hqw5RRPyyU8BqM44g421cKnrXmauWpUu
 DbiUzzhyy2ZH+Sn07JNXsENHegxCEWMBxlCHg7GHAfFJgxar2TPyb5Q/stQOJ9/dvZNMxs5U/wZHK
 5wIzOwjiPYWBdllpGz+7qS3v/9CC7WjMwrhN9ilAd03OaxG4wo6jAHXYs0sb76Ze673h5lN0nTg9m
 qWLWxehIJNdD13SCiq+/emkp/1LEMSxczxDTgh8QElZIKzZjnbkDSd65SLAkXgeH411Hq6bpUVtu+
 N59ocfdIyO8ftBAj0tXA==;
Date: Wed, 12 Aug 2026 16:54:06 +0300
Message-ID: <87mrurbg1t.GNU's_not_UNIX!-yavor@HIDDEN>
From: Yavor Doganov <yavor@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 30.2; [PATCH] NS; NSRangeException when enabling tool-bar-mode
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/30.2
 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)
Organization: The GNU Emacs Church (Bulgarian Eparchy)
X-Debbugs-Cc: yavor@HIDDEN
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: multipart/mixed; boundary="Multipart_Wed_Aug_12_16:54:06_2026-1"
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--Multipart_Wed_Aug_12_16:54:06_2026-1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If I customize the tool-bar-mode variable to nil then the toolbar is
not displayed, as expected.  However, if I enable it explicitly with
the interactive command, an exception is thrown: a dialog "Critical
Error in emacs" appears containing "NSRangeException: Index 0 is out
of range 0 (in 'objectAtIndex:')".  Emacs then aborts.

Steps to reproduce:

  1. emacs -Q --eval "(tool-bar-mode -1)"
  2. M-x tool-bar-mode RET

Backtrace and proposed patch below based on the master branch.

In GNU Emacs 30.2 (build 2, x86_64-pc-linux-gnu, NS
 gnustep-gui-0.32.0) of 2026-07-04, modified by Debian built on
 patilan
Windowing system distributor 'GNU', version 10.3.32
System Description: Debian GNU/Linux forky/sid

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/libexec --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-ns
 --disable-ns-self-contained --without-gif --without-jpeg
 --without-png --without-rsvg --without-tiff --without-webp 'CFLAGS=-g
 -O2 -Werror=implicit-function-declaration
 -ffile-prefix-map=/build/reproducible-path/emacs-30.2+1=. -fstack-protector-strong
 -fstack-clash-protection -Wformat -Werror=format-security
 -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
 LDFLAGS=-Wl,-z,relro'

Configured features:
ACL DBUS GMP GNUTLS GPM LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
NATIVE_COMP NOTIFY INOTIFY NS PDUMPER SECCOMP SOUND SQLITE3 THREADS
TOOLKIT_SCROLL_BARS TREE_SITTER XIM ZLIB

(gdb) break -[NSException raise]
❌️ Function "-[NSException raise]" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (-[NSException raise]) pending.
(gdb) r -Q --eval "(tool-bar-mode -1)"
Starting program: /home/yavor/src/emacs/src/emacs -Q --eval "(tool-bar-mode -1)"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".
⚠️ warning: Corrupted shared library list: 0x5555564e04b0 != 0x5555564df930
[New Thread 0x7fffe8d5e6c0 (LWP 246730)]

Thread 1 "emacs" hit Breakpoint 1, -[NSException raise] (self=0x5555574f8030, 
    _cmd=0x7ffff758d640 <_OBJC_SELECTOR_TABLE+128>)
    at ./Source/NSException.m:1602
⚠️ warning: 1602	./Source/NSException.m: Няма такъв файл или директория
(gdb) bt
#0  -[NSException raise]
    (self=0x5555574f8030, _cmd=0x7ffff758d640 <_OBJC_SELECTOR_TABLE+128>)
    at ./Source/NSException.m:1602
#1  0x00007ffff71c02b4 in -[GSArray objectAtIndex:]
    (self=0x555557b78bc0, _cmd=<optimized out>, index=0)
    at ./Source/GSArray.m:355
#2  0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcast:]
    (self=0x555557a87500, _cmd=<optimized out>, index=0, broadcast=0 '\000')
    at ./Source/NSToolbar.m:1270
#3  0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcast:]
    (self=0x555557fb5980, _cmd=<optimized out>, index=0, broadcast=<optimized out>) at ./Source/NSToolbar.m:1284
#4  0x0000555555851b79 in -[EmacsToolbar clearAll]
    (self=0x555557fb5980, _cmd=<optimized out>) at nsmenu.m:1310
#5  0x00005555558569de in update_frame_tool_bar_1
    (f=0x5555560725a0, toolbar=0x555557fb5980) at nsmenu.m:1133
#6  0x0000555555662e44 in redisplay_window
    (window=0x5555560f1105, just_this_one_p=just_this_one_p@entry=false)
    at xdisp.c:21545
#7  0x0000555555663adb in redisplay_window_0 (window=<optimized out>)
    at xdisp.c:18531
#8  0x0000555555773a29 in internal_condition_case_1
    (bfun=bfun@entry=0x555555663ab0 <redisplay_window_0>, arg=0x5555560f1105, handlers=<optimized out>, hfun=hfun@entry=0x5555556149b0 <redisplay_window_error>) at eval.c:1736
#9  0x0000555555611c85 in redisplay_windows (window=0x5555560f1105)
    at xdisp.c:18500
#10 0x0000555555647cc0 in redisplay_internal () at xdisp.c:17917
#11 0x0000555555649b75 in redisplay () at xdisp.c:17063
#12 0x00005555556f0582 in read_char
    (commandflag=<optimized out>, map=map@entry=0x7fffecf61563, prev_event=<optimized out>, used_mouse_menu=used_mouse_menu@entry=0x7fffffffd76b, end_time=end_time@entry=0x0) at keyboard.c:2711
#13 0x00005555556f35e3 in read_key_sequence
    (keybuf=keybuf@entry=0x7fffffffd8b0, prompt=prompt@entry=0x0, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, disable_text_conversion_p=false)
    at keyboard.c:11224
#14 0x00005555556f5754 in command_loop_1 () at keyboard.c:1424
#15 0x00005555557739a4 in internal_condition_case
    (bfun=bfun@entry=0x5555556f55a0 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556e7b30 <cmd_error>) at eval.c:1712
#16 0x00005555556df366 in command_loop_2 (handlers=0x90) at keyboard.c:1163
#17 0x00005555557738fe in internal_catch
    (tag=tag@entry=0x12270, func=func@entry=0x5555556df340 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1392
#18 0x00005555556df303 in command_loop () at keyboard.c:1141
#19 0x00005555556e76e1 in recursive_edit_1 () at keyboard.c:749
#20 0x00005555556e7a68 in Frecursive_edit () at keyboard.c:832
#21 0x00005555555f1de8 in main (argc=<optimized out>, argv=<optimized out>)
    at emacs.c:2635
(gdb) fr 3
#3  0x00007ffff7c1dfed in -[NSToolbar _removeItemAtIndex:broadcast:] (
    self=0x555557fb5980, _cmd=<optimized out>, index=0, 
    broadcast=<optimized out>) at ./Source/NSToolbar.m:1284
⚠️ warning: 1284	./Source/NSToolbar.m: Няма такъв файл или директория
(gdb) po self
<EmacsToolbar: 0x555557fb5980>
(gdb) po _items
("<<NSToolbarItem: 0x555557fb5210> - <5864062930753Open>>", "<<NSToolbarItem: 0x555557fb4ac0> - <5864062916976Open Directory>>", "<<NSToolbarItem: 0x555557fb42f0> - <5864062922955Close>>", "<<NSToolbarItem: 0x555557fb3b20> - <5864062924951Save>>", "<<NSToolbarItem: 0x555557fb3350> - <5864062937190Undo>>", "<<NSToolbarItem: 0x555557fb2b80> - <5864062939314Cut>>", "<<NSToolbarItem: 0x555557fb23b0> - <5864062940411Copy>>", "<<NSToolbarItem: 0x555557fb1bc0> - <5864063816493Paste>>", "<<NSToolbarItem: 0x555557fb13f0> - <5864064151308Search>>")
(gdb) down
#2  0x00007ffff7c1dddd in -[NSToolbar _removeItemAtIndex:broadcast:] (
    self=0x555557a87500, _cmd=<optimized out>, index=0, broadcast=0 '\000')
    at ./Source/NSToolbar.m:1270
1270	in ./Source/NSToolbar.m
(gdb) po self
<EmacsToolbar: 0x555557a87500>
(gdb) po _items
()

Notice that in GDB frames 2 and 3 there are two distinct EmacsToolbar
instances for a single Emacs frame.  The one from GDB frame 2,
0x555557a87500, is a "parasite" object: it is initialized at frame
creation and toolbar items are never insterted in it.

GNUstep's NSToolbar implementation of -removeItemAtIndex: (called from
EmacsToolbar -clearAll, nsmenu.m:1310) calls the private method
-_removeItemAtIndex:broadcast: which calls itself recursively,
dispatching the method call to all instances of the same class with
identical identifiers (see the TRANSMIT macro definition in
gnustep-gui/Source/NSToolbar.m:1205).  The goal here is to update the
toolbars of the app's other windows ("frames" in Emacs terminology) if
the identifiers match.

Because this first EmacsToolbar instance doesn't have any toolbar
items, an exception occurs.

--Multipart_Wed_Aug_12_16:54:06_2026-1
Content-Type: text/plain; type=patch; charset=US-ASCII
Content-Disposition: attachment; filename="0001-NS-Fix-NSRangeException-when-enabling-tool-bar-mode.patch"
Content-Transfer-Encoding: 8bit

From 000bcd06ea7430485a6796a7c3fd032be7566103 Mon Sep 17 00:00:00 2001
From: Yavor Doganov <yavor@HIDDEN>
Date: Wed, 12 Aug 2026 16:44:33 +0300
Subject: [PATCH] NS: Fix NSRangeException when enabling tool-bar-mode

* src/nsmenu.m (free_frame_tool_bar): Don't call EmacsWindow
-setToolbar: with a nil argument; fixes NSRangeException when
enabling tool-bar-mode.  (Bug#-1)
---
 src/nsmenu.m | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/nsmenu.m b/src/nsmenu.m
index ab6e7d7140d..a8177b95f35 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1110,8 +1110,6 @@ - (NSRect)confinementRectForMenu:(NSMenu *)menu
   [[[view window] toolbar] setVisible:NO];
   f->output_data.ns->in_animation = 0;
 
-  [[view window] setToolbar:nil];
-
   unblock_input ();
 }
 
-- 
2.55.0


--Multipart_Wed_Aug_12_16:54:06_2026-1--




Acknowledgement sent to Yavor Doganov <yavor@HIDDEN>:
New bug report received and forwarded. Copy sent to yavor@HIDDEN, bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to yavor@HIDDEN, bug-gnu-emacs@HIDDEN:
bug#81610; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 29 Aug 2026 10:00:03 UTC

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