an odd case where signals were not catched when debugging.
(main, empth_start): Using sa_handler with SA_SIGINFO is wrong.
Simply don't set SA_SIGINFO; the additional signal information is not
used anyway.
HPUXMASTER = GLOBALCFLAGS="$(HPUXCFLAGS)" GLOBALLFLAGS="$(HPUXLFLAGS)" RANLIB="$(HPUXRANLIB)" CLIENTLIBS=-ltermcap
IRIX5RANLIB = echo
-IRIX5CFLAGS = -DSVR4 -DRel4 -DUCONTEXT -DPOSIXSIGNALS -O3 -fullwarn -woff 835,709
+IRIX5CFLAGS = -DSVR4 -DRel4 -DUCONTEXT -O3 -fullwarn -woff 835,709
IRIX5LFLAGS = -lnsl
IRIX5MASTER = GLOBALCFLAGS="$(IRIX5CFLAGS)" GLOBALLFLAGS="$(IRIX5LFLAGS)" RANLIB="$(IRIX5RANLIB)"
RTPCLFLAGS =
RTPCMASTER = GLOBALCFLAGS="$(RTPCCFLAGS)" GLOBALLFLAGS="$(RTPCLFLAGS)"
-SOLCFLAGS = -g -DSVR4 -DRel4 -DUCONTEXT -DPOSIXSIGNALS -Dsolaris
+SOLCFLAGS = -g -DSVR4 -DRel4 -DUCONTEXT -Dsolaris
SOLLFLAGS = -lnsl -lsocket -lthread
SOLMASTER = GLOBALCFLAGS="$(SOLCFLAGS)" GLOBALLFLAGS="$(SOLLFLAGS)"
MIPSBSDLFLAGS = -G 33
MIPSBSDMASTER = GLOBALCFLAGS="$(MIPSBSDCFLAGS)" GLOBALLFLAGS="$(MIPSBSDLFLAGS)"
-VAXULTCFLAGS = -O -DNOSTRDUP -DPOSIXSIGNALS
+VAXULTCFLAGS = -O -DNOSTRDUP
VAXULTLFLAGS =
VAXULTMASTER = GLOBALCFLAGS="$(VAXULTCFLAGS)" GLOBALLFLAGS="$(VAXULTLFLAGS)"
typedef u_char natid; /* NSC_NATID must match this */
-#if defined(__linux__ ) || defined(__osf__)
-#define POSIXSIGNALS 1
-#endif
-
#if !defined (_EMPTH_LWP) && !defined (_EMPTH_POSIX)
#define _EMPTH_LWP 1
#endif
-#if defined(_EMPTH_POSIX) && !defined(POSIXSIGNALS)
-#define POSIXSIGNALS
-#endif
-
#if !defined(aix) && !defined(sgi)
#ifndef ultrix /* already defined in ultrix */
struct sigaction act;
/* actually it should inherit all this from main but... */
-#ifdef SA_SIGINFO
- act.sa_flags = SA_SIGINFO;
-#endif
sigemptyset(&act.sa_mask);
act.sa_handler = shutdwn;
/* pthreads on Linux use SIGUSR1 (*shrug*) so only catch it if not on
char **LwpContextPtr;
int LwpMaxpri = 0; /* maximum priority so far */
-#ifdef POSIXSIGNALS
static sigset_t oldmask;
-#else /* POSIXSIGNALS */
-static int oldmask;
-#endif /* POSIXSIGNALS */
/* for systems without strdup */
#ifdef NOSTRDUP
static int lcount = LCOUNT;
static struct lwpProc *nextp;
static int i;
-#ifdef POSIXSIGNALS
static sigset_t tmask;
-#endif /* POSIXSIGNALS */
if (LwpCurrent && (LwpCurrent->flags & LWP_STACKCHECK)) {
lwpStackCheck(LwpCurrent);
if (!--lcount) {
int p = lwpSetPriority(LWP_MAX_PRIO - 1);
lcount = LCOUNT;
-#ifdef POSIXSIGNALS
sigprocmask(SIG_SETMASK, &oldmask, &tmask);
sigprocmask(SIG_SETMASK, &tmask, &oldmask);
-#else /* POSIXSIGNALS */
- sigsetmask(sigsetmask(oldmask));
-#endif /* POSIXSIGNALS */
LwpCurrent->pri = p;
}
void
lwpEntryPoint(void)
{
-#ifdef POSIXSIGNALS
sigset_t set;
-#endif /* POSIXSIGNALS */
#ifdef BOUNDS_CHECK
BOUNDS_CHECKING_OFF;
#endif
-#ifdef POSIXSIGNALS
sigemptyset(&set);
sigaddset(&set, SIGALRM);
sigprocmask(SIG_SETMASK, &set, &oldmask);
-#else /* POSIXSIGNALS */
- sigsetmask(SIGNALS);
-#endif /* POSIXSIGNALS */
*LwpContextPtr = LwpCurrent->ud;
lwpStatus(LwpCurrent, "starting at entry point");
/* XXX Note that this assumes sizeof(long) == 4 */
#define LWP_CHECKMARK 0x5a5a5a5aL
-#define SIGNALS sigmask(SIGALRM)
-
#ifndef hpux
typedef double stkalign_t;
#else
}
+/*
+ * Initialize for serving, acquire resources.
+ */
void
init_server(void)
{
logerror("Empire server (pid %d) started", (int)getpid());
}
+/*
+ * Start serving.
+ */
void
start_server(int flags)
{
-#ifdef POSIXSIGNALS
struct sigaction act;
-#endif /* POSIXSIGNALS */
#if !defined(_WIN32)
/* signal() should not be used with mit pthreads. Anyway if u
have a posix threads u definitly have posix signals -- Sasha */
-#if defined (POSIXSIGNALS) || defined (_EMPTH_POSIX)
-#ifdef SA_SIGINFO
- act.sa_flags = SA_SIGINFO;
-#endif
sigemptyset(&act.sa_mask);
act.sa_handler = shutdwn;
/* pthreads on Linux use SIGUSR1 (*shrug*) so only catch it if not on
sigaction(SIGFPE, &act, NULL);
act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);
-#else
- if (debug == 0 && flags == 0) {
- /* pthreads on Linux use SIGUSR1 (*shrug*) so only catch it if not on
- a Linux box running POSIX threads -- STM */
-#if !(defined(__linux__) && defined(_EMPTH_POSIX))
- signal(SIGUSR1, shutdwn);
-#endif
- signal(SIGTERM, shutdwn);
- signal(SIGBUS, panic);
- signal(SIGSEGV, panic);
- signal(SIGILL, panic);
- signal(SIGFPE, panic);
- signal(SIGINT, shutdwn);
- }
- signal(SIGPIPE, SIG_IGN);
-#endif /* POSIXSIGNALS */
-#endif /* _WIN32 */
+#endif /* !_WIN32 */
empth_init((char **)&player, flags);
void
panic(int sig)
{
-#ifdef POSIXSIGNALS
struct sigaction act;
act.sa_flags = 0;
sigaction(SIGSEGV, &act, NULL);
sigaction(SIGILL, &act, NULL);
sigaction(SIGFPE, &act, NULL);
-#else
- signal(SIGBUS, SIG_DFL);
- signal(SIGSEGV, SIG_DFL);
- signal(SIGILL, SIG_DFL);
- signal(SIGFPE, SIG_DFL);
-#endif /* POSIXSIGNALS */
logerror("server received fatal signal %d", sig);
log_last_commands();
close_files();
_exit(1);
}
}
-#endif
-#if defined(_WIN32)
void
loc_NTTerm()
{