From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/12383 Path: news.gmane.org!.POSTED!not-for-mail From: Po-yi Wang Newsgroups: gmane.linux.lib.musl.general Subject: Re: seg fault at src/string/strlen.c:15 Date: Tue, 23 Jan 2018 18:55:13 -0800 (PST) Message-ID: References: <20180124022743.GX1627@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Trace: blaine.gmane.org 1516762431 5753 195.159.176.226 (24 Jan 2018 02:53:51 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 24 Jan 2018 02:53:51 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-12399-gllmg-musl=m.gmane.org@lists.openwall.com Wed Jan 24 03:53:47 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 1eeBBl-0008RN-Pw for gllmg-musl@m.gmane.org; Wed, 24 Jan 2018 03:53:25 +0100 Original-Received: (qmail 3452 invoked by uid 550); 24 Jan 2018 02:55:27 -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 3434 invoked from network); 24 Jan 2018 02:55:26 -0000 In-Reply-To: <20180124022743.GX1627@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:12383 Archived-At: On Tue, 23 Jan 2018, Rich Felker wrote: > On Tue, Jan 23, 2018 at 05:07:32PM -0800, Po-yi Wang wrote: >> hi >> >> I try to compile make-4.1 for i486,ppc,arm targets. >> i486 seem ok. "make --version" runs and no problem. >> for ppc and arm targets, both seg fault at exactly the same place. >> I had to recompile musl-1.1.18 for both with "-g3" to narrow down >> the problem. it should be easy to reproduce. here is some outputs: >> >> [ppc][1] cd /build/make-4.1; file make >> make: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 >> (SYSV), statically linked, not stripped >> [ppc][1] cd /build/make-4.1; cp make make-4.1 [ppc][1] cd >> /build/make-4.1; gdb make-4.1 >> GNU gdb 6.5 >> Copyright (C) 2006 Free Software Foundation, Inc. >> GDB is free software, covered by the GNU General Public License, and >> you are >> welcome to change it and/or distribute copies of it under certain >> conditions. >> Type "show copying" to see the conditions. >> There is absolutely no warranty for GDB. Type "show warranty" for >> details. >> This GDB was configured as "powerpc-unknown-linux-gnu"...Using host >> libthread_db library "/lib/libthread_db.so.1". >> >> (gdb) run --version >> Starting program: /tmp/build/make-4.1/make-4.1 --version >> >> Program received signal SIGSEGV, Segmentation fault. >> strlen (s=0x0) at src/string/strlen.c:15 >> 15 for (w = (const void *)s; !HASZERO(*w); w++); >> (gdb) > > This means make is calling strlen(0), so the bug is somewhere else -- > in whatever causing the string pointer passed to strlen to be a null > pointer. Can you show a full backtrace (bt) rather than just the point > of the crash? for ppc: Program received signal SIGSEGV, Segmentation fault. strlen (s=0x0) at src/string/strlen.c:15 15 for (w = (const void *)s; !HASZERO(*w); w++); (gdb) bt #0 strlen (s=0x0) at src/string/strlen.c:15 #1 0x10027ff8 in __strdup (s=0x0) at src/string/strdup.c:7 #2 0x1001167c in xstrdup (ptr=0x0) at misc.c:259 #3 0x1001ae94 in define_variable_in_set (name=0x10036474 "MAKE_TERMOUT", length=12, value=0x0, origin=o_default, recursive=0, set=0x1004d804, flocp=0x0) at variable.c:243 #4 0x1000fb14 in main (argc=2, argv=0xbfc26ea4, envp=0xbfc26eb0) at main.c:1404 for arm: #0 0x0002c3a0 in strlen (s=, s@entry=0x0) at src/string/strlen.c:15 #1 0x0002c350 in __strdup (s=0x0) at src/string/strdup.c:7 #2 0x000180d4 in xstrdup (ptr=ptr@entry=0x0) at misc.c:259 #3 0x00020ec0 in define_variable_in_set ( name=name@entry=0x37e7f "MAKE_TERMOUT", length=length@entry=12, value=0x0, origin=origin@entry=o_default, recursive=recursive@entry=0, set=0x46ae8 , flocp=flocp@entry=0x0) at variable.c:243 #4 0x00008768 in main (argc=, argv=, envp=) at main.c:1404 After "mount -n -t devpts devpts /dev/pts", both works fine. Strangely, on i486, even if I "umount /dev/pts", seg fault do not occur. Thanks. > >> output for arm target: >> >> GNU gdb (GDB) 8.0 >> Copyright (C) 2017 Free Software Foundation, Inc. >> License GPLv3+: GNU GPL version 3 or later >> >> This is free software: you are free to change and redistribute it. >> There is NO WARRANTY, to the extent permitted by law. Type "show copying" >> and "show warranty" for details. >> This GDB was configured as "armv7l-unknown-linux-gnueabi". >> Type "show configuration" for configuration details. >> For bug reporting instructions, please see: >> . >> Find the GDB manual and other documentation resources online at: >> . >> For help, type "help". >> Type "apropos word" to search for commands related to "word"... >> Reading symbols from make-4.1...done. >> (gdb) run --version >> Starting program: /tmp/build/make-4.1/make-4.1 --version >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x0002c3a0 in strlen (s=, s@entry=0x0) at >> src/string/strlen.c:15 >> 15 for (w = (const void *)s; !HASZERO(*w); w++); >> (gdb) > > Same here. > > Does the problem also happen with make 4.2? Alpine Linux is using make > 4.2.1 I think and I haven't heard of such a problem from them. > > Rich >