unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Pip Cet <pipcet@gmail.com>
Cc: 39962@debbugs.gnu.org, pieter-l@vanoostrum.org, eggert@cs.ucla.edu
Subject: bug#39962: 27.0.90; Crash in Emacs 27.0.90
Date: Fri, 13 Mar 2020 18:30:40 +0200	[thread overview]
Message-ID: <831rpw8bf3.fsf@gnu.org> (raw)
In-Reply-To: <CAOqdjBdB6dNiK==8oZaW=AHYhzov15Krk+xU4zH--KM6LONzYg@mail.gmail.com> (message from Pip Cet on Fri, 13 Mar 2020 13:56:07 +0000)

> From: Pip Cet <pipcet@gmail.com>
> Date: Fri, 13 Mar 2020 13:56:07 +0000
> Cc: pieter-l@vanoostrum.org, 39962@debbugs.gnu.org, eggert@cs.ucla.edu
> 
> On Fri, Mar 13, 2020 at 9:40 AM Eli Zaretskii <eliz@gnu.org> wrote:
> > > > > It doesn't affect visible behavior of any callers, except in the case
> > > > > where the previous behavior was buggy.
> > > >
> > > > I guess we have different notions of "visible"
> > >
> > > Please say something about your notion of "visible". It doesn't affect
> > > any of the existing C callers of valid_lisp_object_p. Are you talking
> > > about printing valid_lisp_object_p(x) in a debugger, and not getting
> > > the expected value? Or something else?
> >
> > I'm talking about the behavior documented in the commentary.
> 
> You're right if your point is the comment should be adjusted to omit
> the unnecessary, and unused, special behavior on killed buffers.

I don't yet think that function's behavior should be changed.  See
below.

> > > > and "buggy".
> > >
> > > It avoids segfaults or random memory corruption. How is that not "buggy"?
> >
> > That's not the issue here.  You said the proposed change didn't change
> > the behavior "except where it was buggy"; I'm saying that it changes
> > the behavior unrelated to this bug, where previous behavior was not
> > buggy by any measure.
> 
> How so? Can you describe a scenario in which Emacs would behave at all
> differently?

The behavior of live_buffer_p and valid_lisp_object_p changed, and
those functions weren't "buggy" before.

> valid_lisp_object_p returns a different value, sure; but
> none of its callers care about the difference, so Emacs behavior
> overall does not change.

I wasn't talking about behavior of Emacs as a whole.

And I don't understand why you are arguing about this.  You asked me
to say something about my notion of "visible", and I did.  Will
arguing about _my_ notion of that get us to some useful place?

> > > (gdb) p current_thread->m_current_buffer
> > > $3 = (struct buffer *) 0x555556694b10
> > > (gdb) p valid_lisp_object_p(0x555556694b15)
> > > $4 = 1
> > > (gdb) p valid_lisp_object_p(0x555556694b25)
> > > $5 = 1
> >
> > Why do you consider this incorrect?  The Emacs GC is "conservative",
> > which means it doesn't collect anything that _might_ be a valid Lisp
> > object.  In what ways does the above violate that contract?
> 
> GC is conservative; valid_lisp_object_p is documented to be precise: a
> return value of 1 or 2 means that the object is valid, not that it's
> potentially valid and potentially nonsense.

But what does "valid" mean in this case?  The part that looks at the
stack uses the stack-marking routines, and thus inherits the
"conservative" nature of stack marking.  The code also makes it quite
clear that it only considers "live" objects as valid, and a killed
buffer is not "live".  So I still don't understand in what way the
above results are incorrect.

> > Your patch modifies the notion of whether a buffer is "live",
> 
> No, it modifies a specific function (mis)named buffer_live_p.

Which, among other things, checks whether a buffer is "live".  So it
is not necessarily mis-named.

> The dozens of places in which we check whether a buffer is "live",
> as opposed to "killed", are unaffected. Only GC is affected.

No, not only GC is affected.  Some of the callers are outside GC,
we've been there up-thread, and agreed about that.

> A buffer should be marked iff it is reachable
> 
> A buffer is marked iff it is reachable from the heap or it is
> reachable from the stack and buffer_live_p returns true
> 
> Therefore, it is invalid for buffer_live_p to return false for a
> buffer which is reachable from the stack.

