GNU bug report logs -
#58158
29.0.50; [overlay] Interval tree iteration considered harmful
Previous Next
Reported by: Gerd Möllmann <gerd.moellmann <at> gmail.com>
Date: Thu, 29 Sep 2022 05:30:02 UTC
Severity: normal
Found in version 29.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
Message #11 received at 58158 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Gerd Möllmann <gerd.moellmann <at> gmail.com>
>> Date: Thu, 29 Sep 2022 07:29:25 +0200
>>
>> In its current form, interval tree iteration works like this:
>>
>> 1. Call begin_iteration(T) to iterate over tree T
>> 2. do stuff
>> 3. Call end_iteration(T)
>>
>> with the following rules:
>>
>> - Begin_iteration and end_iteration must be paired.
>>
>> - There can be only one iteration per tree at a time. Nested iteration
>> over the same tree is not supported (abort).
>>
>> - No GC may happen in step 2. This is because mark_buffer iterates over
>> buffer overlays.
>>
>> I think this is an exceedingly dangerous design.
>
> Why, because of "no GC" requirement? We could ensure that by calling
> inhibit_garbage_collection (if the code doesn't do that already).
It doesn't.
BTW, if anything signals in step 2, so that end_iteration isn't called,
we're also hosed.
> What higher-level operations require "interval tree iteration" that
> you describe? Which primitives end up doing such iterations?
What has to do with overlays. To name a few: overlay-at, overlays-in,
next-overlay-change, previous-overlay-change, overlay-lists, ...
I personally think this is a no-go.
This bug report was last modified 1 year and 311 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.