diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 5623bb2ffa..f8c43b5079 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -2017,7 +2017,7 @@ static int busctl_main(sd_bus *bus, int argc, char *argv[]) { } int main(int argc, char *argv[]) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + sd_bus *bus = NULL; int r; log_parse_environment(); @@ -2113,6 +2113,9 @@ int main(int argc, char *argv[]) { r = busctl_main(bus, argc, argv); finish: + /* make sure we terminate the bus connection first, and then close the + * pager, see issue #3543 for the details. */ + sd_bus_flush_close_unref(bus); pager_close(); strv_free(arg_matches); diff --git a/src/locale/localectl.c b/src/locale/localectl.c index f09fe42626..af39e431f5 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -595,7 +595,7 @@ static int localectl_main(sd_bus *bus, int argc, char *argv[]) { } int main(int argc, char*argv[]) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); @@ -615,6 +615,9 @@ int main(int argc, char*argv[]) { r = localectl_main(bus, argc, argv); finish: + /* make sure we terminate the bus connection first, and then close the + * pager, see issue #3543 for the details. */ + sd_bus_flush_close_unref(bus); pager_close(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; diff --git a/src/login/loginctl.c b/src/login/loginctl.c index dfcaff6195..c811ee6c5e 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -1584,7 +1584,7 @@ static int loginctl_main(int argc, char *argv[], sd_bus *bus) { } int main(int argc, char *argv[]) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); @@ -1607,6 +1607,9 @@ int main(int argc, char *argv[]) { r = loginctl_main(argc, argv, bus); finish: + /* make sure we terminate the bus connection first, and then close the + * pager, see issue #3543 for the details. */ + sd_bus_flush_close_unref(bus); pager_close(); polkit_agent_close(); diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index 615db5afe8..75743ce6a6 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -3143,7 +3143,7 @@ static int machinectl_main(int argc, char *argv[], sd_bus *bus) { } int main(int argc, char*argv[]) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); @@ -3166,6 +3166,9 @@ int main(int argc, char*argv[]) { r = machinectl_main(argc, argv, bus); finish: + /* make sure we terminate the bus connection first, and then close the + * pager, see issue #3543 for the details. */ + sd_bus_flush_close_unref(bus); pager_close(); polkit_agent_close(); diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index 131f160b50..0cd9f07094 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -1563,7 +1563,7 @@ finish: } int main(int argc, char* argv[]) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + sd_bus *bus = NULL; int r; log_parse_environment(); @@ -1670,6 +1670,9 @@ int main(int argc, char* argv[]) { } finish: + /* make sure we terminate the bus connection first, and then close the + * pager, see issue #3543 for the details. */ + bus = sd_bus_flush_close_unref(bus); pager_close(); free(arg_mount_what); diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index e851b4ddd1..19a382c1b2 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -473,7 +473,7 @@ static int timedatectl_main(sd_bus *bus, int argc, char *argv[]) { } int main(int argc, char *argv[]) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); @@ -493,6 +493,9 @@ int main(int argc, char *argv[]) { r = timedatectl_main(bus, argc, argv); finish: + /* make sure we terminate the bus connection first, and then close the + * pager, see issue #3543 for the details. */ + sd_bus_flush_close_unref(bus); pager_close(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;