/****************************************************************************** ******************************************************************************* ** ** Copyright (C) Sistina Software, Inc. 2002-2003 All rights reserved. ** Copyright (C) 2004 Red Hat, Inc. All rights reserved. ** ** This copyrighted material is made available to anyone wishing to use, ** modify, copy, or redistribute it subject to the terms and conditions ** of the GNU General Public License v.2. ** ******************************************************************************* ******************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "gulm_defines.h" #include "myio.h" #include "core_priv.h" #include "config_gulm.h" #include "utils_ip.h" #include "utils_verb_flags.h" #include "utils_tostr.h" #include "utils_dir.h" /*****************************************************************************/ /* bits of data used by the log_*() and die() functions. */ extern uint32_t verbosity; extern char *ProgramName; /* signal checks. */ int SIGUSR1_TRIPPED = FALSE; int SIGCHLD_TRIPPED = FALSE; extern gulm_config_t gulm_config; /*****************************************************************************/ /** * sigact_usr1 - Dump out internal tables. * @sig: */ static void sigact_usr1(int sig) { dump_nodes(); dump_conf(&gulm_config, FALSE); dump_resources(); } /** * sigact_chld - clear up exited children * @sig: * */ static void sigact_chld(int sig) { SIGCHLD_TRIPPED = TRUE; } /** * sigact_segv - * @sig: * * try to get a backtrace before we puke out. * This may not always work, but since I cannot get daemons to drop core * files, trying this is better than nothing. */ static void sigact_segv(int sig) { struct sigaction act; void *array[200]; size_t size,i; char **strings; size = backtrace(array, 200); strings = backtrace_symbols(array, size); #ifndef DEBUG syslog(LOG_NOTICE, "BACKTRACE\n"); #else fprintf(stderr, "BACKTRACE\n"); #endif for(i=0;i