Closed
Description
systemd version the issue has been seen with
253
Used distribution
ARchlinux ARM
Linux kernel version used
6.1.12-1-rpi-ARCH
CPU architectures issue was seen on
arm
Component
systemctl
Expected behaviour you didn't see
After running systemctl enable wpa_supplicant@wlu1u2
, I would have expect the command to return successfully and that it removed the symlink wpa_supplicant@wlu1u2.service
in /etc/systemd/system/multi-user.target.wants/
But the command returns an error without removing the symlink
Unexpected behaviour you saw
The command returns 'Failed to disable unit: Invalid argument' and did not remove the symlink
Steps to reproduce the problem
- Enable the service
# systemctl enable wpa_supplicant@wlan0.service
- Try to disable the service
# systemctl disable wpa_supplicant@wlan0.service
Failed to disable unit: Invalid argument
Additional program output to the terminal or log subsystem illustrating the issue
No response
This is on a rpi2b running archlinuxARM for armv7
Activity
mrc0mmand commentedon Mar 1, 2023
Could you run the offending
systemctl disable
command withSYSTEMD_LOG_LEVEL=debug
and also paste thewpa_supplicant@.service
unit?solsticedhiver commentedon Mar 1, 2023
In the mean time, interface changed name.
mrc0mmand commentedon Mar 2, 2023
This is interesting. After an unsuccessful battle with my old rPi I got my hands on a F36 armv7hl machine, and after rebuilding the Rawhide systemd RPM I can reproduce the issue there as well.
Further digging revealed that this reproducible on the latest main, as well as that it seems to be caused by something going wrong during optimization, because:
Build with -O0 (
meson build
):Build with -O1 (
meson build --optimization=1
):Turns out "parsing"
uint64_t
viava_arg
, while passing anint
to it has some unforeseen consequences:Casting the argument to
uint64_t
makes it happy again:This reminds me of a similar issue we had regarding
va_arg()
and type conversion: #14470 (comment).@poettering is the casting solution enough or there is some other (and more elegant) way to fix this?
systemctl: explicitly cast the constants to uint64_t
systemctl: explicitly cast the constants to uint64_t
systemctl: explicitly cast the constants to uint64_t
systemctl: explicitly cast the constants to uint64_t
semeion commentedon Mar 20, 2023
Yeah i got same isue here trying to disable systemd-networkd.service.
"'Failed to disable unit: Invalid argument'".
Using Arch Linux - ARM on a RPI3B.
gcd0318 commentedon Mar 24, 2023
me too, also archlinuxarm, just updated to linux-armv7-6.2.8-1-armv7h
2 remaining items