GNU bug report logs -
#76969
kill-buffer fails silently when a thread exists where it's current
Previous Next
Full log
Message #29 received at 76969 <at> debbugs.gnu.org (full text, mbox):
On 13/03/2025 22:29, Eli Zaretskii wrote:
>> If the direct kill-buffer call swaps the buffer under you, it's somewhat
>> odd, but at least it's predictable and can be debugged. Having a
>> different thread do that do your execution flow at a random time is
>> quite another thing.
>
> Suppose a process filter or sentinel, or a timer does that -- is that
> any different? should we forbid that?
Yeah, I think a timer or a sentinel killing a non-"private" buffer would
be a programmer error. Still, in that case the caller can compare the
kill-buffer argument to current-buffer and see that they're equal - so
print-debugging would still work (or edebug, etc).
>>>> And/or if the killing does not happen, showing a warning or an error
>>>> would be an improvement.
>>>
>>> We could signal an error, yes. But it sounds too drastic to me.
>>
>> Or a warning, or an entry in *Messages*, at least. Anything's better
>> than silent noop. And you can't examine the thread's current buffer in
>> Lisp, to find the conflicting thread another way from Lisp (e.g. for
>> print-debugging).
>
> I'd still prefer to kill the buffer, just more safely. I mean, how is
> this different from killing a buffer that is displayed in one or more
> windows? We do handle that.
Okay, how about Spencer's suggestion (maybe modulo the
kill-buffer-query-functions part)? When we try to kill a buffer that is
current to a thread, we first send a signal to that thread (to be
handled async), then switch that thread's buffer to another (*). Do that
check in all threads, then kill the buffer.
This way the Lisp code running in there would be notified about the
change - and probably crash right away unless it expects this specific
error. Better than a silent change.
(*) Though we should probably do that after and if all
kill-buffer-query-functions have run with positive result.
This bug report was last modified 1 day ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.