From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/13903 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Szabolcs Nagy Newsgroups: gmane.linux.lib.musl.general Subject: Re: Asterisk 16 segmentation fault Date: Thu, 28 Feb 2019 22:19:02 +0100 Message-ID: <20190228211901.GJ21289@port70.net> References: <20190228202751.GB31965@darth.lan> Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="93299"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mutt/1.10.1 (2018-07-13) Cc: Sebastian Kemper To: musl@lists.openwall.com Original-X-From: musl-return-13919-gllmg-musl=m.gmane.org@lists.openwall.com Thu Feb 28 22:19:19 2019 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.89) (envelope-from ) id 1gzT5K-000OB8-5b for gllmg-musl@m.gmane.org; Thu, 28 Feb 2019 22:19:18 +0100 Original-Received: (qmail 22244 invoked by uid 550); 28 Feb 2019 21:19:14 -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 22223 invoked from network); 28 Feb 2019 21:19:14 -0000 Mail-Followup-To: musl@lists.openwall.com, Sebastian Kemper Content-Disposition: inline In-Reply-To: <20190228202751.GB31965@darth.lan> Xref: news.gmane.org gmane.linux.lib.musl.general:13903 Archived-At: * Sebastian Kemper [2019-02-28 21:27:51 +0100]: > I'm not a programmer so I have problems making sense of this. So I'm > hoping that maybe one of you can shine a light. it means dlerror() returned 0 and ast_strdupa calls strlen on this return value which segfaults as expected. it is entirely valid for dlerror() to return 0 if there was no error. did the dlopen("res_pjproject.so", flags) call succeed? i.e. mod->lib != 0 ?. e.g. the segfault can be avoided by - const char *dlerror_msg = ast_strdupa(dlerror()); + const char *dlerror_msg = dlerror(); dlerror_msg = ast_strdupa(dlerror_msg ? dlerror_msg : ""); but we would need to know what this code is trying to do (and how it worked before) for a proper fix. > > I set a break point in the mentioned file, line 952. Then I stepped > forward. > > (gdb) > > Thread 1 "asterisk" hit Breakpoint 1, load_dlopen (resource_in=0x77d8f52b "D\350\240e", resource_in@entry=0x5fa910 "res_pjproject.so", so_ext=0x0, > so_ext@entry=0x53b91c "", filename=0x5fa910 "res_pjproject.so", filename@entry=0x7fff7a04 "/usr/lib/asterisk/modules/res_pjproject.so", flags=796226418, > flags@entry=258, suppress_logging=suppress_logging@entry=0) at loader.c:952 > 952 if (resource_being_loaded) { > (gdb) > 951 mod->lib = dlopen(filename, flags); > (gdb) > 952 if (resource_being_loaded) { > (gdb) > 955 const char *dlerror_msg = ast_strdupa(dlerror()); > (gdb) > > Thread 1 "asterisk" received signal SIGSEGV, Segmentation fault. > strlen (s=0x0, s@entry=0x48d79d "\t\360\"\223\f\234\200\353\216#\005\032\240z\364e") at src/string/strlen.c:17 > 17 for (w = (const void *)s; !HASZERO(*w); w++); > (gdb) bt > #0 strlen (s=0x0, s@entry=0x48d79d "\t\360\"\223\f\234\200\353\216#\005\032\240z\364e") at src/string/strlen.c:17 > #1 0x0048d5db in load_dlopen (resource_in=0x77d8f52b "D\350\240e", resource_in@entry=0x5fa910 "res_pjproject.so", so_ext=0x0, > so_ext@entry=0x53b91c "", filename=0x5fa910 "res_pjproject.so", filename@entry=0x7fff7a04 "/usr/lib/asterisk/modules/res_pjproject.so", flags=796226418, > flags@entry=258, suppress_logging=suppress_logging@entry=0) at loader.c:955 > #2 0x0048d79d in load_dynamic_module (resource_in=resource_in@entry=0x5fa910 "res_pjproject.so", suppress_logging=suppress_logging@entry=1) at loader.c:1039 > #3 0x0048eea3 in load_resource (resource_name=0x5fa910 "res_pjproject.so", suppress_logging=suppress_logging@entry=1, > module_priorities=module_priorities@entry=0x7fff8c24, required=0, preload=0) at loader.c:1635 > #4 0x0048f5e1 in load_resource_list (mod_count=, load_order=0x7fff8c1c) at loader.c:1984 > #5 load_modules () at loader.c:2232 > #6 0x0042c99d in asterisk_daemon (isroot=, rungroup=, runuser=) at asterisk.c:4146 > #7 main (argc=, argv=) at asterisk.c:3918 > (gdb) > > Any help appreciated! > > Kind regards, > Seb