GNU bug report logs -
#66313
29.1.50; process-mark sometimes does not yield the expected value
Previous Next
Reported by: Markus Triska <triska <at> metalevel.at>
Date: Mon, 2 Oct 2023 19:52:01 UTC
Severity: normal
Found in version 29.1.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #13 received at 66313-done <at> debbugs.gnu.org (full text, mbox):
> From: Markus Triska <triska <at> metalevel.at>
> Date: Sat, 07 Oct 2023 16:15:38 +0200
>
>
> I have reduced this to the following problem: set-process-buffer
> sometimes unexpectedly changes the position of process-mark.
>
> For a shorter test case that exhibits the issue, please download
> process-mark.el from:
>
> https://www.metalevel.at/ei/process-mark/process-mark.el
>
> Its contents are:
>
> (let ((p (start-process "bash" nil "bash")))
> (set-marker (process-mark p) (point))
> (set-process-buffer p (current-buffer))
> (marker-position (process-mark p)))
>
> (message "hello there!")
>
> Place point after the first form in the file, and evaluate the form with
> C-x C-e.
>
> The expected result is: 165. It is obtained with Emacs 26.1 and several
> later versions.
>
> However, with the Emacs version I used to report this problem, the
> result I get is unexpectedly: 192.
>
> I would greatly appreciate if the previous behaviour could be restored.
I fixed this on the emacs-29 branch, but please note that your code is
quite problematic: the set-marker call associates the process-mark
marker with the current buffer, but the process's buffer is still nil.
So between the 2nd and the 3rd line of your snippet, you have a window
where the process-mark points to a buffer different from the buffer
associated with the process. You should do this the other way around:
first set the process-buffer, and then update the process-mark
position to a position in that buffer.
So in a nutshell, your code was hitting "undefined behavior", and
expecting it to be bug-for-bug compatible with old versions of Emacs
was not really reasonable.
This bug report was last modified 1 year and 229 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.