[sheepdog] [PATCH] shepherd: use install_crash_handler() from shepherd
Hitoshi Mitake
mitake.hitoshi at gmail.com
Tue May 14 18:35:49 CEST 2013
The utilities related to signals provided by libsheepdog.a is also
useful for shepherd. This patch lets shepherd use it.
Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
---
shepherd/shepherd.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/shepherd/shepherd.c b/shepherd/shepherd.c
index 6f0c30a..6eef5a3 100644
--- a/shepherd/shepherd.c
+++ b/shepherd/shepherd.c
@@ -764,6 +764,16 @@ static int set_listen_fd_cb(int fd, void *data)
return 0;
}
+static void crash_handler(int signo)
+{
+ sd_printf(SDOG_EMERG, "shepherd exits unexpectedly (%s).",
+ strsignal(signo));
+
+ sd_backtrace();
+
+ reraise_crash_signal(signo, 1);
+}
+
int main(int argc, char **argv)
{
int ch, ret, longindex;
@@ -782,6 +792,8 @@ int main(int argc, char **argv)
progname = argv[0];
+ install_crash_handler(crash_handler);
+
long_options = build_long_options(shepherd_options);
short_options = build_short_options(shepherd_options);
--
1.7.5.1
More information about the sheepdog
mailing list