vn971 / rua

Build tool for Arch Linux providing control, review and jailed build options
GNU General Public License v3.0
425 stars 42 forks source link

When using fish shell, terminal is stuck after inspecting #90

Closed kuon closed 4 years ago

kuon commented 4 years ago

When I do (with fish shell as login shell):

rua install <pkg>

and at this prompt press T

[S]=run shellcheck on PKGBUILD, [D]=(identical to upstream, empty diff), [T]=run shell to edit/inspect, [O]=ok, use package

I am redirected to a shell inside the package, where I can modify the PKGBUILD, but after exiting that shell with exit or ctrl+d I have that prompt again:

Reviewing "/home/kuon/.config/rua/pkg/cordless-git". 
[S]=run shellcheck on PKGBUILD, [D]=(identical to upstream, empty diff), [T]=run shell to edit/inspect, [O]=ok, use package 

but keys are ignored, I must press Ctrl+C to exit rua.

If I create another user with bash as login shell it works, if I switch this user (using chsh) to fish (to ensurer a blank fish configuration), it doesn't work.

Tested with fish shell 3.0.2.

vn971 commented 4 years ago

Could it be that fish starts up a daemon, and then doesn't properly free up the input from itself?

Can check out the process tree to see if rua has descendant processes running after invoking fish?

kuon commented 4 years ago

After pressing T, when I am in the fish sub shell, I see fish as descendant from rua.

This is the strace of rua:

