summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-09-10 08:44:56 +0800
committerkcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-09-10 08:44:56 +0800
commitaed058b9cf94d0049f216460f98b6ad7ab81c80e (patch)
treeef6b129ccfec8cabc5577a63e90051a4d443af40
parent4e23baabfaa4661b58dac17128e91d761df18ab3 (diff)
downloadpttbbs-piaip.automake@3147.tar
pttbbs-piaip.automake@3147.tar.gz
pttbbs-piaip.automake@3147.tar.bz2
pttbbs-piaip.automake@3147.tar.lz
pttbbs-piaip.automake@3147.tar.xz
pttbbs-piaip.automake@3147.tar.zst
pttbbs-piaip.automake@3147.zip
catch SIGXCPU for debug.piaip.automake@3147
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3147 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--include/statistic.h1
-rw-r--r--mbbsd/mbbsd.c5
-rw-r--r--util/shmctl.c1
3 files changed, 6 insertions, 1 deletions
diff --git a/include/statistic.h b/include/statistic.h
index a2b66a85..0d22f6f0 100644
--- a/include/statistic.h
+++ b/include/statistic.h
@@ -44,6 +44,7 @@ enum { // XXX description in shmctl.c
STAT_READPOST_3DAY,
STAT_READPOST_7DAY,
STAT_READPOST_OLD,
+ STAT_SIGXCPU,
/* insert here. don't forget update shmctl.c */
STAT_NUM,
STAT_MAX=512
diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c
index 1bac7469..83bdc709 100644
--- a/mbbsd/mbbsd.c
+++ b/mbbsd/mbbsd.c
@@ -219,6 +219,7 @@ abort_bbs_debug(int sig)
case SIGFPE: STATINC(STAT_SIGFPE); break;
case SIGBUS: STATINC(STAT_SIGBUS); break;
case SIGSEGV: STATINC(STAT_SIGSEGV); break;
+ case SIGXCPU: STATINC(STAT_SIGXCPU); break;
}
/* ignore normal signals */
Signal(SIGALRM, SIG_IGN);
@@ -237,6 +238,7 @@ abort_bbs_debug(int sig)
sigaddset(&sigset, SIGFPE);
sigaddset(&sigset, SIGBUS);
sigaddset(&sigset, SIGSEGV);
+ sigaddset(&sigset, SIGXCPU);
sigprocmask(SIG_UNBLOCK, &sigset, NULL);
#define CRASH_MSG ANSI_COLOR(0) "\r\n程式異常, 立刻斷線. 請洽 PttBug 板詳述你發生的問題.\n"
@@ -1169,7 +1171,7 @@ start_client(void)
{
#ifdef CPULIMIT
struct rlimit rml;
- rml.rlim_cur = CPULIMIT * 60;
+ rml.rlim_cur = CPULIMIT * 60 - 5;
rml.rlim_max = CPULIMIT * 60;
setrlimit(RLIMIT_CPU, &rml);
#endif
@@ -1191,6 +1193,7 @@ start_client(void)
Signal(SIGFPE, abort_bbs_debug);
Signal(SIGBUS, abort_bbs_debug);
Signal(SIGSEGV, abort_bbs_debug);
+ Signal(SIGXCPU, abort_bbs_debug);
signal_restart(SIGUSR1, talk_request);
signal_restart(SIGUSR2, write_request);
diff --git a/util/shmctl.c b/util/shmctl.c
index 0822447b..6dfc74ff 100644
--- a/util/shmctl.c
+++ b/util/shmctl.c
@@ -1039,6 +1039,7 @@ int showstat(int argc, char *argv[])
"STAT_READPOST_3DAY",
"STAT_READPOST_7DAY",
"STAT_READPOST_OLD",
+ "STAT_SIGXCPU",
};
if(argv[1] && strcmp(argv[1],"-c")==0)