GNU bug report logs - #69706
30.0.50; sort.c, unnecessary GC marking

Previous Next

Package: emacs;

Reported by: Gerd Möllmann <gerd.moellmann <at> gmail.com>

Date: Sun, 10 Mar 2024 08:46:02 UTC

Severity: normal

Found in version 30.0.50

Fixed in version 30.1

Done: Gerd Möllmann <gerd.moellmann <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Mattias Engdegård <mattias.engdegard <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Gerd Möllmann <gerd.moellmann <at> gmail.com>, Stefan Monnier <monnier <at> iro.umontreal.ca>, 69706 <at> debbugs.gnu.org
Subject: bug#69706: 30.0.50; sort.c, unnecessary GC marking
Date: Sun, 10 Mar 2024 12:16:42 +0100
>> sort.c uses record_unwind_protect_mark to let GC mark some objects in
>> its merge_state structure, while GC marks the specpdl stack.
>> 
>> This is
>> 
>> - unnecessary because all the objects that are currrently extra
>>  protected by merge_markmem, are already seen by the GC, because these
>>  are the objects being sorted, which are protected in the usual way
>>  (marking the control stack, ...)

Thank you Gerd, but I don't think we can guarantee that those objects are present anywhere else -- the original vector is being mutated by the algorithm, after all.

In addition, I have Grand Plans (well, some kind of plans) for an improvement to the sorting code that will likely require record_unwind_protect_mark or an equivalent facility. A new bug will be opened about that.





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

Previous Next


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