GNU bug report logs - #46414
27.1; remove-hook doesn't remove entries from hook--depth-alist

Previous Next

Package: emacs;

Reported by: jakanakaevangeli <jakanakaevangeli <at> chiru.no>

Date: Tue, 9 Feb 2021 23:53:01 UTC

Severity: normal

Tags: moreinfo

Found in version 27.1

Done: <jakanakaevangeli <at> chiru.no>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 46414 in the body.
You can then email your comments to 46414 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#46414; Package emacs. (Tue, 09 Feb 2021 23:53:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to jakanakaevangeli <jakanakaevangeli <at> chiru.no>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 09 Feb 2021 23:53:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: jakanakaevangeli <jakanakaevangeli <at> chiru.no>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.1; remove-hook doesn't remove entries from hook--depth-alist
Date: Wed, 10 Feb 2021 00:56:14 +0100
add-hook can add an entry to the hook symbol's hook--depth-alist
property and remove-hook doesn't remove it. This means that for each
call to eval-after-load, after-load-functions' hook--depth-alist gets a
new element when the feature is loaded, which can hinder performance.

This can also cause problems if your completing-read-function uses

    (minibuffer-with-setup-hook (:append generated-function-symbol)
      (read-from-minibuffer ...))

This will add a new element to minibuffer-setup-hook's the depth alist
for each completing-read session (such is the case when using
selectrum.el [1] completion function).

[1] https://github.com/raxod502/selectrum/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46414; Package emacs. (Thu, 16 Jun 2022 13:42:02 GMT) Full text and rfc822 format available.

Message #8 received at 46414 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: jakanakaevangeli <jakanakaevangeli <at> chiru.no>
Cc: 46414 <at> debbugs.gnu.org
Subject: Re: bug#46414: 27.1; remove-hook doesn't remove entries from
 hook--depth-alist
Date: Thu, 16 Jun 2022 15:40:56 +0200
jakanakaevangeli <jakanakaevangeli <at> chiru.no> writes:

> add-hook can add an entry to the hook symbol's hook--depth-alist
> property and remove-hook doesn't remove it. This means that for each
> call to eval-after-load, after-load-functions' hook--depth-alist gets a
> new element when the feature is loaded, which can hinder performance.
>
> This can also cause problems if your completing-read-function uses
>
>     (minibuffer-with-setup-hook (:append generated-function-symbol)
>       (read-from-minibuffer ...))
>
> This will add a new element to minibuffer-setup-hook's the depth alist
> for each completing-read session (such is the case when using
> selectrum.el [1] completion function).

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

The test case here isn't complete, so I can't test whether the problem
is still present.  I think it might have been fixed by:

commit 4bd7963e2e244ace94afa59124f2637543d74ba2
Author:     Stefan Monnier <monnier <at> iro.umontreal.ca>
AuthorDate: Tue Feb 22 10:18:43 2022 -0500

    (add-hook, remove-hook): Fix leaks (bug#48666)
    
    * lisp/subr.el (add-hook, remove-hook): Rewrite the hook depth
    management so we only keep the info relevant to functions present on
    the hook.

Do you still see this problem in Emacs 29?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) moreinfo. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 16 Jun 2022 13:42:02 GMT) Full text and rfc822 format available.

Reply sent to <jakanakaevangeli <at> chiru.no>:
You have taken responsibility. (Thu, 16 Jun 2022 14:09:01 GMT) Full text and rfc822 format available.

Notification sent to jakanakaevangeli <jakanakaevangeli <at> chiru.no>:
bug acknowledged by developer. (Thu, 16 Jun 2022 14:09:02 GMT) Full text and rfc822 format available.

Message #15 received at 46414-done <at> debbugs.gnu.org (full text, mbox):

From: <jakanakaevangeli <at> chiru.no>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 46414-done <at> debbugs.gnu.org
Subject: Re: bug#46414: 27.1; remove-hook doesn't remove entries from
 hook--depth-alist
Date: Thu, 16 Jun 2022 16:18:55 +0200
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> jakanakaevangeli <jakanakaevangeli <at> chiru.no> writes:
>
>> add-hook can add an entry to the hook symbol's hook--depth-alist
>> property and remove-hook doesn't remove it. This means that for each
>> call to eval-after-load, after-load-functions' hook--depth-alist gets a
>> new element when the feature is loaded, which can hinder performance.
>>
>> This can also cause problems if your completing-read-function uses
>>
>>     (minibuffer-with-setup-hook (:append generated-function-symbol)
>>       (read-from-minibuffer ...))
>>
>> This will add a new element to minibuffer-setup-hook's the depth alist
>> for each completing-read session (such is the case when using
>> selectrum.el [1] completion function).
>
> (I'm going through old bug reports that unfortunately weren't resolved
> at the time.)
>
> The test case here isn't complete, so I can't test whether the problem
> is still present.  I think it might have been fixed by:
>
> commit 4bd7963e2e244ace94afa59124f2637543d74ba2
> Author:     Stefan Monnier <monnier <at> iro.umontreal.ca>
> AuthorDate: Tue Feb 22 10:18:43 2022 -0500
>
>     (add-hook, remove-hook): Fix leaks (bug#48666)
>     
>     * lisp/subr.el (add-hook, remove-hook): Rewrite the hook depth
>     management so we only keep the info relevant to functions present on
>     the hook.
>
> Do you still see this problem in Emacs 29?
>
> -- 
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no

Yep it was fixed by this commit and also the related


commit db92e83797bf2f1af4e0b0383283a49968746b51
Author: Stefan Monnier <monnier <at> iro.umontreal.ca>
Date:   Fri Apr 23 16:50:12 2021 -0400

    * lisp/subr.el (add-hook): Try and fix bug#46326
    
    Use `eq` indexing on `hook--depth-alist`.
    
    (remove-hook): Remove old entries from `hook--depth-alist`.

Thanks.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 15 Jul 2022 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 297 days ago.

Previous Next


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