From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/13060 Path: news.gmane.org!.POSTED!not-for-mail From: Szabolcs Nagy Newsgroups: gmane.linux.lib.musl.general Subject: Re: Re: Segmentation fault in static binaries built with recent binutils Date: Wed, 18 Jul 2018 21:38:34 +0200 Message-ID: <20180718193833.GM4418@port70.net> References: <20180718163940.gnx6jkia4i5qdjua@reiner-h.de> <20180718181438.nl4e333zkzw36rzl@reiner-h.de> <20180718190024.GL4418@port70.net> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: blaine.gmane.org 1531942602 21412 195.159.176.226 (18 Jul 2018 19:36:42 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 18 Jul 2018 19:36:42 +0000 (UTC) User-Agent: Mutt/1.9.1 (2017-09-22) To: musl@lists.openwall.com Original-X-From: musl-return-13076-gllmg-musl=m.gmane.org@lists.openwall.com Wed Jul 18 21:36:38 2018 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1ffsFZ-0005Ux-V9 for gllmg-musl@m.gmane.org; Wed, 18 Jul 2018 21:36:38 +0200 Original-Received: (qmail 24315 invoked by uid 550); 18 Jul 2018 19:38:46 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 24297 invoked from network); 18 Jul 2018 19:38:45 -0000 Mail-Followup-To: musl@lists.openwall.com Content-Disposition: inline In-Reply-To: <20180718190024.GL4418@port70.net> Xref: news.gmane.org gmane.linux.lib.musl.general:13060 Archived-At: * Szabolcs Nagy [2018-07-18 21:00:24 +0200]: > * Reiner Herrmann [2018-07-18 20:14:38 +0200]: > > > Can you attach a readelf -a of the binary that's crashing? > > > > The output is attached. > > i could reproduce the crash in a debian:unstable docker image > > i see incorrect auxv[AT_PHDR] value, not yet sure why. > > > Program received signal SIGSEGV, Segmentation fault. > static_init_tls (aux=aux@entry=0x7fffffffebc0) at ../src/env/__init_tls.c:88 > 88 if (phdr->p_type == PT_PHDR) > (gdb) disas > Dump of assembler code for function static_init_tls: > 0x0000000000401404 <+0>: sub $0x8,%rsp > 0x0000000000401408 <+4>: mov 0x18(%rdi),%r9 > 0x000000000040140c <+8>: mov 0x28(%rdi),%rsi > 0x0000000000401410 <+12>: xor %ecx,%ecx > 0x0000000000401412 <+14>: xor %eax,%eax > 0x0000000000401414 <+16>: mov %r9,%rdx > 0x0000000000401417 <+19>: test %rsi,%rsi > 0x000000000040141a <+22>: je 0x401456 > => 0x000000000040141c <+24>: mov (%rdx),%r8d > ... > (gdb) p/x aux[3] > $4 = 0x400040 > (gdb) i proc map > process 13499 > Mapped address spaces: > > Start Addr End Addr Size Offset objfile > 0x401000 0x402000 0x1000 0x1000 /musl/build/a.out > 0x402000 0x403000 0x1000 0x2000 /musl/build/a.out > 0x403000 0x405000 0x2000 0x2000 /musl/build/a.out > 0x7ffff7ffa000 0x7ffff7ffd000 0x3000 0x0 [vvar] > 0x7ffff7ffd000 0x7ffff7fff000 0x2000 0x0 [vdso] > 0x7ffffffde000 0x7ffffffff000 0x21000 0x0 [stack] seems like another musl-gcc wrapper issue, if i do the linking manually then i get a working binary, havent yet figured out why manual linking: Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x0001ec 0x0001ec R 0x1000 LOAD 0x001000 0x0000000000401000 0x0000000000401000 0x0005a4 0x0005a4 R E 0x1000 LOAD 0x002000 0x0000000000402000 0x0000000000402000 0x00004c 0x00004c R 0x1000 LOAD 0x002ff0 0x0000000000403ff0 0x0000000000403ff0 0x000018 0x0002a8 RW 0x1000 NOTE 0x0001c8 0x00000000004001c8 0x00000000004001c8 0x000024 0x000024 R 0x4 GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x10 GNU_RELRO 0x002ff0 0x0000000000403ff0 0x0000000000403ff0 0x000010 0x000010 R 0x1 musl-gcc linking: Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0000000000401000 0x0000000000401000 0x0005a4 0x0005a4 R E 0x1000 LOAD 0x002000 0x0000000000402000 0x0000000000402000 0x00004c 0x00004c R 0x1000 LOAD 0x002ff0 0x0000000000403ff0 0x0000000000403ff0 0x000018 0x0002a8 RW 0x1000 GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x10 GNU_RELRO 0x002ff0 0x0000000000403ff0 0x0000000000403ff0 0x000010 0x000010 R 0x1