Signals handlers can only read/write to volatile sig_atomic_t variables
or atomic lock-free ones.
Anything else results in undefined behaviour.
Signed-off-by: Cristian Rodríguez <cristian@rodriguez.im>
return 0;
}
-int sigterm = 0;
+volatile sig_atomic_t sigterm = 0;
static void catch_term(int sig)
{
sigterm = 1;
int mon_tid, mgr_tid;
-int sigterm;
+volatile sig_atomic_t sigterm;
#ifdef USE_PTHREADS
static void *run_child(void *v)
void remove_pidfile(char *devname);
void do_monitor(struct supertype *container);
void do_manager(struct supertype *container);
-extern int sigterm;
+extern volatile sig_atomic_t sigterm;
int read_dev_state(int fd);
bool is_container_member(struct mdstat_ent *mdstat, char *container);