Package: libc6.1-alphaev67 Version: 2.19-19 Severity: important Justification: breaks other software when installed User: debian-al...@lists.debian.org Usertags: alpha
Something has gone terribly wrong with the libc6.1-alphaev67 package with the 2.19-19 upload. A segmentation violation occurs every time a shell command is run. Everything is okay if only libc6.1 installed. With libc6.1-alphaev67 also installed it appears that commands execute correctly and the segmentation violation occurs near the end or after command execution. Running this in a buildd chroot I install libc6.1-alphaev67 and dpkg falls over in the postinstall with a segfault. Then running ls a segfault occurs. It appears that the segfault is actually caused by iconv rather than ls, so running gdb on the core dump: (sid)mjc@electro:~/.../glibc/glibc-2.19$ gdb iconv core [snip] Core was generated by `iconv -l'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x000002000007ac44 in __GI___call_tls_dtors () at cxa_thread_atexit_impl.c:83 83 cxa_thread_atexit_impl.c: No such file or directory. (gdb) dir stdlib Source directories searched: /home/mjc/debian/glibc/glibc-2.19/stdlib:$cdir:$cwd (gdb) bt full #0 0x000002000007ac44 in __GI___call_tls_dtors () at cxa_thread_atexit_impl.c:83 No locals. #1 0x000002000007a3fc in __run_exit_handlers (status=2006560, listp=0x200001ea020 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:40 No locals. #2 0x000002000007a550 in __GI_exit (status=<optimized out>) at exit.c:104 No locals. #3 0x0000000120002ea8 in ?? () No symbol table info available. #4 0x000002000005ec30 in __libc_start_main (main=0x1200023a0, argc=<optimized out>, argv=0x11ff9bbf8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x11ff9bbe0) at libc-start.c:287 result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 4831893040, 4830229088, 4830229097, 4837948556, 4837948548, -6904472293805735848, -6904474492829226072, -6904474497599762104, 4650248090236747776, 0, 0, 0, 0, 0, 0, 0}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> #5 0x0000000120002fb8 in ?? () No symbol table info available. Backtrace stopped: previous frame inner to this frame (corrupt stack?) (gdb) list 78 /* Call the destructors. This is called either when a thread returns from the 79 initial function or when the process exits via the exit function. */ 80 void 81 __call_tls_dtors (void) 82 { 83 while (tls_dtor_list) 84 { 85 struct dtor_list *cur = tls_dtor_list; 86 tls_dtor_list = tls_dtor_list->next; 87 (gdb) disass /m Dump of assembler code for function __GI___call_tls_dtors: 82 { 0x000002000007abf0 <+0>: ldah gp,23(t12) 0x000002000007abf4 <+4>: lda gp,27400(gp) 0x000002000007abfc <+12>: lda sp,-48(sp) 0x000002000007ac04 <+20>: stq s0,8(sp) 0x000002000007ac08 <+24>: stq s1,16(sp) 0x000002000007ac0c <+28>: stq s2,24(sp) 0x000002000007ac10 <+32>: stq s3,32(sp) 0x000002000007ac1c <+44>: stq s4,40(sp) 0x000002000007ac20 <+48>: stq ra,0(sp) 83 while (tls_dtor_list) 0x000002000007abf8 <+8>: ldq t12,-32328(gp) 0x000002000007ac00 <+16>: lda a0,-30936(gp) 0x000002000007ac34 <+68>: rduniq 0x000002000007ac38 <+72>: addq a0,v0,v0 0x000002000007ac3c <+76>: ldah v0,0(v0) 0x000002000007ac40 <+80>: unop => 0x000002000007ac44 <+84>: ldq s0,72(v0) 0x000002000007ac48 <+88>: bne s0,0x2000007ac94 <__GI___call_tls_dtors+164> 0x000002000007ac4c <+92>: br 0x2000007ad20 <__GI___call_tls_dtors+304> 0x000002000007ac74 <+132>: ldq t12,-32328(gp) 0x000002000007ac78 <+136>: lda a0,-30936(gp) 0x000002000007ac7c <+140>: jsr ra,(t12),0x2000007ac80 <__GI___call_tls_dtors+144> 0x000002000007ac80 <+144>: ldah gp,23(ra) 0x000002000007ac84 <+148>: ldah v0,0(v0) 0x000002000007ac88 <+152>: lda gp,27256(gp) 0x000002000007ac8c <+156>: ldq s0,72(v0) 0x000002000007ac90 <+160>: beq s0,0x2000007ad20 <__GI___call_tls_dtors+304> [snip] gdb) print /x $v0 $1 = 0x40000216920 (gdb) print /x $a0 $2 = 0x200001e9e20 The address pointed to by tls_dtor_list which should be in v0 at the point of the segfault does look wonky. I not convinced this is actually a glibc fault; the changelog for the 2.19-19 upload indicates that the only code change form 2.19-18 is hurd specific, however 2.19-18 was working fine, thus suggestive this might be a compiler/linker cockup. Also I had compiled glibc 2.19-18 a month or two ago with a compiler that had been modified to generate code with the BWX (byte-word extension giving atomic byte and 16-bit word writes) by default and was surprised to see the number of segfaults appearing in the glibc test suite! I didn't analyse any further at the time but my guess is that it is the same segfault I am seeing with libc6.1-alphaev67 now so that suggests there is a change in some other package (gcc? binutils?) that is buggy or is exposing a pre-existing bug in glibc. Cheers Michael. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org