The libsystemd bus event loop is:

        while (e->state != SD_EVENT_FINISHED) {
                r = sd_event_run(e, (uint64_t) -1);
    
But since e->state is changed by another thread it
should be marked volatile to avoid compiler thinking
the state doesn't get changed.


diff --git a/src/libsystemd/sd-event/sd-event.c 
b/src/libsystemd/sd-event/sd-event.c
index 5adbceeb0247..b7be2472a398 100644
--- a/src/libsystemd/sd-event/sd-event.c
+++ b/src/libsystemd/sd-event/sd-event.c
@@ -90,7 +90,7 @@ struct sd_event {
 
         uint64_t iteration;
         triple_timestamp timestamp;
-        int state;
+        volatile int state;
 
         bool exit_requested:1;
         bool need_process_child:1;
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to