unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Barry OReilly <gundaetiapo@gmail.com>
Cc: schwab@suse.de, 15794@debbugs.gnu.org
Subject: bug#15794: Core dump after SIGTERM during GC marking
Date: Tue, 05 Nov 2013 19:16:51 +0200	[thread overview]
Message-ID: <83y5527oqk.fsf@gnu.org> (raw)
In-Reply-To: <CAFM41H0vqf3myAYcGmSqLg-6woL20yU-h7N43F4XEddm4i396Q@mail.gmail.com>

> Date: Tue, 5 Nov 2013 11:52:09 -0500
> From: Barry OReilly <gundaetiapo@gmail.com>
> Cc: Andreas Schwab <schwab@suse.de>, 15794 <15794@debbugs.gnu.org>
> 
> Since I can't reproduce the original crash, I am trying other means of
> gathering evidence.

I understand.  I'm just saying that you don't necessarily see the same
problem.

> A SIGTERM could be handled at any time right?
> Including as in this artificial reproduction.

Yes, but the effect and the results could be different.

> > But the Lisp backtrace doesn't tell which function of the
> > kill-emacs-hook was running,
> 
> Yes it does. The hook is ede-save-cache. It is one of the two hooks my
> configuration sets up, as I indicated earlier.

Maybe, but I will believe that when I see it explicitly.  Backtraces
from optimized builds are not to be trusted too much.

> > and GC didn't really start doing its job, so it's not exactly the
> > same crash.
> 
> It is after gc_in_progress = 1.

Yes, but the flag is not the issue here.  The issue here is that while
GC runs, it marks Lisp objects, which might make them look invalid to
Lisp code.  In addition, GC can compact strings and other objects, and
if the signal hits at that moment, Lisp code could start working on an
invalid string, or string whose data was moved elsewhere.  But all
this happens when mark_object and its subroutines have really done
some non-trivial job; when you stop GC before they start, all those
problems did not yet materialize.

> Are you trying to argue Emacs cannot possibly enter the SIGTERM
> handler between that and when GC "really starts doing its job"
> (whenever that is)?

No, of course not.

> > And look at the variable 'args', which should be a list. Since this
> > session crashed in GC, it is not safe to print Lisp objects with
> > "pp" and its likes. Instead, you will have to walk the list using
> > "xcar" and "xcdr", display the type of each object in the list using
> > "xtype", and then display the object itself with the appropriate x*
> > command, normally "xsymbol", since the list is constructed from
> > function symbols.
> 
> Can this be done for core dump files?

Yes, the commands I mentioned work for core dumps as well.  They just
manipulate bit masks.

Btw, if you want to see a better backtrace, both in C and in Lisp,
remove or rename the *.elc files of the involved packages.  then Emacs
will run the *.el files in the interpreter, and you will see much more
detail, instead of all those unhelpful exec_byte_code calls that tell
nothing about what is being invoked.





  reply	other threads:[~2013-11-05 17:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-03  4:28 bug#15794: Core dump after SIGTERM during GC marking Barry OReilly
2013-11-03  6:37 ` Andreas Schwab
2013-11-03 17:41   ` Eli Zaretskii
2013-11-03 18:03     ` Andreas Schwab
2013-11-03 19:52       ` Eli Zaretskii
2013-11-03 20:29         ` Barry OReilly
2013-11-03 20:39           ` Eli Zaretskii
2013-11-03 20:42           ` Eli Zaretskii
2013-11-03 22:22         ` Andreas Schwab
2013-11-04  3:38           ` Eli Zaretskii
2013-11-04  8:56             ` Andreas Schwab
2013-11-04 16:02               ` Eli Zaretskii
2013-11-04 16:18                 ` Andreas Schwab
2013-11-05 15:27                   ` Barry OReilly
2013-11-05 15:53                     ` Eli Zaretskii
2013-11-05 16:52                       ` Barry OReilly
2013-11-05 17:16                         ` Eli Zaretskii [this message]
2019-09-29 14:00                           ` Lars Ingebrigtsen
2013-11-03 17:39 ` 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=83y5527oqk.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=15794@debbugs.gnu.org \
    --cc=gundaetiapo@gmail.com \
    --cc=schwab@suse.de \
    /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).