Changeset: 7483831e81c4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7483831e81c4
Modified Files:
gdk/gdk_system.c
Branch: Apr2019
Log Message:
Do not fail MT_create_thread after thread successfully started.
diffs (83 lines):
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -513,18 +513,14 @@ find_posthread(pthread_t tid)
#endif
#ifdef HAVE_PTHREAD_SIGMASK
-static int
-MT_thread_sigmask(sigset_t * new_mask, sigset_t * orig_mask)
+static void
+MT_thread_sigmask(sigset_t *new_mask, sigset_t *orig_mask)
{
- if(sigdelset(new_mask, SIGQUIT))
- return -1;
- if(sigdelset(new_mask, SIGALRM)) /* else sleep doesn't work */
- return -1;
- if(sigdelset(new_mask, SIGPROF))
- return -1;
- if(pthread_sigmask(SIG_SETMASK, new_mask, orig_mask))
- return -1;
- return 0;
+ /* do not check for errors! */
+ sigdelset(new_mask, SIGQUIT);
+ sigdelset(new_mask, SIGALRM);
+ sigdelset(new_mask, SIGPROF);
+ pthread_sigmask(SIG_SETMASK, new_mask, orig_mask);
}
#endif
@@ -616,9 +612,6 @@ join_detached_threads(void)
int
MT_create_thread(MT_Id *t, void (*f) (void *), void *arg, enum MT_thr_detach
d, const char *threadname)
{
-#ifdef HAVE_PTHREAD_SIGMASK
- sigset_t new_mask, orig_mask;
-#endif
pthread_attr_t attr;
pthread_t newt, *newtp;
int ret;
@@ -626,11 +619,6 @@ MT_create_thread(MT_Id *t, void (*f) (vo
void *(*pf) (void *);
join_threads();
-#ifdef HAVE_PTHREAD_SIGMASK
- (void) sigfillset(&new_mask);
- if(MT_thread_sigmask(&new_mask, &orig_mask))
- return -1;
-#endif
if(pthread_attr_init(&attr))
return -1;
if(pthread_attr_setstacksize(&attr, THREAD_STACK_SIZE)) {
@@ -643,9 +631,6 @@ MT_create_thread(MT_Id *t, void (*f) (vo
}
p = malloc(sizeof(struct posthread));
if (p == NULL) {
-#ifdef HAVE_PTHREAD_SIGMASK
- (void) MT_thread_sigmask(&orig_mask, NULL); //going to fail
anyway
-#endif
pthread_attr_destroy(&attr);
return -1;
}
@@ -661,6 +646,11 @@ MT_create_thread(MT_Id *t, void (*f) (vo
newtp = &newt;
assert(d == MT_THR_JOINABLE);
}
+#ifdef HAVE_PTHREAD_SIGMASK
+ sigset_t new_mask, orig_mask;
+ (void) sigfillset(&new_mask);
+ MT_thread_sigmask(&new_mask, &orig_mask);
+#endif
ret = pthread_create(newtp, &attr, pf, p);
if (ret == 0) {
#ifdef PTW32
@@ -678,8 +668,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
free(p);
}
#ifdef HAVE_PTHREAD_SIGMASK
- if(MT_thread_sigmask(&orig_mask, NULL))
- return -1;
+ MT_thread_sigmask(&orig_mask, NULL);
#endif
return ret ? -1 : 0;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list