This mixes two notions: a "live" buffer and a buffer that should be
marked.  They are not the same.

> > if so, how come stack marking didn't find it?
> 
> Because we are talking about the stack marking! The stack marking
> calls buffer_live_p to check whether it should actually mark the
> buffer or not.

Fine, so you are saying that stack marking should disregard whether a
buffer is "live"?  Then let's make such a change only for stack
marking, not in a function called from other places.





  reply	other threads:[~2020-03-13 16:30 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-06 23:55 bug#39962: 27.0.90; Crash in Emacs 27.0.90 Pieter van Oostrum
2020-03-07  7:48 ` Eli Zaretskii
2020-03-07  8:40   ` Pieter van Oostrum
2020-03-07  8:41   ` Pieter van Oostrum
2020-03-07 10:51     ` Eli Zaretskii
2020-03-07 11:06   ` Pieter van Oostrum
2020-03-07 13:10     ` Eli Zaretskii
2020-03-07 15:06       ` Pieter van Oostrum
2020-03-07 15:17         ` Eli Zaretskii
2020-03-07 15:49           ` Pieter van Oostrum
2020-03-07 16:07             ` Eli Zaretskii
2020-03-07 17:21               ` Pieter van Oostrum
2020-03-07 18:01                 ` Eli Zaretskii
2020-03-07 19:14                   ` Pieter van Oostrum
2020-03-07 19:21                     ` Eli Zaretskii
2020-03-07 22:07                       ` Pieter van Oostrum
2020-03-09  4:00     ` Pip Cet
2020-03-08  7:42 ` Paul Eggert
2020-03-08  9:34   ` Pieter van Oostrum
2020-03-08 10:05     ` Paul Eggert
2020-03-08 21:37       ` Pieter van Oostrum
2020-03-08 21:58         ` Pieter van Oostrum
2020-03-08 22:34         ` Paul Eggert
2020-03-08 23:58           ` Pieter van Oostrum
2020-03-09  0:01             ` Paul Eggert
2020-03-09 13:26               ` Pieter van Oostrum
2020-03-09 17:10                 ` Eli Zaretskii
2020-03-09 19:48                   ` Pieter van Oostrum
2020-03-10 13:37                     ` Pieter van Oostrum
2020-03-09 19:51                   ` Paul Eggert
2020-03-09 21:32                     ` Pieter van Oostrum
2020-03-10 10:52                       ` Pieter van Oostrum
2020-03-10 14:19                         ` Pip Cet
2020-03-10 16:36                           ` Pieter van Oostrum
2020-03-11 14:32                             ` Pip Cet
2020-03-11 15:16                               ` Pieter van Oostrum
2020-03-11 15:43                                 ` Pip Cet
2020-03-11 15:51                                   ` Paul Eggert
2020-03-11 16:21                                     ` Eli Zaretskii
2020-03-11 17:52                                   ` Eli Zaretskii
2020-03-11 18:53                                     ` Pip Cet
2020-03-11 19:34                                       ` Eli Zaretskii
2020-03-12 10:32                                         ` Pip Cet
2020-03-12 15:23                                           ` Eli Zaretskii
2020-03-12 20:36                                             ` Pip Cet
2020-03-13  9:39                                               ` Eli Zaretskii
2020-03-13 13:56                                                 ` Pip Cet
2020-03-13 16:30                                                   ` Eli Zaretskii [this message]
2020-03-14  9:02                                                     ` Pip Cet
2020-03-14 15:39                                                       ` Pip Cet
2020-03-14 16:00                                                         ` Paul Eggert
2020-03-14 16:15                                                           ` Pip Cet
2020-03-14 16:57                                                             ` Eli Zaretskii
2020-03-14 18:34                                                               ` Pip Cet
2020-03-14 19:09                                                                 ` Paul Eggert
2020-03-14 20:10                                                                   ` Eli Zaretskii
2020-03-15 12:12                                                                     ` Pip Cet
2020-03-15 14:53                                                                       ` Eli Zaretskii
2020-03-15 12:09                                                                   ` Pip Cet
2020-03-15 14:50                                                                     ` Eli Zaretskii
2020-03-16 16:31                                                     ` Stefan Monnier
2020-03-11 20:03                                   ` Pieter van Oostrum
2020-03-12 13:55                                     ` Pip Cet
2020-03-12 18:13                                       ` Pieter van Oostrum
2020-03-12 20:00                                         ` Pip Cet
2020-03-13  8:09                                           ` Eli Zaretskii
2020-03-13  8:39                                             ` Pip Cet
2020-03-13  9:19                                               ` Eli Zaretskii
2020-03-13 17:43                                                 ` Pieter van Oostrum
2020-03-14  3:38                                                 ` Richard Stallman
2020-03-14  8:37                                                   ` Eli Zaretskii
2020-03-14  9:16                                                     ` Pip Cet
2020-03-14 15:34                                                       ` Pip Cet
2020-03-13 17:42                                             ` Pieter van Oostrum
2020-03-13 19:34                                               ` Eli Zaretskii
2020-03-13 21:35                                                 ` Pieter van Oostrum
2020-03-14  8:08                                                   ` Eli Zaretskii
2020-03-14 21:32                                                     ` Pieter van Oostrum
2020-03-15 19:49                                                       ` Pieter van Oostrum
2020-03-15 19:57                                                         ` Eli Zaretskii
2020-03-15 23:26                                                           ` Pieter van Oostrum
2020-03-16 10:44                                                             ` Pieter van Oostrum
2020-03-16 15:07                                                               ` Eli Zaretskii
2020-03-16 15:33                                                               ` Pip Cet
2020-03-16 17:19                                                                 ` Pip Cet
2020-03-17  3:29                                                                   ` Pieter van Oostrum
2020-03-17  4:54                                                                     ` Pip Cet
2020-03-17  5:20                                                                       ` Pip Cet
2020-03-17  8:45                                                                         ` Pieter van Oostrum
2020-03-17 13:54                                                                           ` Pip Cet
2020-03-17 15:27                                                                             ` Pieter van Oostrum
2020-03-17 20:16                                                                               ` Pip Cet
2020-03-17 23:32                                                                                 ` Pieter van Oostrum
2020-03-18 15:05                                                                                   ` Eli Zaretskii
2020-03-19 13:23                                                                                     ` Pieter van Oostrum
2020-03-19 13:57                                                                                       ` Pip Cet
2020-03-21 21:22                                                                                         ` Pieter van Oostrum
2020-03-22 14:21                                                                                           ` Eli Zaretskii
2020-03-22 15:48                                                                                           ` Pip Cet
2020-03-23 19:34                                                                                             ` Pip Cet
2020-03-17  8:40                                                                       ` Pieter van Oostrum
2020-03-17 15:33                                                                     ` Eli Zaretskii
2020-03-17 20:59                                                                       ` Paul Eggert
2020-03-18  6:17                                                                         ` Pip Cet
2020-03-18  9:22                                                                           ` Robert Pluim
2020-03-18 11:38                                                                             ` Pieter van Oostrum
2020-03-18 11:57                                                                               ` Paul Eggert
2020-03-18 14:08                                                                               ` Pip Cet
2020-03-19 19:17                                                                                 ` Pieter van Oostrum
2020-03-19 19:31                                                                                   ` Pip Cet
2020-03-19 21:30                                                                                     ` Pieter van Oostrum
2020-03-18 14:08                                                                           ` Eli Zaretskii
2020-03-16 18:36                                                                 ` Pieter van Oostrum
2020-03-13  7:58                                         ` Eli Zaretskii
2020-03-10 15:10                         ` Eli Zaretskii
2020-03-10 18:23                           ` Pieter van Oostrum
2020-03-11  8:22                         ` Paul Eggert
2022-04-30 12:38 ` Lars Ingebrigtsen
2022-05-29 13:19   ` Lars Ingebrigtsen

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=831rpw8bf3.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=39962@debbugs.gnu.org \
    --cc=eggert@cs.ucla.edu \
    --cc=pieter-l@vanoostrum.org \
    --cc=pipcet@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).