unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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.  */





  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).