read(0, "t\n", 8192)                    = 2
write(2, "Exit the shell with `logout` or "..., 42) = 42
mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f6302e04000
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
clone(child_stack=0x7f6302e0cff0, flags=CLONE_VM|CLONE_VFORK|SIGCHLD) = 1582493
munmap(0x7f6302e04000, 36864)           = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(1582493, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 1582493
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1582493, si_uid=1000, si_status=0, si_utime=4, si_stime=4} ---
write(2, "\nReviewing ", 11)            = 11
write(2, "\"", 1)                       = 1
write(2, "/", 1)                        = 1
write(2, "h", 1)                        = 1
write(2, "o", 1)                        = 1
write(2, "m", 1)                        = 1
write(2, "e", 1)                        = 1
write(2, "/", 1)                        = 1
write(2, "k", 1)                        = 1
write(2, "u", 1)                        = 1
write(2, "o", 1)                        = 1
write(2, "n", 1)                        = 1
write(2, "/", 1)                        = 1
write(2, ".", 1)                        = 1
write(2, "c", 1)                        = 1
write(2, "o", 1)                        = 1
write(2, "n", 1)                        = 1
write(2, "f", 1)                        = 1
write(2, "i", 1)                        = 1
write(2, "g", 1)                        = 1
write(2, "/", 1)                        = 1
write(2, "r", 1)                        = 1
write(2, "u", 1)                        = 1
write(2, "a", 1)                        = 1
write(2, "/", 1)                        = 1
write(2, "p", 1)                        = 1
write(2, "k", 1)                        = 1
write(2, "g", 1)                        = 1
write(2, "/", 1)                        = 1
write(2, "h", 1)                        = 1
write(2, "e", 1)                        = 1
write(2, "r", 1)                        = 1
write(2, "o", 1)                        = 1
write(2, "k", 1)                        = 1
write(2, "u", 1)                        = 1
write(2, "-", 1)                        = 1
write(2, "c", 1)                        = 1
write(2, "l", 1)                        = 1
write(2, "i", 1)                        = 1
write(2, "\"", 1)                       = 1
write(2, ". \n", 3)                     = 3
openat(AT_FDCWD, "/dev/null", O_WRONLY|O_CLOEXEC) = 5
prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=10000, rlim_max=30000}) = 0
prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=10000, rlim_max=30000}) = 0
mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f6302e04000
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
clone(child_stack=0x7f6302e0cff0, flags=CLONE_VM|CLONE_VFORK|SIGCHLD) = 1583380
munmap(0x7f6302e04000, 36864)           = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(5)                                = 0
wait4(1583380, [{WIFEXITED(s) && WEXITSTATUS(s) == 128}], 0, NULL) = 1583380
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1583380, si_uid=1000, si_status=128, si_utime=0, si_stime=0} ---
write(2, "[D]=view upstream changes since "..., 50) = 50
write(2, "[M]=accept/merge upstream change"..., 35) = 35
write(2, "[S]=(shellcheck not available un"..., 48) = 48
write(2, "[T]=run shell to edit/inspect, ", 31) = 31
write(2, "[O]=(cannot use the package unti"..., 45) = 45
read(0,

This is the strace of the sub running fish shell (attached when running, and I just did Ctrl+D:

strace: Process 1585951 attached
select(6, [0 3 5], NULL, NULL, NULL)    = 1 (in [0])
read(0, "\4", 1)                        = 1
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
stat("/home/kuon/.config/fish/functions/delete-or-exit.fish", 0x7ffdc7c49430) =
-1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/compat/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/core/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/index/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/packages/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/themes/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/bundle/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/util/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/repo/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/cli/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/fish-spec/functions/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/z/functions/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/delete-or-exit.fish", 0x7ffdc7c49430) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/git/delete-or-exit.fish", 0x7ffdc7c49430)
= -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/functions/delete-or-exit.fish",
0x7ffdc7c49430) = -1 ENOENT (No such file or directory)
stat("/etc/fish/functions/delete-or-exit.fish", 0x7ffdc7c49430) = -1 ENOENT (No
such file or directory)
stat("/usr/share/fish/vendor_functions.d/delete-or-exit.fish", 0x7ffdc7c49430) =
-1 ENOENT (No such file or directory)
stat("/usr/share/fish/functions/delete-or-exit.fish", {st_mode=S_IFREG|0644,
st_size=389, ...}) = 0
access("/usr/share/fish/functions/delete-or-exit.fish", R_OK) = 0
pipe([6, 7])                            = 0
fcntl(6, F_GETFD)                       = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
fcntl(7, F_GETFD)                       = 0
fcntl(7, F_SETFD, FD_CLOEXEC)           = 0
fcntl(6, F_GETFL)                       = 0 (flags O_RDONLY)
fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
stat("/home/kuon/.config/fish/functions/source.fish", 0x7ffdc7c487c0) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/compat/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/core/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/index/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/packages/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/themes/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/bundle/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/util/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/repo/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/cli/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/fish-spec/functions/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/z/functions/source.fish", 0x7ffdc7c487c0)
= -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/source.fish", 0x7ffdc7c487c0) = -1 ENOENT
(No such file or directory)
stat("/home/kuon/.local/share/omf/lib/git/source.fish", 0x7ffdc7c487c0) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/functions/source.fish",
0x7ffdc7c487c0) = -1 ENOENT (No such file or directory)
stat("/etc/fish/functions/source.fish", 0x7ffdc7c487c0) = -1 ENOENT (No such
file or directory)
stat("/usr/share/fish/vendor_functions.d/source.fish", 0x7ffdc7c487c0) = -1
ENOENT (No such file or directory)
stat("/usr/share/fish/functions/source.fish", 0x7ffdc7c487c0) = -1 ENOENT (No
such file or directory)
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
getpgrp()                               = 1585935
ioctl(0, TIOCGPGRP, [1585935])          = 0
getpid()                                = 1585951
openat(AT_FDCWD, "/usr/share/fish/functions/delete-or-exit.fish",
O_RDONLY|O_CLOEXEC) = 8
fstat(8, {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x5611fa1f43a0, sa_mask=[],
sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL,
8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x5611fa1f4460, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
fcntl(8, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(8, {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
read(8, "#\n# This function deletes a char"..., 4096) = 389
read(8, "", 3584)                       = 0
close(8)                                = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x5611fa1f43a0, sa_mask=[],
sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL,
8) = 0
rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGTSTP, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGTTOU, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGTTIN, {sa_handler=0x5611fa1f4380, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x5611fa1f4430, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=0x5611fa1f4400, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGHUP, NULL, {sa_handler=0x5611fa1f4490, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, 8) = 0
rt_sigaction(SIGALRM, {sa_handler=0x5611fa1f4370, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGWINCH, {sa_handler=0x5611fa1f43d0, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
read(6, 0x7ffdc7c47910, 4096)           = -1 EAGAIN (Resource temporarily
unavailable)
close(7)                                = 0
read(6, "", 4096)                       = 0
close(6)                                = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
pipe([6, 7])                            = 0
fcntl(6, F_GETFD)                       = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
fcntl(7, F_GETFD)                       = 0
fcntl(7, F_SETFD, FD_CLOEXEC)           = 0
fcntl(6, F_GETFL)                       = 0 (flags O_RDONLY)
fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
stat("/home/kuon/.config/fish/functions/commandline.fish", 0x7ffdc7c47ca0) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/compat/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/core/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/index/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/packages/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/themes/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/bundle/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/util/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/repo/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/cli/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/fish-spec/functions/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/z/functions/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/commandline.fish", 0x7ffdc7c47ca0) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/git/commandline.fish", 0x7ffdc7c47ca0) =
-1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/functions/commandline.fish",
0x7ffdc7c47ca0) = -1 ENOENT (No such file or directory)
stat("/etc/fish/functions/commandline.fish", 0x7ffdc7c47ca0) = -1 ENOENT (No
such file or directory)
stat("/usr/share/fish/vendor_functions.d/commandline.fish", 0x7ffdc7c47ca0) = -1
ENOENT (No such file or directory)
stat("/usr/share/fish/functions/commandline.fish", 0x7ffdc7c47ca0) = -1 ENOENT
(No such file or directory)
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
getpgrp()                               = 1585935
ioctl(0, TIOCGPGRP, [1585935])          = 0
read(6, 0x7ffdc7c46df0, 4096)           = -1 EAGAIN (Resource temporarily
unavailable)
close(7)                                = 0
read(6, "", 4096)                       = 0
close(6)                                = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
getpgrp()                               = 1585935
ioctl(0, TIOCGPGRP, [1585935])          = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
stat("/home/kuon/.config/fish/functions/exit.fish", 0x7ffdc7c487f0) = -1 ENOENT
(No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/compat/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/core/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/index/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/packages/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/themes/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/bundle/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/util/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/repo/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/cli/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/fish-spec/functions/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/exit.fish", 0x7ffdc7c487f0)
= -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/z/functions/exit.fish", 0x7ffdc7c487f0) =
-1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/exit.fish", 0x7ffdc7c487f0) = -1 ENOENT
(No such file or directory)
stat("/home/kuon/.local/share/omf/lib/git/exit.fish", 0x7ffdc7c487f0) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/exit.fish", 0x7ffdc7c487f0)
= -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/functions/exit.fish",
0x7ffdc7c487f0) = -1 ENOENT (No such file or directory)
stat("/etc/fish/functions/exit.fish", 0x7ffdc7c487f0) = -1 ENOENT (No such file
or directory)
stat("/usr/share/fish/vendor_functions.d/exit.fish", 0x7ffdc7c487f0) = -1 ENOENT
(No such file or directory)
stat("/usr/share/fish/functions/exit.fish", 0x7ffdc7c487f0) = -1 ENOENT (No such
file or directory)
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
getpgrp()                               = 1585935
ioctl(0, TIOCGPGRP, [1585935])          = 0
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig -icanon -echo ...}) = 0
write(1, "\33", 1)                      = 1
write(1, "[", 1)                        = 1
write(1, "3", 1)                        = 1
write(1, "0", 1)                        = 1
write(1, "m", 1)                        = 1
write(1, "\33", 1)                      = 1
write(1, "[", 1)                        = 1
write(1, "m", 1)                        = 1
write(1, "\17", 1)                      = 1
write(1, "\33", 1)                      = 1
write(1, "[", 1)                        = 1
write(1, "3", 1)                        = 1
write(1, "0", 1)                        = 1
write(1, "m", 1)                        = 1
write(1, "\33", 1)                      = 1
write(1, "[", 1)                        = 1
write(1, "m", 1)                        = 1
write(1, "\17", 1)                      = 1
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x5611fa1f43a0, sa_mask=[],
sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL,
8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7f957fdad930}, NULL, 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x5611fa1f4460, sa_mask=[],
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f957fdad930}, NULL, 8) = 0
getpid()                                = 1585951
stat("/home/kuon/.config/fish/functions/printf.fish", 0x7ffdc7c49140) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/compat/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/core/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/index/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/packages/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/themes/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/bundle/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/util/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/repo/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/cli/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/fish-spec/functions/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/omf/functions/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/pkg/z/functions/printf.fish", 0x7ffdc7c49140)
= -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/lib/printf.fish", 0x7ffdc7c49140) = -1 ENOENT
(No such file or directory)
stat("/home/kuon/.local/share/omf/lib/git/printf.fish", 0x7ffdc7c49140) = -1
ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/home/kuon/.local/share/omf/themes/bobthefish/functions/printf.fish",
0x7ffdc7c49140) = -1 ENOENT (No such file or directory)
stat("/etc/fish/functions/printf.fish", 0x7ffdc7c49140) = -1 ENOENT (No such
file or directory)
stat("/usr/share/fish/vendor_functions.d/printf.fish", 0x7ffdc7c49140) = -1
ENOENT (No such file or directory)
stat("/usr/share/fish/functions/printf.fish", 0x7ffdc7c49140) = -1 ENOENT (No
such file or directory)
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
getpgrp()                               = 1585935
ioctl(0, TIOCGPGRP, [1585935])          = 0
write(1, "\33[?2004l", 8)               = 8
getpid()                                = 1585951
ioctl(0, TIOCGPGRP, [1585935])          = 0
ioctl(0, TIOCSPGRP, [1585935])          = 0
exit_group(0)                           = ?
+++ exited with 0 +++
vn971 commented 4 years ago

Yeah, that's what I thought. Would it then make sense to start fish beforehand outside of rua, or invoke it with some parameter that disables background daemon creation? I mean, if fish by design works by grabbing some kind of access to a terminal, while other shells don't, then it seems to be fish-specific?

kuon commented 4 years ago

I opened an issue on the fish project, because I do not know what would be the best approach to solve this.

faho commented 4 years ago

This is indeed a fish issue that's fixed in the next release.

The problem is that fish 3.0.x due to a bug doesn't reset terminal modes - in particular "echo" and "-icrnl"/"-inlcr" - in this case, so it doesn't appear like your input is registered, and it indeed will treat the return key differently, so you'd have to press ctrl-j instead.

vn971 commented 4 years ago

Nice, thanks for the very quick response and the explanation!

vn971 commented 4 years ago

I'll close it on this side then since there's not much rua can do about it, and it'll be fixed in next release.