Fedora 41 KDE and run0 not working after stty intr ^c

I have a Fedora 41 KDE Beta system and just tried out run0 command.

No matter what I do I see no command output or errors.

run0 id
run0 ls
run0 -u root ls

I do see that the exit code is 130.

For reference, F41 gnome installation upgraded from F40 using bash as the shell this appears to work normally.

run0 starts a systemd service, so some relevant logs land in the journal. Use journalctl -e to check if there’s anything relevant. Also, try with SYSTEMD_LOG_LEVEL=debug run0 …. This will provide additional information about what is going on.

I suspect it’s some permission issue, possibly selinux.

I ran journalctl -f and then did run0 from a konsole terminal.
Nothing appears in the journal.

However if I ssh into the system then run0 prompts for my password and starts a shell as root.

I thought to use strace to see what happens in the too cases (konsole vs. ssh).
So I have something to report here I ran this:

strace -f /usr/bin/run0 2>&1 | tee log

And it prompts in a dialog box “Authentication is required…”.

Running this is also get a prompt:

run0 | tee

So… what is run0 checking on stdout that makes it exit without an error message?

Here is the strace, skipping the .so setup etc:

mprotect(0x7fbed47e3000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7fbed478e000, 95531)           = 0
openat(AT_FDCWD, "/proc/sys/kernel/cap_last_cap", O_RDONLY) = 3
fstatfs(3, {f_type=PROC_SUPER_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0x17, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOSUID|ST_NODEV|ST_NOEXEC|ST_RELATIME}) = 0
read(3, "40\n", 7)                      = 3
close(3)                                = 0
prctl(PR_CAPBSET_READ, CAP_CHOWN)       = 1
prctl(PR_GET_SECUREBITS)                = 0
prctl(PR_GET_NO_NEW_PRIVS, 0, 0, 0, 0)  = 0
prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_IS_SET, CAP_CHOWN, 0, 0) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0x15, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOSUID|ST_NOEXEC|ST_RELATIME}) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0x15, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOSUID|ST_NOEXEC|ST_RELATIME}) = 0
getrandom("\xf0\xd9\xdf\x70\x7a\x5d\xd4\xfe", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x56510996b000
brk(0x56510998c000)                     = 0x56510998c000
access("/etc/selinux/config", F_OK)     = 0
prctl(PR_CAPBSET_READ, CAP_MAC_OVERRIDE) = 1
prctl(PR_CAPBSET_READ, 0x30 /* CAP_??? */) = -1 EINVAL (Invalid argument)
prctl(PR_CAPBSET_READ, CAP_CHECKPOINT_RESTORE) = 1
prctl(PR_CAPBSET_READ, 0x2c /* CAP_??? */) = -1 EINVAL (Invalid argument)
prctl(PR_CAPBSET_READ, 0x2a /* CAP_??? */) = -1 EINVAL (Invalid argument)
prctl(PR_CAPBSET_READ, 0x29 /* CAP_??? */) = -1 EINVAL (Invalid argument)
getpid()                                = 4577
fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0x1), ...}) = 0
newfstatat(AT_FDCWD, ".", {st_mode=S_IFDIR|0755, st_size=600, ...}, 0) = 0
newfstatat(AT_FDCWD, "/home/barry/bemacs", {st_mode=S_IFDIR|0755, st_size=600, ...}, 0) = 0
ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(2, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
getuid()                                = 1000
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
getgid()                                = 1000
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
getuid()                                = 1000
getgid()                                = 1000
ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(2, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
ioctl(1, TCSETSW, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
write(1, "\33]11;?\7", 7)               = 7
ppoll([{fd=0, events=POLLIN}], 1, {tv_sec=0, tv_nsec=100000000}, NULL, 8strace: Process 4577 detached
 <detached ...>

I changed selinux to permissive mode, no change.

Is this an upgrade or a fresh install?
Are you using bash for your shell?

Its an upgrade from f40.
Aside: dnf history list did not show it was an upgrade.
But the fuller history was in dnf4 history .

Yes.

Just created a new user and logged as them.
run0 is now prompting for the new user.

I’ll compare env and see what I have set that may change run0’s behavior.

1 Like

I have been unset and replacing env to eliminate access to my .config/.local but cannot get run0 to prompt.

1 Like

I moved .config and .local out of the way and logged out and back in and run0 prompts.
Putting .local back run0 still prompts.
Putting .config back run0 does not prompt.

I’ll start bi-secting the contents of .config to see what triggers the breakage.

2 Likes

I have tracked it down to one command that breaks run0.

stty intr ^g

Before running this command run0 works.
After run0 exits with no message,.

And this restores it to working order:

stty intr ^c

As background I always change intr to Ctrl-g (like my emacs) and lnext to Ctrl-B then I have Ctrl-C and Ctrl-V available to bind to Copy/Paste in the terminal app.

Do you want a bugzilla report? If so where?

Added f41

Raised 2315867 – run0 fails to work after stty intr ^g
And upstream run0 fails to work after stty intr ^g · Issue #34604 · systemd/systemd · GitHub