zsh-users
 help / color / mirror / code / Atom feed
From: Kurtis Rader <krader@skepticism.us>
To: Tassilo Horn <tsdh@gnu.org>
Cc: Zsh Users <zsh-users@zsh.org>
Subject: Re: ZSH history not saved anymore
Date: Fri, 26 Sep 2014 07:58:27 -0700	[thread overview]
Message-ID: <CABx2=D9xdeJ0qDNayUG0astemFEtK13SLpA3j8UQT5EqHW_PmA@mail.gmail.com> (raw)
In-Reply-To: <878ul6lrw9.fsf@thinkpad-t440p.tsdh.org>

[-- Attachment #1: Type: text/plain, Size: 2470 bytes --]

Put this in a file named /tmp/z:

TRAPHUP() {
    print exiting on HUP >> /tmp/x
    exit
}
TRAPTERM() {
    print exiting on TERM >> /tmp/x
    exit
}
TRAPKILL() {
    print exiting on KILL >> /tmp/x
    exit
}
TRAPEXIT() {
    print exiting on EXIT >> /tmp/x
    exit
}

rm /tmp/x
print I am pid $$ with these traps in place:
trap

print Run one of these commands in a different shell:
print kill -HUP $$
print kill -TERM $$
print kill -KILL $$

Then start a new shell and source it:

zsh
. /tmp/z

In a different window execute one of the printed kill commands then

cat /tmp/x

Notice that your traps for SIGHUP and SIGTERM are honored but the trap for
SIGKILL is not. That's because the OS kernel ignores any handler for
SIGKILL. So if your terminal emulator is sending SIGKILL there is nothing
zsh can do. If that is happening you should switch to a saner terminal
emulator.

If you're running on a Linux based OS you should be able to trace the
shells interaction with the OS using the strace command. Similarly you
should be able to trace the terminal emulator to see what operating system
calls it is making. One or both of those outputs should make it clear how
the shell is being terminated. You may also find that it's being terminated
with SIGHUP or SIGTERM but the attempt to write the history is failing
(look for failed open() or write() calls).

On Fri, Sep 26, 2014 at 1:15 AM, Tassilo Horn <tsdh@gnu.org> wrote:

> Bart Schaefer <schaefer@brasslantern.com> writes:
>
> Hi Bart,
>
> > } > If you do
> > } >
> > } > TRAPHUP() {
> > } >   print "Exiting on signal" >~/zsh_exited
> > } >   exit
> > } > }
> > } >
> > } > do you see the message being written to the file ~/zsh_exited?
> > }
> > } Nope, there's no such file after terminating the terminal emulator, so
> a
> > } missing SIGHUP is probably the problem.  Sending it to the ZSH process
> > } using kill -SIGHUP works.  Thanks for your help in clearing that up.
> >
> > That still seems a little strange.  If zsh doesn't get HUP, then it
> > should get EOF and write the history at that point.  Something may
> > be killing it off (with a signal stronger than HUP) before it has a
> > chance to finish writing.
>
> I've tried defining trap functions for HUP, TERM, EXIT, KILL, and ABRT,
> none of which seem to be executed when closing the terminal emulator.
>
> Any idea how to debug that further?
>
> Bye,
> Tassilo
>
>


-- 
Kurtis Rader
Caretaker of the exceptional canines Junior and Hank

  reply	other threads:[~2014-09-26 14:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-23 21:03 Tassilo Horn
2014-09-24 19:07 ` Peter Stephenson
2014-09-25  7:10   ` Tassilo Horn
2014-09-26  7:04     ` Bart Schaefer
2014-09-26  8:15       ` Tassilo Horn
2014-09-26 14:58         ` Kurtis Rader [this message]
2014-09-26 20:04           ` Tassilo Horn
2014-09-26 20:34             ` Kurtis Rader
2014-09-27  8:05               ` Tassilo Horn

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CABx2=D9xdeJ0qDNayUG0astemFEtK13SLpA3j8UQT5EqHW_PmA@mail.gmail.com' \
    --to=krader@skepticism.us \
    --cc=tsdh@gnu.org \
    --cc=zsh-users@zsh.org \
    /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.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).