This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
Re: libgcj/7532: shutdown hooks not run upon abnormal termination
- From: Andrew Haley <aph at cambridge dot redhat dot com>
- To: nobody at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org,
- Date: 19 Aug 2002 09:16:02 -0000
- Subject: Re: libgcj/7532: shutdown hooks not run upon abnormal termination
- Reply-to: Andrew Haley <aph at cambridge dot redhat dot com>
The following reply was made to PR libgcj/7532; it has been noted by GNATS.
From: Andrew Haley <aph@cambridge.redhat.com>
To: tromey@redhat.com
Cc: <jmr@fulcrummicro.com>, gcc-gnats@gcc.gnu.org
Subject: Re: libgcj/7532: shutdown hooks not run upon abnormal termination
Date: Mon, 19 Aug 2002 10:08:29 +0100 (BST)
Tom Tromey writes:
> jmr> Shutdown hooks added with Runtime.addShutdownHook() are not run
> jmr> if the program terminates abnormally, ie due to Ctrl-C.
>
> Yeah, definitely a bug.
>
> jmr> Here's a patch that installs a signal handler to catch SIGHUP, SIGINT, and
> jmr> SIGTERM. The handler calls System.exit() so the shutdown hooks run.
> jmr> Installation of the signal handlers can be disabled with
> jmr> --reduce-signal-usage.
>
> I don't think we can do this stuff directly from the signal handler.
> I'm not sure what a better approach is though. Maybe Andrew has an idea.
I think it's legal to do this from a signal handler. However, we
might deadlock if a thread is inside a synchronized region at the time
the ctrl-C is caught. We could perhaps solve this by sending a
message to a dedicated shutdown thread instead of quitting immediately
but I don't know if the extra complexity can be justified.
However, we must ensure that if a second ctrl-C is received we
terminate immediately.
> I also don't think we need a gij command-line argument to reduce
> signal usage.
I agree.
Andrew.