View previous topic :: View next topic |
Author |
Message |
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Sun Apr 19, 2009 9:00 pm Post subject: miniupnpd 20090214 segfaults |
|
|
When I start miniupnpd, it segfaults.
Here is the output of an strace:
Code: |
execve("/usr/sbin/miniupnpd", ["miniupnpd", "-d", "-f", "/etc/miniupnpd/miniupnpd.conf"], [/* 32 vars */]) = 0
brk(0) = 0x876e000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=22825, ...}) = 0
mmap2(NULL, 22825, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f5f000
close(3) = 0
open("/usr/lib/libiptc.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\32\0\0004\0\0\0004"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=54556, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f5e000
mmap2(NULL, 57488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f4f000
mmap2(0xb7f5c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb7f5c000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0ph\1\0004\0\0\0\244"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1351964, ...}) = 0
mmap2(NULL, 1357424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e03000
mmap2(0xb7f49000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146) = 0xb7f49000
mmap2(0xb7f4c000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f4c000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e02000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e026c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7f49000, 8192, PROT_READ) = 0
mprotect(0xb7f5c000, 4096, PROT_READ) = 0
mprotect(0x8054000, 4096, PROT_READ) = 0
mprotect(0xb7f83000, 4096, PROT_READ) = 0
munmap(0xb7f5f000, 22825) = 0
brk(0) = 0x876e000
brk(0x878f000) = 0x878f000
open("/etc/miniupnpd/miniupnpd.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2889, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f64000
read(3, "# WAN network interface\n#ext_ifna"..., 4096) = 2889
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7f64000, 4096) = 0
getpid() = 30200
open("/var/run/miniupnpd.pid", O_RDONLY) = -1 ENOENT (No such file or directory)
time(NULL) = 1240174554
open("/proc/uptime", O_RDONLY) = 3
read(3, "81355.54 0.00\n"..., 63) = 14
time(NULL) = 1240174554
open("/etc/localtime", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f64000
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0\0"..., 4096) = 118
_llseek(4, -6, [112], SEEK_CUR) = 0
read(4, "\nGMT0\n"..., 4096) = 6
close(4) = 0
munmap(0xb7f64000, 4096) = 0
writev(2, [{"miniupnpd[30200]: system uptime i"..., 48}, {"\n"..., 1}], 2miniupnpd[30200]: system uptime is 81355 seconds
) = 49
socket(PF_FILE, 0x80002 /* SOCK_??? */, 0) = 4
connect(4, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 EPROTOTYPE (Protocol wrong type for socket)
close(4) = 0
socket(PF_FILE, 0x80001 /* SOCK_??? */, 0) = 4
connect(4, {sa_family=AF_FILE, path="/dev/log"...}, 110) = 0
send(4, "<30>Apr 19 20:55:54 miniupnpd[302"..., 69, MSG_NOSIGNAL) = 69
close(3) = 0
rt_sigaction(SIGTERM, {0x80497fd, [], 0}, NULL, 8) = 0
rt_sigaction(SIGINT, {0x80497fd, [], 0}, NULL, 8) = 0
rt_sigaction(SIGPIPE, {0x1, [PIPE], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
open("/var/run/miniupnpd.pid", O_WRONLY|O_CREAT|O_EXCL, 0666) = 3
write(3, "30200\n"..., 6) = 6
close(3) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(3, 6) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(44069), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
time(NULL) = 1240174554
writev(2, [{"miniupnpd[30200]: HTTP listening "..., 46}, {"\n"..., 1}], 2miniupnpd[30200]: HTTP listening on port 44069
) = 47
send(4, "<29>Apr 19 20:55:54 miniupnpd[302"..., 67, MSG_NOSIGNAL) = 67
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
bind(5, {sa_family=AF_INET, sin_port=htons(1900), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(5, SOL_IP, IP_ADD_MEMBERSHIP, "\357\377\377\372\300\250\1\1"..., 8) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 6
setsockopt(6, SOL_IP, IP_MULTICAST_LOOP, "\0"..., 1) = 0
setsockopt(6, SOL_IP, IP_MULTICAST_IF, [16885952], 4) = 0
setsockopt(6, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
bind(6, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.1")}, 16) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
bind(7, {sa_family=AF_INET, sin_port=htons(5351), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
time(NULL) = 1240174554
writev(2, [{"miniupnpd[30200]: Listening for N"..., 60}, {"\n"..., 1}], 2miniupnpd[30200]: Listening for NAT-PMP traffic on port 5351
) = 61
send(4, "<29>Apr 19 20:55:54 miniupnpd[302"..., 81, MSG_NOSIGNAL) = 81
socket(PF_INET, SOCK_RAW, IPPROTO_RAW) = 8
getsockopt(8, SOL_IP, 0x40 /* IP_??? */, "nat\0\223\232\257\21\24gG\300\360\247\0\0\5\0\0\0\5\0\0\0\270fG\300!\216\21\300\31"..., [84]) = 0
getsockopt(8, SOL_IP, 0x41 /* IP_??? */, "nat\0p\301\364\267\270\347v\10\270\347v\10\270\347v\10\10\350v\10\270\7w\10\0\0\0\0\230"..., [2748]) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
|
any ideas of what is wrong? |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Mon Apr 20, 2009 10:10 pm Post subject: |
|
|
please recompile with -g flag and run withing gdb :
Code: | gdb ./miniupnpd
run -d -f /etc/miniupnpd/miniupnpd.conf |
once it crashed, use "bt" to print the stackframes.
It will help me localize the problem.
By the way, what is your exact configuration ? _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Tue Apr 21, 2009 9:01 am Post subject: |
|
|
Here is the output from gdb:
Code: |
GNU gdb 6.8
Copyright (C) 2008 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 "i686-pc-linux-gnu"...
(gdb) run -d -f /etc/miniupnpd/miniupnpd.conf
Starting program: /usr/sbin/miniupnpd -d -f /etc/miniupnpd/miniupnpd.conf
miniupnpd[7428]: system uptime is 211159 seconds
miniupnpd[7428]: Unable to open pidfile for writing /var/run/miniupnpd.pid: File exists
miniupnpd[7428]: HTTP listening on port 33390
miniupnpd[7428]: Listening for NAT-PMP traffic on port 5351
Program received signal SIGSEGV, Segmentation fault.
0xb7f9e7f0 in iptc_first_rule () from /usr/lib/libiptc.so.0
(gdb) bt
#0 0xb7f9e7f0 in iptc_first_rule () from /usr/lib/libiptc.so.0
#1 0x00000001 in ?? ()
#2 0xb7f98b1c in ?? () from /usr/lib/libiptc.so.0
#3 0x00000000 in ?? ()
|
And here is my miniupnpd.conf :
Code: |
# WAN network interface
#ext_ifname=eth0
ext_ifname=wan
# if the WAN interface has several IP addresses, you
# can specify the one to use below
#ext_ip=
# LAN network interfaces IPs / networks
# there can be multiple listening ips for SSDP traffic.
# should be under the form nnn.nnn.nnn.nnn/nn
# HTTP is available on all interfaces
#listening_ip=192.168.0.1/24
listening_ip=192.168.1.1/24
#listening_ip=
# port for HTTP (descriptions and SOAP) traffic. set 0 for autoselect.
port=0
# path to the unix socket used to communicate with MiniSSDPd
# If running, MiniSSDPd will manage M-SEARCH answering.
# default is /var/run/minissdpd.sock
#minissdpdsocket=/var/run/minissdpd.sock
# enable NAT-PMP support (default is no)
enable_natpmp=yes
# enable UPNP support (default is yes)
enable_upnp=yes
# chain names for netfilter (not used for pf or ipf).
# default is MINIUPNPD for both
#upnp_forward_chain=forwardUPnP
#upnp_nat_chain=UPnP
# lease file location
#lease_file=/var/lib/miniupnpd/upnp.leases
# bitrates reported by daemon in bits per second
bitrate_up=1000000
bitrate_down=10000000
# "secure" mode : when enabled, UPnP client are allowed to add mappings only
# to their IP.
secure_mode=yes
#secure_mode=no
# default presentation url is http address on port 80
#presentation_url=http://www.mylan/index.php
# report system uptime instead of daemon uptime
system_uptime=yes
# notify interval in seconds. default is 30 seconds.
#notify_interval=240
notify_interval=60
# unused rules cleaning.
# never remove any rule before this threshold for the number
# of redirections is exceeded. default to 20
#clean_ruleset_threshold=10
# clean process work interval in seconds. default to 0 (disabled).
# a 600 seconds (10 minutes) interval makes sense
clean_ruleset_interval=600
# log packets in pf
#packet_log=no
# ALTQ queue in pf
# filter rules must be used for this to be used.
# compile with PF_ENABLE_FILTER_RULES (see config.h file)
#queue=queue_name1
# tag name in pf
#tag=tag_name1
# make filter rules in pf quick or not. default is yes
# active when compiled with PF_ENABLE_FILTER_RULES (see config.h file)
#quickrules=no
# uuid : generate your own with "make genuuid"
uuid=8701bc85-5eda-4353-aa9d-76224e51f940
# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1
# UPnP permission rules
# (allow|deny) (external port range) ip/mask (internal port range)
# A port range is <min port>-<max port> or <port> if there is only
# one port in the range.
# ip/mask format must be nn.nn.nn.nn/nn
# it is advised to only allow redirection of port above 1024
# and to finish the rule set with "deny 0-65535 0.0.0.0/0 0-65535"
#allow 1024-65535 192.168.0.0/24 1024-65535
allow 1024-65535 192.168.1.0/24 1024-65535
#allow 1024-65535 192.168.0.0/23 22
#allow 12345 192.168.7.113/32 54321
deny 0-65535 0.0.0.0/0 0-65535
|
Anything else you need? |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Wed Apr 22, 2009 10:34 am Post subject: |
|
|
It crashes in libiptc... I guess I have to do some debuging for the version of iptables you compiled with. _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Wed Apr 22, 2009 11:00 am Post subject: |
|
|
I'll try and compile iptables with debug symbols, and debug it again, and post a new stacktrace.
Would that be of any help? |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Wed Apr 22, 2009 11:44 am Post subject: |
|
|
I dont know.
Have you checked that the iptable version is matching netfilter code in kernel ? _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Wed Apr 22, 2009 11:53 am Post subject: |
|
|
It should, the kernel is 2.6.29.1 and iptables is 1.4.3.2 |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Wed Apr 22, 2009 11:58 am Post subject: |
|
|
one more question : are you sure /usr/sbin/miniupnpd is not the striped executable ? _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Wed Apr 22, 2009 12:08 pm Post subject: |
|
|
Well, I edited the makefile and removed the strip part, and added the -g flag to the cflags, and rebuilt it.
So it shouldn't have been stripped. |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Wed Apr 22, 2009 1:50 pm Post subject: |
|
|
GurliGebis wrote: | Well, I edited the makefile and removed the strip part, and added the -g flag to the cflags, and rebuilt it.
So it shouldn't have been stripped. |
I was just wondering why the backtrace of stack frames was full of ?? _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Thu Apr 23, 2009 10:48 am Post subject: |
|
|
I tried compiling both iptables and miniupnpd with -g3 -ggdb , and that seems to give a more usefull stacktrace:
Code: |
GNU gdb 6.8
Copyright (C) 2008 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 "i686-pc-linux-gnu"...
(gdb) run -d -f /etc/miniupnpd/miniupnpd.conf
Starting program: /usr/sbin/miniupnpd -d -f /etc/miniupnpd/miniupnpd.conf
miniupnpd[23482]: system uptime is 65413 seconds
miniupnpd[23482]: Unable to open pidfile for writing /var/run/miniupnpd.pid: File exists
miniupnpd[23482]: HTTP listening on port 38756
miniupnpd[23482]: Listening for NAT-PMP traffic on port 5351
Program received signal SIGSEGV, Segmentation fault.
iptc_first_rule (chain=0x8050ad3 "MINIUPNPD", handle=0xbf8e0508) at libiptc/libiptc.c:733
733 libiptc/libiptc.c: No such file or directory.
in libiptc/libiptc.c
(gdb) bt
#0 iptc_first_rule (chain=0x8050ad3 "MINIUPNPD", handle=0xbf8e0508) at libiptc/libiptc.c:733
#1 0x0804f684 in get_redirect_rule_by_index (index=0, ifname=0x0, eport=0xbf8e05a8, iaddr=0x0, iaddrlen=0, iport=0xbf8e05aa, proto=0xbf8e05a4, desc=0xbf8e0560 "��\\\t<", desclen=64, packets=0x0, bytes=0x0)
at netfilter/iptcrdr.c:250
#2 0x0804e2e5 in ScanNATPMPforExpiration () at natpmp.c:261
#3 0x0804a440 in main (argc=4, argv=0xbf8e0884) at miniupnpd.c:877
|
Is this better? |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
|
Back to top |
|
|
GurliGebis
Joined: 16 Apr 2009 Posts: 35
|
Posted: Thu Apr 23, 2009 12:17 pm Post subject: |
|
|
I got 1.3 installing (had to mess with the Makefile, so it defines IPTABLES_143 without IPTABLESPATH being defined.
It should be fine to define IPTABLES_143 when I know that the user has iptables 1.4.3 or newer installed? |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Sat Apr 25, 2009 10:45 pm Post subject: |
|
|
GurliGebis wrote: | I got 1.3 installing (had to mess with the Makefile, so it defines IPTABLES_143 without IPTABLESPATH being defined.
It should be fine to define IPTABLES_143 when I know that the user has iptables 1.4.3 or newer installed? |
yep. it is for adapting to libiptc API changes in this version _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1589
|
Posted: Sat Apr 25, 2009 10:51 pm Post subject: |
|
|
GurliGebis wrote: |
Code: |
[...]
(gdb) run -d -f /etc/miniupnpd/miniupnpd.conf
Starting program: /usr/sbin/miniupnpd -d -f /etc/miniupnpd/miniupnpd.conf
miniupnpd[23482]: system uptime is 65413 seconds
miniupnpd[23482]: Unable to open pidfile for writing /var/run/miniupnpd.pid: File exists
miniupnpd[23482]: HTTP listening on port 38756
miniupnpd[23482]: Listening for NAT-PMP traffic on port 5351
Program received signal SIGSEGV, Segmentation fault.
iptc_first_rule (chain=0x8050ad3 "MINIUPNPD", handle=0xbf8e0508) at libiptc/libiptc.c:733
733 libiptc/libiptc.c: No such file or directory.
in libiptc/libiptc.c
(gdb) bt
#0 iptc_first_rule (chain=0x8050ad3 "MINIUPNPD", handle=0xbf8e0508) at libiptc/libiptc.c:733
#1 0x0804f684 in get_redirect_rule_by_index (index=0, ifname=0x0, eport=0xbf8e05a8, iaddr=0x0, iaddrlen=0, iport=0xbf8e05aa, proto=0xbf8e05a4, desc=0xbf8e0560 ""��\\\t<", desclen=64, packets=0x0, bytes=0x0)
at netfilter/iptcrdr.c:250
#2 0x0804e2e5 in ScanNATPMPforExpiration () at natpmp.c:261
#3 0x0804a440 in main (argc=4, argv=0xbf8e0884) at miniupnpd.c:877
|
|
That is strange, netfilter/iptcrdr.c:250 is the call to iptc_init("nat");, iptc_first_rule() is called next.
libiptc/libiptc.c:733 points to iptcc_find_label() _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
© 2007 Thomas Bernard, author of MiniUPNP.
|