mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
r11850@catbus: nickm | 2007-02-20 13:34:13 -0500
Apply patch from coderman: have posix subthreads mask out signals. This could prevent some kinds of crashes when subthreads try to handle SIGPIPEs and die in the attempt. Backport candidate. svn:r9603
This commit is contained in:
parent
986d0ac39b
commit
b6e6b7101b
@ -39,6 +39,9 @@ Changes in version 0.1.2.8-alpha - 2007-??-??
|
|||||||
- When EntryNodes are configured, rebuild the guard list to contain, in
|
- When EntryNodes are configured, rebuild the guard list to contain, in
|
||||||
order: the EntryNodes that were guards before; the rest of the
|
order: the EntryNodes that were guards before; the rest of the
|
||||||
EntryNodes; the nodes that were guards before.
|
EntryNodes; the nodes that were guards before.
|
||||||
|
- Mask out all signals in sub-threads; only the libevent signal handler
|
||||||
|
should be processing them. This should prevent some crashes on some
|
||||||
|
machines using pthreads. (Patch from coderman.)
|
||||||
|
|
||||||
o Minor features (controller):
|
o Minor features (controller):
|
||||||
- Warn the user when an application uses the obsolete binary v0
|
- Warn the user when an application uses the obsolete binary v0
|
||||||
|
@ -82,6 +82,9 @@ const char compat_c_id[] =
|
|||||||
#ifdef HAVE_PTHREAD_H
|
#ifdef HAVE_PTHREAD_H
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_SIGNAL_H
|
||||||
|
#include <signal.h>
|
||||||
|
#endif
|
||||||
#ifdef HAVE_UTIME_H
|
#ifdef HAVE_UTIME_H
|
||||||
#include <utime.h>
|
#include <utime.h>
|
||||||
#endif
|
#endif
|
||||||
@ -996,6 +999,12 @@ tor_pthread_helper_fn(void *_data)
|
|||||||
tor_pthread_data_t *data = _data;
|
tor_pthread_data_t *data = _data;
|
||||||
void (*func)(void*);
|
void (*func)(void*);
|
||||||
void *arg;
|
void *arg;
|
||||||
|
/* mask signals to worker threads to avoid SIGPIPE, etc */
|
||||||
|
sigset_t sigs;
|
||||||
|
/* We're in a subthread; don't handle any signals here. */
|
||||||
|
sigfillset(&sigs);
|
||||||
|
pthread_sigmask(SIG_SETMASK, &sigs, NULL);
|
||||||
|
|
||||||
func = data->func;
|
func = data->func;
|
||||||
arg = data->data;
|
arg = data->data;
|
||||||
tor_free(_data);
|
tor_free(_data);
|
||||||
|
Loading…
Reference in New Issue
Block a user