[sr-dev] [kamailio/kamailio] kamailio crashs at startup in musl enviroment (Issue #3281)

giupand notifications at github.com
Wed Nov 16 11:21:46 CET 2022


<!--
Kamailio Project uses GitHub Issues only for bugs in the code or feature requests. Please use this template only for bug reports.

If you have questions about using Kamailio or related to its configuration file, ask on sr-users mailing list:

  * http://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

If you have questions about developing extensions to Kamailio or its existing C code, ask on sr-dev mailing list:

  * http://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Please try to fill this template as much as possible for any issue. It helps the developers to troubleshoot the issue.

If there is no content to be filled in a section, the entire section can be removed.

You can delete the comments from the template sections when filling.

You can delete next line and everything above before submitting (it is a comment).
-->

### Description

<!--
Explain what you did, what you expected to happen, and what actually happened.
-->
I'm testing kamailio v 5.6.1 in an alpine linux docker with musl libc (x86_64) Version 1.2.3 and I see a kamailio crash just with version option (kamailio --version).
The crash occur if I haven't localhost resolution in /etc/hosts. This isn't a canonical situation, but crash occur!
Running kamailio with gdb I see that the problem is in freeaddrinfo call in log_init function.

#### Reproduction

<!--
If the issue can be reproduced, describe how it can be done.
-->
cat /etc/hosts 
#127.0.0.1      localhost
#::1    localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#172.30.0.3     bd9375eeb5af
#2001:db8:1111:2222:0:242:ac1e:3        bd9375eeb5af
/ # 
/ # kamailio --version
Segmentation fault (core dumped)

#### Debugging Data

<!--
If you got a core dump, use gdb to extract troubleshooting data - full backtrace,
local variables and the list of the code at the issue location.

  gdb /path/to/kamailio /path/to/corefile
  bt full
  info locals
  list

If you are familiar with gdb, feel free to attach more of what you consider to
be relevant.
-->

```
# gdb --args kamailio --version
GNU gdb (GDB) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "x86_64-alpine-linux-musl".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from kamailio...
(gdb) run
Starting program: /usr/local/sbin/kamailio --version

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7f9f5ed in freeaddrinfo () from /lib/ld-musl-x86_64.so.1
(gdb) bt
#0  0x00007ffff7f9f5ed in freeaddrinfo () from /lib/ld-musl-x86_64.so.1
#1  0x000055555559087d in calc_proc_no () at main.c:1976
#2  0x00007fffffffe8d0 in ?? ()
#3  0x00007fffffffed58 in ?? ()
#4  0x000055555561b143 in log_init () at core/dprint.c:483
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

```
### Possible Solutions

<!--
If you found a solution or workaround for the issue, describe it. Ideally, provide a pull request with a fix.
-->
I suppose that log_init function needs a check for info pointer. If info pointer is not NULL, then call freeaddrinfo. I see similar protections in other points of code.

```
void log_init(void)
{
	struct addrinfo hints;
	struct addrinfo *info = NULL;
	int gai_result;
	char hostname[1024];

	hostname[1023] = '\0';
	gethostname (hostname, 1023);

	memset (&hints, 0, sizeof (hints));
	hints.ai_family = AF_UNSPEC;    /*either IPV4 or IPV6 */
	hints.ai_socktype = SOCK_STREAM;
	hints.ai_flags = AI_CANONNAME;

	if ((gai_result = getaddrinfo (hostname, 0, &hints, &info)) != 0) {
		log_fqdn = "?";
	} else if (info == NULL) {
		log_fqdn = "?";
	} else {
		log_fqdn = strdup (info->ai_canonname);
	}
	
	if(info) // add pointer validity
	   freeaddrinfo (info);

	dprint_init_colors();
}
```


### Additional Information

  * **Kamailio Version** - output of `kamailio -v`

```
version: kamailio 5.6.2 (x86_64/linux) 54a9c1
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 54a9c1 
compiled on 09:26:43 Nov 15 2022 with gcc 9.3.0
```


-- 
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3281
You are receiving this because you are subscribed to this thread.

Message ID: <kamailio/kamailio/issues/3281 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-dev/attachments/20221116/36af7611/attachment-0001.htm>


More information about the sr-dev mailing list