Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe e2c801e767 core: drop manager_get_unit_by_pid() and friends (#36872)
Except for one place, they are only used by test-watch-pid. Let's also
use manager_get_unit_by_pidref() and friends in the test, and drop the
_pid() variants.
2025-03-27 06:10:53 +09:00
Yu Watanabe 3432d5e21f coredump: make sure pid1/journal coredumps are not lost when Storage=journal is selected (#36870)
It confused the hell of me, that if pid1 crashes in an mkosi system run
from the build tree there's no coredump kept. Because mkosi configures
journal storage for coredumps, but that's not going to work for pid1 or
journald. Hence use external storage for these two even if everything
else is stored in the journal.
2025-03-27 04:27:01 +09:00
Yu Watanabe eb3554666e core: drop unused wrappers of manager_get_unit_by_pidref() and friends 2025-03-27 04:15:43 +09:00
Yu Watanabe 56691ea753 test-watch-pid: use pidref_safe_fork() with FORK_FREEZE
Then, use pidref version of functions.
2025-03-27 04:13:54 +09:00
Yu Watanabe 017f9bc1d7 test-watch-pid: move required test conditions to intro()
Follow-up for 7bcd76513a.
2025-03-27 03:57:02 +09:00
Yu Watanabe dadaad157e man/timedatectl: add reference to systemd.time(7)
Closes #36839.
2025-03-24 12:59:27 +00:00
Yu Watanabe f0cfb6a791 man/networkd.conf: revert unexpected replacement of PersistLeases= setting
The entry was unexpectedly replaced by the commit
418f2dc755 (v256).
This reverts the change.

Fixes #36837.
2025-03-24 11:30:23 +00:00
Yu Watanabe 90670111a9 udev: make udevadm and friends not warn about unknown settings
Without this change, when e.g. event_timeout= is specified in udev.conf,
udevadm and friends which loads udev.conf warn about unknown key:
===
$ udevadm info /sys/class/net/lo
/run/udev/udev.conf.d/test-17.conf:1: Unknown key 'event_timeout', ignoring.
/run/udev/udev.conf.d/test-17.conf:2: Unknown key 'timeout_signal', ignoring.
===

Follow-up for 07f5e35fe7 (v256).
2025-03-21 12:51:39 +00:00
Yu Watanabe 513f4d675a analyze: propagate error code returned by _from_string()
Follow-up for a483c39fc2.
Addresses https://github.com/systemd/systemd/pull/36468#discussion_r2005765024.
2025-03-21 10:31:46 +09:00
Yu Watanabe 3cb0551ecb edit-util: don't leave custom editor args around if we shall fall back (#36813)
Also, let's complain loudly if the editor acquired from envvar is not
present.

Fixes #36796
2025-03-21 08:48:05 +09:00
Yu Watanabe 786f60eb5d man: fix typo
Follow-up for 6fd253753c.
2025-03-21 08:35:36 +09:00
Yu Watanabe db4b4e0cd3 core: Make DelegateNamespaces= work for user managers with CAP_SYS_ADMIN (#36771)
Currently DelegateNamespaces= only works for services spawned by the
system manager. User managers will always unshare the user namespace
first even if they're running with CAP_SYS_ADMIN.

Let's add support for DelegateNamespaces= for user managers if they're
running with CAP_SYS_ADMIN. By default, we'll still delegate all
namespaces
for user managers, but this can now be overridden by explicitly passing
DelegateNamespaces=.

If a user manager is running without CAP_SYS_ADMIN, the user manager is
still always unshared first just like before.
2025-03-20 06:28:18 +09:00
Yu Watanabe bb8c74d7f2 Introduce ConditionVersion (#36468)
Add a new condition which can check against systemd version.

        $ systemctl --version
        systemd 258 (258~devel-g53ca5f6)

        $ systemd-analyze condition 'ConditionVersion=systemd>255'
        test.service: ConditionVersion=>255 succeeded.

        $ systemd-analyze condition 'ConditionVersion=systemd>260'
        test.service: ConditionVersion=>260 failed.

        $ systemd-analyze condition 'ConditionVersion=systemd>=258'
        test.service: ConditionVersion=>=258 succeeded.

        $ systemd-analyze condition 'ConditionVersion=systemd>=257.1'
        test.service: ConditionVersion=>=257.1 succeeded.

        $ uname -r
        6.12.13-200.fc41.aarch64

        $ systemd-analyze condition 'ConditionVersion=kernel > 4.4'
        test.service: ConditionVersion=kernel > 4.4 succeeded.

        $ systemd-analyze condition 'ConditionVersion=kernel > 6.20'
        test.service: ConditionVersion=kernel > 6.20 failed.

        $ systemd-analyze condition 'ConditionVersion=kernel < 9.0'
        test.service: ConditionVersion=kernel < 9.0 succeeded.
2025-03-20 06:15:35 +09:00
Yu Watanabe 707bea6a48 ptyfwd: use usec_add()
Fixes CID#1548038.
2025-03-19 11:41:25 +09:00
Yu Watanabe 4b4181f4ac io-util: add one more assertion for Coverity
Fixes CID#1548067.
2025-03-19 11:41:25 +09:00
Yu Watanabe 91c4d1affd nspawn-oci: update overflow check
Fixes CID#1548072.
2025-03-19 11:41:25 +09:00
Yu Watanabe 816c6ec883 sd-dhcp-client: use event_reset_time_relative()
Fixes CID#1548073.
2025-03-19 11:41:25 +09:00
Yu Watanabe 11065c598c logs-show: comment out dead code
Follow-up for 280e85224e.
Fixes CID#1548921 and CID#1548922.
2025-03-19 11:41:12 +09:00
Yu Watanabe e8784005a6 logind-action: use BIT_SET() and SET_BIT()
Hopefully fixes CID#1529417.
2025-03-19 10:47:34 +09:00
Yu Watanabe b0282ecf45 journal: fix indentation 2025-03-19 10:41:29 +09:00
Yu Watanabe 6a6cc56125 bus-unit-procs: add one more assertion for Coverity
Hopefully fixes CID#1562447.
2025-03-19 10:41:29 +09:00
Yu Watanabe 9dc735426a boot: always pass an array of PeSectionVector to pe_locate_sections()
Hopefully silences false-positive warnings by Coverity.
Fixes CID#1549198, CID#1549199, CID#1564903.
2025-03-19 10:40:31 +09:00
Yu Watanabe c995855266 bitfield: check if specified index is non-negative
Hopefully silences false-positive warnings by Coverity e.g. CID#1590746.
2025-03-19 09:56:04 +09:00
Yu Watanabe b8d5303733 nspawn: make failure in sd_listen_fds() critical
Also, drop doubled call of sd_listen_fds().
2025-03-19 02:09:40 +09:00
Yu Watanabe b05969ffd6 journal: use LOG_ITEM() macros in server_driver_message() 2025-03-19 01:58:28 +09:00
Yu Watanabe 3cf6a3a3d4 tree-wide: check more log message format in log_struct() and friends
This introduce LOG_ITEM() macro that checks arbitrary formats in
log_struct().
Then, drop _printf_ attribute from log_struct_internal(), as it does not
help so much, and compiler checked only the first format string.

Hopefully, this silences false-positive warnings by Coverity.
2025-03-19 01:56:48 +09:00
Yu Watanabe 024bb0c63e oomd: do not ignore failure in sd_lisen_fds()
Also, use -EBADF for an invalid file descriptor.
2025-03-19 01:47:48 +09:00
Yu Watanabe d50b9cbe56 vmspawn: do not use r for loop count
In a future, we may call some functions and r may be used for storing
error code of them. Let's not use r for the maximum number of loop count.
2025-03-19 01:47:48 +09:00
Yu Watanabe a65d2de6d1 sd-varlink: fix overwrite of loop count
Fixes a bug introduced by 206504a594 (v255).
2025-03-19 01:47:20 +09:00
Yu Watanabe 59cb9b12ab initctl: fix error handling
Fixes a bug introduced by cc090ca7fe (v246).
2025-03-19 01:44:01 +09:00
Yu Watanabe a0272b8356 nsresourced: fix assignment of target_gid
Follow-up for 00b1f67313.

Fixes CID#1593901.
2025-03-18 12:13:38 +00:00
Yu Watanabe f91273f4fc condition: align string table 2025-03-18 18:36:59 +09:00
Yu Watanabe a483c39fc2 analyze-condition: rewrite condition parser
No functional change, just a refactoring.
2025-03-18 18:36:55 +09:00
Yu Watanabe 910dcd7049 getty-generator: unify add_serial_getty() and add_container_getty()
This also makes the generator not trigger an assertion added by
1cd3c49d09. If getty.ttys.container
credential contains a line prefixed with '/dev/', then the assertion
    assert(!path_startswith(tty, "/dev/"));
was triggered. This drops the offending assertion, and such lines
are handled gracefully now.

Also, an empty string, "/dev/", and "/dev/pts/" (that is, a directory
without tty name) are gracefully skipped now.
2025-03-18 18:25:10 +09:00
Yu Watanabe c9c2679a62 some user record fixes (#36776)
Fixes: https://github.com/systemd/systemd/issues/36775
2025-03-18 09:24:05 +09:00
Yu Watanabe 8e29a5b9b3 nsresourced,vmspawn: allow unpriv "tap" based networking in vmspawn (#36688)
This extends nsresourced to also allow delegation of a network tap
device (in addition to veth) to unpriv clients, with a strictly enforced
naming scheme.

also tightens security on a couple of things:

* enforces polkit on all nsresourced ops too (though by default still
everything is allowed)
* put a limit on delegated network devices
* forcibly clean up delegated network devices when the userns goes away
2025-03-18 07:34:03 +09:00
Yu Watanabe 8b75e15a94 TEST-17-UDEV: add more test cases for udev builtins 2025-03-17 12:42:28 +09:00
Yu Watanabe 6f2f4ceadf shell-completion: add factory_reset udev builtin command 2025-03-17 12:42:28 +09:00
Yu Watanabe 6cfb5866fe udev-builtin-btrfs: refuse to call for irrelevant device node
If btrfs builtin command is called, then check if the specified device
node is owned by the device.
This also allows the command is called specifying any device node.
2025-03-17 12:42:28 +09:00
Yu Watanabe 73a2912092 udev-builtin: make btrfs builtin command only check arguments when run in test mode 2025-03-17 12:42:28 +09:00
Yu Watanabe 80ffdb8d54 udev-builtin: add missing UDEV_RELOAD_BUILTIN_FACTORY_RESET 2025-03-17 12:42:28 +09:00
Yu Watanabe f1ad44d688 udev-builtin: align builtins table 2025-03-17 12:42:28 +09:00
Yu Watanabe db2db8cc60 run: trivial followups (#36765) 2025-03-17 12:27:49 +09:00
Yu Watanabe 369c232538 nspawn: introduce --cleanup option (#34776)
This is useful when the previous invocation is unexpectedly killed.

Otherwise, if systemd-nspawn is killed forcibly, then unix-export
directory is not cleared and unmounted, and the subsequent invocation
will fail. E.g.
```
[   18.895515] TEST-13-NSPAWN.sh[645]: + machinectl start long-running
[   18.945703] systemd-nspawn[1387]: Mount point '/run/systemd/nspawn/unix-export/long-running' exists already, refusing.
[   18.949236] systemd[1]: systemd-nspawn@long-running.service: Failed with result 'exit-code'.
[   18.949743] systemd[1]: Failed to start systemd-nspawn@long-running.service.
```
2025-03-17 06:53:46 +09:00
Yu Watanabe f0d7613466 test-execute: use time event source rather than custom timeout check
Fixes CID#1593786.
2025-03-16 12:38:23 +00:00
Yu Watanabe 15a46a961f TEST-13-NSPAWN: re-enable KILL test 2025-03-16 11:03:32 +09:00
Yu Watanabe c06a630f0c nspawn: introduce --cleanup option to clear propagation and unix-export directories
This is useful when the previous invocation is unexpectedly killed.

Otherwise, if systemd-nspawn is killed forcibly, then unix-export
directory is not cleared and unmounted, and the subsequent invocation
will fail. E.g.
===
[   18.895515] TEST-13-NSPAWN.sh[645]: + machinectl start long-running
[   18.945703] systemd-nspawn[1387]: Mount point '/run/systemd/nspawn/unix-export/long-running' exists already, refusing.
[   18.949236] systemd[1]: systemd-nspawn@long-running.service: Failed with result 'exit-code'.
[   18.949743] systemd[1]: Failed to start systemd-nspawn@long-running.service.
===
2025-03-16 11:02:09 +09:00
Yu Watanabe be0e492bf2 meson: update C standards table for building header tests 2025-03-16 10:16:18 +09:00
Yu Watanabe 59e64dd86d meson: make pointer-sign warning critical
With the previous commit, no pointer signedness warning should be
triggered even built with C23. Let's make the warning critical.
2025-03-16 10:16:08 +09:00
Yu Watanabe e193378d32 macro: Introduce UTF8() macro to define UTF-8 string literal
C23 changed char8_t from char to unsigned char, hence assigning a u8 literal
to const char* emits pointer sign warning, e.g.
========
../src/shared/qrcode-util.c: In function ‘print_border’:
../src/shared/qrcode-util.c:16:34: warning: pointer targets in passing argument 1 of ‘fputs’ differ in signedness [-Wpointer-sign]
   16 | #define UNICODE_FULL_BLOCK       u8"█"
      |                                  ^~~~~
      |                                  |
      |                                  const unsigned char *
../src/shared/qrcode-util.c:65:39: note: in expansion of macro ‘UNICODE_FULL_BLOCK’
   65 |                                 fputs(UNICODE_FULL_BLOCK, output);
      |                                       ^~~~~~~~~~~~~~~~~~
========

This introduces UTF8() macro, which define u8 literal and casts to consth char*,
then rewrites all u8 literal definitions with the macro.
With this change, we can build systemd with C23.
2025-03-16 10:15:24 +09:00
Yu Watanabe 27cc77b746 Fix bootctl status to not print strange glyphs in logs (#36745) 2025-03-16 05:56:55 +09:00
Yu Watanabe 758dc1e370 network: fix unexpected removal of routes on restart even when KeepConfiguration=yes (#36756) 2025-03-15 23:19:49 +09:00
Yu Watanabe e92d699dde test-cgroup-util: allow ESRCH in cg_pidref_get_path() and friends
As the process may be already dead.

Follow-ups for ca82f0cbe2.
2025-03-15 10:51:28 +09:00
Yu Watanabe cf28def391 network: do not remove static routes on other interfaces that are currently in the pending state
Otherwise, even if .network file has KeepConfiguration=yes, routes on
an interfaces may be removed on restart.

Fixes a bug introduced by 8d01e44c1f.
2025-03-15 10:26:20 +09:00
Yu Watanabe d9000d708c test: drop redundant parentheses in ASSERT_OK() and friends
This reverts 278e3adf50, and drop more
redundant parentheses, as they unfortunately does not suppress the
false-positive warnings by coverity.
2025-03-15 09:08:06 +09:00
Yu Watanabe 88f4650f22 meson: handle bool-compare warning as error
Then we can detect the error fixed by the previous commit like the following:

../src/libsystemd/sd-device/test-sd-device.c: In function ‘test_sd_device_enumerator_add_all_parents’:
../src/shared/tests.h:225:51: error: comparison of constant ‘0’ with boolean expression is always true [-Werror=bool-compare]
  225 | #define ASSERT_OK(expr) __coverity_check__((expr) >= 0)
      |                                                   ^~
../src/libsystemd/sd-device/test-sd-device.c:547:9: note: in expansion of macro ‘ASSERT_OK’
  547 |         ASSERT_OK(sd_device_enumerator_add_all_parents(e) >= 0);
      |         ^~~~~~~~~
2025-03-15 08:56:38 +09:00
Yu Watanabe 09e0ce8010 test: fix wrong use of ASSERT_OK() and friends 2025-03-15 08:56:38 +09:00
Yu Watanabe 83340eb1fa tests: replace ASSERT_OK() and friends with coverity firendy function
We already have done the same for assert_se() since
d9fb7afb48.

Hopefully this makes coverity silent about the false-positive side-effect
warnings.
2025-03-15 08:56:38 +09:00
Yu Watanabe 0e3e424261 test-macro: CONST_MAX() and friends may return (void*)0 when built under coverity
See 963c6c90af.
2025-03-15 08:56:38 +09:00
Yu Watanabe e0b915f77a test-localed-util: use ASSERT_OK() and friends 2025-03-13 09:27:05 +01:00
Yu Watanabe d8a353552a TEST-73-LOCALE: do not unnecessarily restart systemd-localed
It is not necessary to clear previous keymap assignment, as
`localectl set-keymap` will anyway overwrite the previous assignment.

This drops the unnecessary restart of systemd-localed in the loop.
The mkosi test image contains about 500~700 keymaps. The test
performance is greatly improved by reducing the number of restarts,
especially when the test is running with sanitizers.

On Fedora 41 with sanitizers,
Before:
1/1 systemd:integration-tests / TEST-73-LOCALE OK             1157.50s
After:
1/1 systemd:integration-tests / TEST-73-LOCALE OK              104.43s
2025-03-13 09:24:49 +01:00
Yu Watanabe fdab24bf6a Fix several issues found by Coverity (#36726) 2025-03-13 07:54:06 +09:00
Yu Watanabe e0111277e4 nsresource: fix GID check in io.systemd.UserDatabase.GetGroupRecord method
Fixes a bug in 8aee931e7a (v256).
2025-03-13 05:35:54 +09:00
Yu Watanabe 36a9e47a0d nsresource: fix error handling 2025-03-13 05:27:50 +09:00
Yu Watanabe e66c71a786 boot: several follow-ups for reboot-on-error feature (#36721) 2025-03-13 05:26:47 +09:00
Yu Watanabe 86cbb13a4e udev/net: enable new [EnergyEfficientEthernet] section
Also fixes a typo in setting name.

Follow-up for cdc9be29b1.
Addresses post-merge comments for #36302.
2025-03-13 05:26:14 +09:00
Yu Watanabe 278e3adf50 test: wrap assignments in ASSERT_OK() and friends with parentheses
Hopefully fixes many CID reports.
2025-03-13 05:15:28 +09:00
Yu Watanabe 8df80dfbbf test-netlink: fix use of ASSERT_OK()
Follow-up for 3841288e5f.
2025-03-13 05:15:22 +09:00
Yu Watanabe 55b13141fc homed: fix OOM check
Follow-up for f1b6417fea.
Fixes CID#1593167.
2025-03-13 04:57:02 +09:00
Yu Watanabe 26835b3e98 homectl: insert missing 'else'
Follow-up for cc14c14782.
Fixes CID#1593168 and CID#1593166.
2025-03-13 04:56:49 +09:00
Yu Watanabe f9ddbc5b35 udev: use INTERFACE property rather than sysname when processing network interface (#36627)
sd-device replaces '!' in sysname with '/', hence sysname may be
different from ifname.
Let's use INTERFACE property when we need network interface name.

This fixes the following unexpected renaming of network interfaces
created with '!' in their name, e.g. 'hoge!foo' -> 'hoge_foo':
```
$ run0 ip link add 'hoge!foo' type dummy
$ ip link show 'hoge!foo'
Device "hoge!foo" does not exist.
$ ip link show 'hoge_foo'
410: hoge_foo: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ee:54:4a:dd:c4:c7 brd ff:ff:ff:ff:ff:ff
```

Closes #26156.
2025-03-13 04:12:57 +09:00
Yu Watanabe 1ae60b69fa boot: introduce string tables for RebootOnError and sucure_boot_enroll 2025-03-13 02:40:12 +09:00
Yu Watanabe c5710c00ff boot: fix use of uninitialized value on error
Follow-up for 0bdf94e588.
2025-03-13 02:40:12 +09:00
Yu Watanabe 2ee01dbc05 netlink-util: move several function prototypes 2025-03-13 01:48:50 +09:00
Yu Watanabe 472ad6af94 netlink-util: allow to call rtnl_set_link_name() and friends with NULL rtnl 2025-03-13 01:48:50 +09:00
Yu Watanabe 0e44a7c085 netlink-util: merge rtnl_get_link_info() and rtnl_get_ifname_full() into rtnl_get_link_info_full()
Then, this makes rtnl_get_ifname_full() and friends as inline wrappers of
rtnl_get_link_info_full().
2025-03-13 01:48:50 +09:00
Yu Watanabe 3841288e5f test-netlink: use ASSERT_OK() and friends 2025-03-13 01:48:50 +09:00
Yu Watanabe f0ebc0c5bf tests: introduce ASSERT_PTR_EQ() 2025-03-13 01:48:50 +09:00
Yu Watanabe 6e316e8104 udev/net: replace device_unsigned_attribute() with device_get_sysattr_unsigned()
They are completely equivalent, except for logging.
This also drops duplicated log messages on failure paths.
2025-03-13 01:48:50 +09:00
Yu Watanabe b15053de89 udev/net: fix assignment of ID_NET_NAME=
E.g. sd_device object of network interface 'hoge!foo' has sysname 'hoge/foo'.
So, previously udevd assigned 'hoge/foo' rather than 'hoge!foo' to ID_NET_NAME,
hence even when renaming is not requested, such interface was renamed to 'hoge_foo'
(note '/' cannot be used in network interface name, hence escaped to underbar).
2025-03-13 01:48:33 +09:00
Yu Watanabe b3157fc912 udev-event: fix filtering logic of renaming network interface
The device sysname may be different from the network interface name.
2025-03-13 01:08:57 +09:00
Yu Watanabe 4352457a96 udev-event: set INTERFACE/INTERFACE_OLD property on rename only when the device is a network interface
This does not change any behavior, as currently udevd only supports
renaming for network interfaces.

Closes #26156.
2025-03-13 01:08:57 +09:00
Yu Watanabe e3bc8d3449 udev-builtin-net_driver: use correct interface name
Previously, when the interface name contains '!', the builtin command
failed to get the driver of the interface.
2025-03-13 01:08:57 +09:00
Yu Watanabe bec2f4dc3e sd_device: introduce device_get_ifname()
sd-device replaces '!' in sysname with '/'. Hence, sysname and ifname
may be different. Let's get network interface name through INTERFACE
property.
2025-03-13 01:08:57 +09:00
Yu Watanabe 32b0e689d6 test: do not pass return value to log_error_errno() on success 2025-03-13 01:08:57 +09:00
Yu Watanabe 0f52a1107e test-sd-device: use ASSERT_OK() and friends 2025-03-13 01:08:57 +09:00
Yu Watanabe c7523292da sd-device: reorder elements in sd_device object
No functional change, just refactoring.
2025-03-13 01:08:57 +09:00
Yu Watanabe 1707b41e76 sd-device: protect more properties often set by kernel and internally used by udevd 2025-03-13 01:08:53 +09:00
Yu Watanabe a4cb6c41a1 hostname: several follow-ups for wildcard hostname support (#36707) 2025-03-13 00:46:00 +09:00
Yu Watanabe 11361e3293 meson: drop split-usr, rootlibdir, and rootprefix from meson_options.txt
These options were deprecated by b0d3095fd6 (v255).
Let's remove them completely.
2025-03-12 15:21:57 +01:00
Yu Watanabe 35d5defc4e hostname-setup: use strchr() to find wildcard character
Addresses https://github.com/systemd/systemd/pull/36647#discussion_r1990048751.
2025-03-12 06:48:57 +09:00
Yu Watanabe 851c706e74 test: add test cases for hostname_substitute_wildcards()
The function is indirectly tested through read_etc_hostname(), but let's
also test it directly.
2025-03-12 06:44:42 +09:00
Yu Watanabe 1f5d8a6132 hostname: fix typo
Follow-up for af9c45d5b6.
2025-03-12 06:26:56 +09:00
Yu Watanabe ced634a62d resolve question marks in /etc/hostname to characters hashed from machine ID (#36647)
So I have a bunch of particle os instances around, that I frequently
factory reset. and it's confusing, since they all have the same name.
Let's do something about this, and extend the hostname setup logic a bit
to deal better with "cattle" rather than "pet" deployments.
Specifically: if a hostname in /etc/hostname contains a bunch of
question marks we'll replace it with hex chars hashed from the machine
id.

This allows us to do something like this:

hostnamectl set-hostname --static 'funky-????-????-???'

and we'll end up with a hostname like `funky-baf4-b653-e230`
2025-03-12 04:50:33 +09:00
Yu Watanabe f3580b6807 mountfsd: add complete varlink introspection comments (#36703) 2025-03-12 04:48:12 +09:00
Yu Watanabe 1ac2fc4984 run: check if the start job is finished on PropertiesChanged signal and so on
Otherwise, if systemd-run is disconnected from bus before JobRemoved
signal, then c->start_job will never freed, thus run_context_check_done()
will never call sd_event_exit() even after the service is finished.

This drops monitoring JobRemoved signal, and make systemd-run check if
the start job is started when PropertiesChanged signal is received.

Follow-up for b7ba8d55b8.

Fixes #36679.
2025-03-12 04:33:46 +09:00
Yu Watanabe 07355061db TEST-74-AUX-UTILS: fail earlier when systemd-run fail to reconnect to bus
Note, the default timeout for systemctl daemon-reload is 270 seconds.
Hence, 300 seconds should be enough.
2025-03-12 04:33:46 +09:00
Yu Watanabe 9670922d44 ci/mkosi: enable sanitizers on Fedora 41
It seems the recent update of LLVM package in Fedora rawhide breaks
sanitizers, and udevd freezes after false-positive (I guess) issue is
detected:

systemd-udevd[2646]: =================================================================
systemd-udevd[2646]: ==2646==ERROR: AddressSanitizer: stack-buffer-underflow on address 0x7ffc3a642660 at pc 0x555627ac022b bp 0x7ffc3a6422b0 sp 0x7ffc3a6422a8
systemd-udevd[2646]: READ of size 8 at 0x7ffc3a642660 thread T0 ((udev-worker))

llvm-19.1.7-11.fc43 worked fine, but llvm-20.1.0-1.fc43 does not.
To avoid the issue, let's enable sanitizer on Fedora 41, and disable it
on Fedora rawhide.

Closes #36678.
2025-03-12 04:33:46 +09:00
Yu Watanabe e5e7cc9a98 TEST-23-UNIT-FILE: skip verifying masked unit
This fixes the following failure:
TEST-23-UNIT-FILE.sh[2408]: + systemd-analyze --recursive-errors=no --man=no verify /usr/lib/systemd/system/sysinit.target.wants/systemd-hwdb-update.service
systemd-analyze[2737]: sys-kernel-config.mount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: proc-sys-fs-binfmt_misc.automount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: dev-hugepages.mount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: sys-kernel-tracing.mount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: sys-kernel-debug.mount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: sys-fs-fuse-connections.mount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: dev-mqueue.mount: symlinks are not allowed for units of this type, rejecting.
systemd-analyze[2737]: Unit systemd-hwdb-update.service is masked.
TEST-23-UNIT-FILE.sh[166]: + :
TEST-23-UNIT-FILE.sh[166]: + kill -0 2408
TEST-23-UNIT-FILE.sh[166]: + wait 2408
TEST-23-UNIT-FILE.sh[166]: + echo 'Subtest /usr/lib/systemd/tests/testdata/units/TEST-23-UNIT-FILE.verify-unit-files.sh failed'
TEST-23-UNIT-FILE.sh[166]: Subtest /usr/lib/systemd/tests/testdata/units/TEST-23-UNIT-FILE.verify-unit-files.sh failed
2025-03-12 04:33:46 +09:00
Yu Watanabe b8790a875e tmpfiles: ignore ENOENT when file is removed during setting parmission and friends
After a file matches with a glob pattern, the file may be removed or
renamed before opening it. Let's ignore the error in such case.

Fixes #30938.
2025-03-11 18:52:28 +09:00