[Dnsmasq-discuss] segfault - Re: No dnsmasq after starting openVPN?!

Arno Wald arno.wald at netcologne.de
Sat Jun 5 21:55:05 BST 2010


On 05.06.2010 19:05, richardvoigt at gmail.com wrote:
> Here's a guess:
>
> Your debian dnsmasq wrapper script is passing multiple --resolv-conf
> options, either on the command-line or via dnsmasq.conf.  Either the

This was an interesting idea. When checking how dnsmasq is executed I 
did see what I did not recognize before, that dnsmasq is not running 
anymore after openvpn is started! (shame on me). So starting openvpn 
does stop dnsmasq?! The strange thing is that I cannot see a message in 
the logs like "exiting on receipt of SIGTERM" that dnsmasq prints out 
when it is stopped regularly.

This is what "ps axu" shows:
/usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r 
/var/run/dnsmasq/resolv.conf -7 
/etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new

The last things dnsmasq prints to the daemon.log when starting openvpn 
is, that it is rereading the file /var/run/dnsmasq/resolv.conf and 
printing the correct DNS servers (two for the internet and the one for 
the VPN).

After restarting dnsmasq I can turn off and on openvpn without any 
problems. dnsmasq keeps running.

stracing the dnsmasq process while starting openvpn the first time shows 
that dnsmasq segfaults:

> strace -p 14478
> Process 14478 attached - interrupt to quit
> select(11, [3 5 6 7 8 9 10], [], [], NULL) = 1 (in [3])
> time(NULL)                              = 1275770961
> stat64("/var/run/dnsmasq/resolv.conf", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0
> fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
> fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\377\2\376\2\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 60
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\377\2\376\2\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, 0) = 60
> fcntl64(3, F_SETFL, O_RDWR)             = 0
> select(11, [3 5 6 7 8 9 10], [], [], NULL) = 1 (in [3])
> time(NULL)                              = 1275770961
> fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
> fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\377\2\376\2\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 60
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\377\2\376\2\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, 0) = 60
> fcntl64(3, F_SETFL, O_RDWR)             = 0
> select(11, [3 5 6 7 8 9 10], [], [], NULL) = 1 (in [3])
> time(NULL)                              = 1275770961
> fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
> fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\377\2\376\2\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 60
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\377\2\376\2\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, 0) = 60
> fcntl64(3, F_SETFL, O_RDWR)             = 0
> select(11, [3 5 6 7 8 9 10], [], [], NULL) = 1 (in [3])
> time(NULL)                              = 1275770961
> fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
> fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\376\2\375\1\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 60
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"<\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\2 \0\0\376\2\375\1\0\0\0\0\10\0\17\0"..., 192}], msg_controllen=0, msg_flags=0}, 0) = 60
> time(NULL)                              = 1275770961
> stat64("/var/run/dnsmasq/resolv.conf", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0
> open("/var/run/dnsmasq/resolv.conf", O_RDONLY|O_LARGEFILE) = 13
> fstat64(13, {st_mode=S_IFREG|0644, st_size=49, ...}) = 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76e5000
> read(13, "nameserver 194.8.194.60\nnameserv"..., 4096) = 49
> read(13, "", 4096)                      = 0
> close(13)                               = 0
> munmap(0xb76e5000, 4096)                = 0
> time(NULL)                              = 1275770961
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
> write(12, "<30>Jun  5 22:49:21 dnsmasq[1447"..., 73) = 73
> sendto(3, "\24\0\0\0\26\0\5\3\7\0\0\0\0\0\0\0\2\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\7\0\0\0\2148\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 192}], msg_controllen=0, msg_flags=MSG_TRUNC}, MSG_PEEK|MSG_TRUNC) = 212
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\7\0\0\0\2148\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 212}], msg_controllen=0, msg_flags=0}, 0) = 212
> socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 13
> ioctl(13, SIOCGIFNAME, {ifr_index=25, ifr_name="ppp0"}) = 0
> ioctl(13, SIOCGIFFLAGS, {ifr_name="ppp0", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP|IFF_MULTICAST}) = 0
> ioctl(13, SIOCGIFMTU, {ifr_name="ppp0", ifr_mtu=1492}) = 0
> close(13)                               = 0
> socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 13
> ioctl(13, SIOCGIFNAME, {ifr_index=26, ifr_name="tun0"}) = 0
> ioctl(13, SIOCGIFFLAGS, {ifr_name="tun0", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP|IFF_MULTICAST}) = 0
> ioctl(13, SIOCGIFMTU, {ifr_name="tun0", ifr_mtu=1500}) = 0
> close(13)                               = 0
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\7\0\0\0\2148\0\0\0\0\0\0\1\0\0\0\10\0\1\0\177\0\0\1"..., 212}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 20
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\7\0\0\0\2148\0\0\0\0\0\0\1\0\0\0\10\0\1\0\177\0\0\1"..., 212}], msg_controllen=0, msg_flags=0}, 0) = 20
> sendto(3, "\24\0\0\0\26\0\5\3\10\0\0\0\0\0\0\0\n\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0\10\0\0\0\2148\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 212}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 192
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0\10\0\0\0\2148\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 212}], msg_controllen=0, msg_flags=0}, 0) = 192
> socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 13
> ioctl(13, SIOCGIFNAME, {ifr_index=3, ifr_name="eth1"}) = 0
> ioctl(13, SIOCGIFFLAGS, {ifr_name="eth1", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0
> ioctl(13, SIOCGIFMTU, {ifr_name="eth1", ifr_mtu=1500}) = 0
> close(13)                               = 0
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\10\0\0\0\2148\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 212}], msg_controllen=0, msg_flags=0}, MSG_PEEK|MSG_TRUNC) = 20
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\10\0\0\0\2148\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 212}], msg_controllen=0, msg_flags=0}, 0) = 20
> time(NULL)                              = 1275770961
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
> write(12, "<30>Jun  5 22:49:21 dnsmasq[1447"..., 70) = 70
> time(NULL)                              = 1275770961
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
> write(12, "<30>Jun  5 22:49:21 dnsmasq[1447"..., 69) = 69
> time(NULL)                              = 1275770961
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
> write(12, "<30>Jun  5 22:49:21 dnsmasq[1447"..., 79) = 79
> time(NULL)                              = 1275770961
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
> write(12, "<30>Jun  5 22:49:21 dnsmasq[1447"..., 83) = 83
> time(NULL)                              = 1275770961
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
> write(12, "<30>Jun  5 22:49:21 dnsmasq[1447"..., 92) = 92
> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> Process 14478 detached

So thank you so far. Your answers brought me a step further. But what to 
do now?

Thanks,
Arno




More information about the Dnsmasq-discuss mailing list