I'd prefer if the tool was a bit more "polite", i.e. perhaps voluntarily exit with an error if hitting a SIGSEGV. Or even respond to a SIGTERM at a minimum. Ideally it would run and do the thing though. :-)
execve("/home/jinnak/.local/bin/ally", ["ally", "shim"], 0x7ffe45c22918 /* 104 vars /) = 0
brk(NULL) = 0xdef3000
brk(0xdef3d80) = 0xdef3d80
arch_prctl(ARCH_SET_FS, 0xdef3400) = 0
set_tid_address(0xdef36d0) = 755798
set_robust_list(0xdef36e0, 24) = 0
rseq(0xdef3d20, 0x20, 0, 0x53053053) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=81921024, rlim_max=RLIM64_INFINITY}) = 0
readlinkat(AT_FDCWD, "/proc/self/exe", "/home/jinnak/.local/bin/ally", 4096) = 28
getrandom("\xe0\x76\x86\x0d\x7f\x3c\x86\x8c", 8, GRND_NONBLOCK) = 8
brk(NULL) = 0xdef3d80
brk(0xdf14d80) = 0xdf14d80
brk(0xdf15000) = 0xdf15000
mprotect(0x8ed000, 1310720, PROT_READ) = 0
sysinfo({uptime=888939, loads=[154656, 121216, 104480], totalram=16484134912, freeram=249950208, sharedram=2733670400, bufferram=250368000, totalswap=1024454656, freeswap=959422464, procs=1674, totalhigh=0, freehigh=0, mem_unit=1}) = 0
mmap(NULL, 3772976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f6369dda000
mmap(NULL, 60367616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f6366447000
mmap(NULL, 1030258456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f6328dbf000
mmap(NULL, 16484134912, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f5f52540000
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f524ff000
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f524be000
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=81921024, rlim_max=RLIM64_INFINITY}) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=160375, ...}) = 0
mmap(NULL, 160375, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5f52496000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14408, ...}) = 0
mmap(NULL, 16400, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5f52491000
mmap(0x7f5f52492000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f5f52492000
mmap(0x7f5f52493000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f5f52493000
mmap(0x7f5f52494000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f5f52494000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\236\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 840, 64) = 840
fstat(3, {st_mode=S_IFREG|0755, st_size=2003408, ...}) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 840, 64) = 840
mmap(NULL, 2055800, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5f5229b000
mmap(0x7f5f522c3000, 1462272, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f5f522c3000
mmap(0x7f5f52428000, 352256, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18d000) = 0x7f5f52428000
mmap(0x7f5f5247e000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e2000) = 0x7f5f5247e000
mmap(0x7f5f52484000, 52856, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5f52484000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\304\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=225600, ...}) = 0
mmap(NULL, 226064, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5f52263000
mmap(0x7f5f52264000, 163840, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f5f52264000
mmap(0x7f5f5228c000, 45056, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29000) = 0x7f5f5228c000
mmap(0x7f5f52297000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x7f5f52297000
mmap(0x7f5f5229a000, 784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5f5229a000
close(3) = 0
mprotect(0x7f5f52297000, 8192, PROT_READ) = 0
mprotect(0x7f5f5247e000, 16384, PROT_READ) = 0
mprotect(0x7f5f52494000, 4096, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=81921024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f5f52496000, 160375) = 0
munmap(0x7f5f52491000, 16400) = 0
munmap(0x7f5f5229b000, 2055800) = 0
munmap(0x7f5f52263000, 226064) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7f5f5232ee70} ---
+++ killed by SIGKILL +++
zsh: killed strace ally shim
Tried running the direnv example but when trying to
ally shimit locks up and does not respond to a ^C. Akill -9is required to exit. This may be an issue with my config, but that's impossible for me to say since no errors are printed.I'd prefer if the tool was a bit more "polite", i.e. perhaps voluntarily exit with an error if hitting a SIGSEGV. Or even respond to a SIGTERM at a minimum. Ideally it would run and do the thing though. :-)
Strace on Debian 13, x86_64: