[openib-general] Re[PATCH] Opensm - clean exit on ^C

Yael Kalka yael at mellanox.co.il
Thu Jan 5 04:16:16 PST 2006


Hi Hal,

I've noticed that sometimes when killing OpenSM using ^C not all
threads are killed.
The reason for that is that there are threads that mask the
signalling, and when removing the ^C handling from OpenSM, these
threads still mask the signalling and stay alive as a result.
The following patch fixes this.

Thanks,
Yael

Signed-off-by:  Yael Kalka <yael at mellanox.co.il>

Index: include/complib/cl_signal_osd.h
===================================================================
--- include/complib/cl_signal_osd.h	(revision 4760)
+++ include/complib/cl_signal_osd.h	(working copy)
@@ -148,12 +148,14 @@ cl_sig_mask_sigint(void)
  #ifdef __WIN__
   /* we do not mask kill */
  #else	
+#ifndef OSM_VENDOR_INTF_OPENIB 
    sigset_t sigs;
       
    sigemptyset(&sigs);
    sigaddset(&sigs, SIGINT);
    pthread_sigmask(SIG_BLOCK, &sigs, NULL);
- #endif
+#endif /* OSM_VENDOR_INTF_OPENIB */
+#endif /* __WIN__ */
 }
 /*
 *********/
Index: libvendor/osm_vendor_ibumad.c
===================================================================
--- libvendor/osm_vendor_ibumad.c	(revision 4760)
+++ libvendor/osm_vendor_ibumad.c	(working copy)
@@ -244,10 +244,6 @@ umad_receiver(void *p_ptr)
 
 	OSM_LOG_ENTER( p_ur->p_log, umad_receiver );
 
-	sigemptyset(&sigs);
-	sigaddset(&sigs, SIGINT);
-	pthread_sigmask(SIG_BLOCK, &sigs, NULL);
-
 	for (;;) {
 		if (!umad &&
 		    !(umad = umad_alloc(1, umad_size() + MAD_BLOCK_SIZE))) {




More information about the general mailing list