From 5f688ff4bd89aa0c73d96a51c0d5343a2ed2e843 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Wed, 21 Oct 2009 14:43:26 -0400 Subject: [PATCH] rx don't exit exiting in library code is antisocial. if rx encounters an error which cannot be returned and would otherwise indicate a service thread has gone away, assert. Reviewed-on: http://gerrit.openafs.org/668 Tested-by: Derrick Brashear Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman Reviewed-by: Tom Keiser --- src/rx/rx_clock.c | 3 ++- src/rx/rx_lwp.c | 3 ++- src/rx/rx_pthread.c | 20 ++++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/rx/rx_clock.c b/src/rx/rx_clock.c index 64fc6bb08..08385f91b 100644 --- a/src/rx/rx_clock.c +++ b/src/rx/rx_clock.c @@ -41,6 +41,7 @@ #include #include #include +#include #include "rx.h" #include "rx_clock.h" #endif @@ -76,7 +77,7 @@ clock_Sync(void) fprintf(stderr, "clock: could not set interval timer; \ aborted(errno=%d)\n", errno); fflush(stderr); - exit(1); + assert(0); } if (relclock_epoch.usec + startvalue.usec >= otimer.it_value.tv_usec) { relclock_epoch.sec = relclock_epoch.sec + diff --git a/src/rx/rx_lwp.c b/src/rx/rx_lwp.c index 2366cbc11..a741e2328 100644 --- a/src/rx/rx_lwp.c +++ b/src/rx/rx_lwp.c @@ -41,6 +41,7 @@ # include # include # include +# include #endif # include "rx.h" # include "rx_globals.h" @@ -179,7 +180,7 @@ rxi_ListenerProc(fd_set * rfds, int *tnop, struct rx_call **newcallp) code = LWP_CurrentProcess(&pid); if (code) { fprintf(stderr, "rxi_Listener: Can't get my pid.\n"); - exit(1); + assert(0); } rx_listenerPid = pid; if (swapNameProgram) diff --git a/src/rx/rx_pthread.c b/src/rx/rx_pthread.c index 394e14e73..6496eefaa 100644 --- a/src/rx/rx_pthread.c +++ b/src/rx/rx_pthread.c @@ -106,13 +106,13 @@ rxi_StartServerProc(void *(*proc) (void *), int stacksize) if (pthread_attr_init(&tattr) != 0) { dpf(("Unable to Create Rx server thread (pthread_attr_init)\n")); - exit(1); + assert(0); } if (pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED) != 0) { dpf (("Unable to Create Rx server thread (pthread_attr_setdetachstate)\n")); - exit(1); + assert(0); } /* @@ -121,7 +121,7 @@ rxi_StartServerProc(void *(*proc) (void *), int stacksize) AFS_SIGSET_CLEAR(); if (pthread_create(&thread, &tattr, server_entry, (void *)proc) != 0) { dpf(("Unable to Create Rx server thread\n")); - exit(1); + assert(0); } AFS_SIGSET_RESTORE(); } @@ -223,7 +223,7 @@ rxi_ListenerProc(osi_socket sock, int *tnop, struct rx_call **newcallp) if (!(p = rxi_AllocPacket(RX_PACKET_CLASS_RECEIVE))) { /* Could this happen with multiple socket listeners? */ dpf(("rxi_Listener: no packets!")); /* Shouldn't happen */ - exit(1); + assert(0); } } @@ -334,20 +334,20 @@ rxi_StartListener(void) if (pthread_attr_init(&tattr) != 0) { dpf (("Unable to create Rx event handling thread (pthread_attr_init)\n")); - exit(1); + assert(0); } if (pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED) != 0) { dpf (("Unable to create Rx event handling thread (pthread_attr_setdetachstate)\n")); - exit(1); + assert(0); } AFS_SIGSET_CLEAR(); if (pthread_create(&event_handler_thread, &tattr, event_handler, NULL) != 0) { dpf(("Unable to create Rx event handling thread\n")); - exit(1); + assert(0); } MUTEX_ENTER(&rx_pthread_mutex); ++rxi_pthread_hinum; @@ -374,19 +374,19 @@ rxi_Listen(osi_socket sock) if (pthread_attr_init(&tattr) != 0) { dpf (("Unable to create socket listener thread (pthread_attr_init)\n")); - exit(1); + assert(0); } if (pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED) != 0) { dpf (("Unable to create socket listener thread (pthread_attr_setdetachstate)\n")); - exit(1); + assert(0); } AFS_SIGSET_CLEAR(); if (pthread_create(&thread, &tattr, rx_ListenerProc, (void *)(intptr_t)sock) != 0) { dpf(("Unable to create socket listener thread\n")); - exit(1); + assert(0); } MUTEX_ENTER(&rx_pthread_mutex); ++rxi_pthread_hinum; -- 2.39.5