diff --git a/exec/Makefile b/exec/Makefile index a659e1bd..dd99d0ab 100644 --- a/exec/Makefile +++ b/exec/Makefile @@ -175,7 +175,7 @@ objdb.lcrso: objdb.o endif aisexec: $(EXEC_OBJS) $(EXEC_LIBS) - $(CC) $(LDFLAGS) $(EXEC_OBJS) $(EXEC_LIBS) -o aisexec + $(CC) $(EXEC_OBJS) $(EXEC_LIBS) -o aisexec $(LDFLAGS) libtotem_pg.a: $(TOTEM_OBJS) $(AR) -rc libtotem_pg.a $(TOTEM_OBJS) diff --git a/exec/logsys.c b/exec/logsys.c index 11232c16..24db3910 100644 --- a/exec/logsys.c +++ b/exec/logsys.c @@ -255,7 +255,8 @@ static void log_printf_worker_fn (void *thread_data, void *work_item) { struct log_data *log_data = (struct log_data *)work_item; - pthread_mutex_lock (&logsys_config_mutex); + if (logsys_wthread_active) + pthread_mutex_lock (&logsys_config_mutex); /* * Output the log data */ @@ -273,7 +274,8 @@ static void log_printf_worker_fn (void *thread_data, void *work_item) &log_data->log_string[log_data->syslog_pos]); } free (log_data->log_string); - pthread_mutex_unlock (&logsys_config_mutex); + if (logsys_wthread_active) + pthread_mutex_unlock (&logsys_config_mutex); } static void _log_printf ( @@ -467,6 +469,14 @@ void logsys_config_priority_set (unsigned int priority) pthread_mutex_unlock (&logsys_new_log_mutex); } +static void child_cleanup (void) +{ + memset(&log_thread_group, 0, sizeof(log_thread_group)); + logsys_wthread_active = 0; + pthread_mutex_init(&logsys_config_mutex, NULL); + pthread_mutex_init(&logsys_new_log_mutex, NULL); +} + int _logsys_wthread_create (void) { worker_thread_group_init ( @@ -481,6 +491,7 @@ int _logsys_wthread_create (void) logsys_flush(); atexit (logsys_atexit); + pthread_atfork(NULL, NULL, child_cleanup); if (logsys_mode & LOG_MODE_OUTPUT_SYSLOG_THREADED && logsys_name != NULL) { openlog (logsys_name, LOG_CONS|LOG_PID, logsys_facility); diff --git a/test/Makefile b/test/Makefile index be9747a5..44f0f1c8 100644 --- a/test/Makefile +++ b/test/Makefile @@ -161,13 +161,13 @@ openais-cfgtool: openais-cfgtool.o $(LIBRARIES) $(CC) $(LDFLAGS) -o openais-cfgtool openais-cfgtool.o $(LIBS) logsys_s: logsys_s.o logsys_s1.o logsys_s2.o ../exec/liblogsys.a - $(CC) $(LDFLAGS) -o logsys_s logsys_s.o logsys_s1.o logsys_s2.o ../exec/liblogsys.a + $(CC) -o logsys_s logsys_s.o logsys_s1.o logsys_s2.o ../exec/liblogsys.a $(LDFLAGS) logsys_t1: logsys_t1.o ../exec/liblogsys.a - $(CC) $(LDFLAGS) -o logsys_t1 logsys_t1.o ../exec/liblogsys.a + $(CC) -o logsys_t1 logsys_t1.o ../exec/liblogsys.a $(LDFLAGS) logsys_t2: logsys_t2.o ../exec/liblogsys.a - $(CC) $(LDFLAGS) -o logsys_t2 logsys_t2.o ../exec/liblogsys.a + $(CC) -o logsys_t2 logsys_t2.o ../exec/liblogsys.a $(LDFLAGS) clean: rm -f *.o $(LIBRARIES) $(BINARIES)