Closed
Description
On current staging-next
iteration quite a few emacs-dependent packages are failing. The failures seem to stem from the fact that emacs
is incorrectly modified by patchelf-0.17.2
(0.15.0
works, bisected in nixpkgs
by @mweinelt).
$ nix run https://github.com/NixOS/nixpkgs/archive/staging-next.tar.gz#emacs
Segmentation fault (core dumped)
$ patchelf --version
patchelf 0.17.2
It seems to have something to do with modified library list:
$ nix shell https://github.com/NixOS/nixpkgs/archive/staging-next.tar.gz#emacs
$ gdb emacs
Reading symbols from emacs...
warning: Loadable section ".dynstr" outside of ELF segments
in /nix/store/lzahvwakhghr8b3ri40s935bwhn7nf0x-emacs-28.2/bin/emacs-28.2
warning: Loadable section ".dynamic" outside of ELF segments
in /nix/store/lzahvwakhghr8b3ri40s935bwhn7nf0x-emacs-28.2/bin/emacs-28.2
(No debugging symbols found in emacs)
(gdb) run
Starting program: /nix/store/lzahvwakhghr8b3ri40s935bwhn7nf0x-emacs-28.2/bin/emacs
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7fe6597 in dl_main ()
from /nix/store/8xk4yl1r3n6kbyn05qhan7nbag7npymx-glibc-2.35-224/lib/ld-linux-x86-64.so.2
(gdb) bt
#0 0x00007ffff7fe6597 in dl_main ()
from /nix/store/8xk4yl1r3n6kbyn05qhan7nbag7npymx-glibc-2.35-224/lib/ld-linux-x86-64.so.2
#1 0x00007ffff7fe2a06 in _dl_sysdep_start ()
from /nix/store/8xk4yl1r3n6kbyn05qhan7nbag7npymx-glibc-2.35-224/lib/ld-linux-x86-64.so.2
#2 0x00007ffff7fe45ad in _dl_start ()
from /nix/store/8xk4yl1r3n6kbyn05qhan7nbag7npymx-glibc-2.35-224/lib/ld-linux-x86-64.so.2
#3 0x00007ffff7fe33a8 in _start ()
from /nix/store/8xk4yl1r3n6kbyn05qhan7nbag7npymx-glibc-2.35-224/lib/ld-linux-x86-64.so.2
#4 0x0000000000000001 in ?? ()
#5 0x00007fffffffd1f3 in ?? ()
#6 0x0000000000000000 in ?? ()
If gdb
is to be believed loadable program headers that contain ".dynstr"
and ".dynamic"
are not what they should be.
LD_DEBUG
also suggests very little could be loaded by ld.so
:
$ LD_DEBUG=all emacs
2608983: symbol=__vdso_clock_gettime; lookup in file=linux-vdso.so.1 [0]
2608983: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_clock_gettime' [LINUX_2.6]
2608983: symbol=__vdso_gettimeofday; lookup in file=linux-vdso.so.1 [0]
2608983: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_gettimeofday' [LINUX_2.6]
2608983: symbol=__vdso_time; lookup in file=linux-vdso.so.1 [0]
2608983: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_time' [LINUX_2.6]
2608983: symbol=__vdso_getcpu; lookup in file=linux-vdso.so.1 [0]
2608983: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_getcpu' [LINUX_2.6]
2608983: symbol=__vdso_clock_getres; lookup in file=linux-vdso.so.1 [0]
2608983: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_clock_getres' [LINUX_2.6]
Segmentation fault (core dumped)
eu-elflint
is also unhappy:
$ eu-elflint /nix/store/lzahvwakhghr8b3ri40s935bwhn7nf0x-emacs-28.2/bin/emacs
section [ 7] '.dynstr' not fully contained in segment of program header entry 2
section [ 8] '.dynamic': alloc flag set but section not in any loaded segment
section [29] '.symtab': symbol 1 (__abi_tag): st_value out of bounds
section [29] '.symtab': _GLOBAL_OFFSET_TABLE_ symbol size 0 does not match .got section size 9736
section [29] '.symtab': symbol 5599 (_DYNAMIC): st_value out of bounds
section [29] '.symtab': _DYNAMIC_ symbol value 0x6ab560 does not match dynamic segment address 0x40ee60
section [29] '.symtab': _DYNAMIC symbol size 0 does not match dynamic segment size 1184
section [29] '.symtab': symbol 6650 (__bss_start): st_value out of bounds
loadable segment [2] is writable but contains no writable sections