From: Eli Zaretskii <eliz@gnu.org>
To: Kai Ma <justksqsf@gmail.com>
Cc: 65060@debbugs.gnu.org
Subject: bug#65060: 29.1.50; display_count_lines segv
Date: Sat, 12 Aug 2023 11:41:17 +0300 [thread overview]
Message-ID: <83msywejpu.fsf@gnu.org> (raw)
In-Reply-To: <325C6C15-2066-4331-8948-11BEC717ADE9@gmail.com> (message from Kai Ma on Sat, 12 Aug 2023 15:28:16 +0800)
> From: Kai Ma <justksqsf@gmail.com>
> Date: Sat, 12 Aug 2023 15:28:16 +0800
> Cc: 65060@debbugs.gnu.org
>
> > On Aug 12, 2023, at 14:50, Eli Zaretskii <eliz@gnu.org> wrote:
> >
> > Ping! Can you please help me finish investigating this bug by
> > providing the information I asked for? Armed with that information, I
> > think I will be able to find a solution.
>
> Sorry for the late reply!
>
> cursor (before do) = 0x0
> * GPT_BYTE = 3072
> * GAP_SIZE = 2000
> * BEG_ADDR = 0x0
> * current_buffer->text->beg = 0x0
>
> cursor (before memchr) = 0x0
> * GPT_BYTE = 3072
> * GAP_SIZE = 2000
> * BEG_ADDR = 0x0
> * current_buffer->text->beg = 0x0
Thanks. My guess was correct: the buffer in question was killed.
Could you please try the patch below, and see if it avoids the
crashes? The patch causes Emacs to signal an error when
format-mode-line is called for a dead buffer, so if I did this
correctly, you should see that Emacs no longer crashes, but there are
error messages about a dead buffer in *Messages*. If this is what
happens, you should then take this up with the dirvish developers, and
ask them to avoid calling format-mode-line for a killed buffer.
diff --git a/src/fns.c b/src/fns.c
index 2ed62d6..af5f947 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -6123,6 +6123,9 @@ DEFUN ("line-number-at-pos", Fline_number_at_pos,
{
ptrdiff_t pos_byte, start_byte = BEGV_BYTE;
+ if (!BUFFER_LIVE_P (current_buffer))
+ error ("Attempt to count lines in a dead buffer");
+
if (MARKERP (position))
{
/* We don't trust the byte position if the marker's buffer is
diff --git a/src/xdisp.c b/src/xdisp.c
index 2250897..1141707 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -27653,6 +27653,8 @@ DEFUN ("format-mode-line", Fformat_mode_line, Sformat_mode_line,
if (NILP (buffer))
buffer = w->contents;
CHECK_BUFFER (buffer);
+ if (!BUFFER_LIVE_P (XBUFFER (buffer)))
+ error ("Attempt to format a mode line for a dead buffer");
/* Make formatting the modeline a non-op when noninteractive, otherwise
there will be problems later caused by a partially initialized frame. */
next prev parent reply other threads:[~2023-08-12 8:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-04 21:41 bug#65060: 29.1.50; display_count_lines segv Kai Ma
2023-08-05 6:24 ` Eli Zaretskii
2023-08-12 6:50 ` Eli Zaretskii
2023-08-12 7:28 ` Kai Ma
2023-08-12 8:41 ` Eli Zaretskii [this message]
2023-08-12 11:56 ` Kai Ma
2023-08-12 12:08 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83msywejpu.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=65060@debbugs.gnu.org \
--cc=justksqsf@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).