segv in argus with latest pf_fring enabled lipcap

Will Metcalf william.metcalf at gmail.com
Mon Jul 7 11:07:21 EDT 2008


I updated to the latest version of pf_ring enabled libpcap, which
implements the ability to set a per process bucket len that is based
on caplen from libpcap.  When compiling Argus against this lib it
segv's after logging a couple of flows Anybody have any ideas?
Regards,

Will



gdb /usr/sbin/argus core.4729
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
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 "i386-redhat-linux-gnu"...Using host
libthread_db library "/lib/libthread_db.so.1".


warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libpcap.so.0.9.7...done.
Loaded symbols for /usr/lib/libpcap.so.0.9.7
Reading symbols from /usr/lib/libpfring.so...done.
Loaded symbols for /usr/lib/libpfring.so
Reading symbols from /lib/libpthread.so.0...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /usr/lib/libwrap.so.0...done.
Loaded symbols for /usr/lib/libwrap.so.0
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Core was generated by `/usr/sbin/argus -d -J -w
/var/log/argusoutput.ra -i eth0'.
Program terminated with signal 11, Segmentation fault.
#0  ArgusCreateIPv4Flow (model=0x8bde008, ip=0x0) at ArgusModeler.c:3627
3627       unsigned char *nxtHdr = (unsigned char *)((char *)ip +
(ip->ip_hl << 2));
(gdb) bt full
#0  ArgusCreateIPv4Flow (model=0x8bde008, ip=0x0) at ArgusModeler.c:3627
       nxtHdr = <value optimized out>
       sport = <value optimized out>
       dport = <value optimized out>
       proto = <value optimized out>
       len = <value optimized out>
       hlen = <value optimized out>
       ArgusOptionLen = <value optimized out>
#1  0x08053273 in ArgusProcessPacket (src=0xb7ea8008, p=0x8bdf2f0
"������", length=251, tvp=0xbffd8344, type=-1) at ArgusModeler.c:1257
       tsbuf = {tv_sec = 1953653108, tv_nsec = -1073904964}
       tdiff = 4294967392
       rtdiff = <value optimized out>
       tvalue = <value optimized out>
       model = (struct ArgusModelerStruct *) 0x8bde008
       flow = <value optimized out>
       nflow = <value optimized out>
       ptr = 0x8bdf2f0 "������"
       value = 0
       retn = <value optimized out>
#2  0x080554de in ArgusEtherPacket (user=0xb7ea8008 "", h=0x8bdf2c4,
p=0x8bdf2f0 "������") at ArgusSource.c:716
       caplen = 96
       length = 251
       tvpbuf = {tv_sec = 1215442055, tv_usec = 648975}
       statbuf = {st_dev = 65522, __pad1 = 0, __st_ino = 0, st_mode =
0, st_nlink = 0, st_uid = 469434368, st_gid = 4327000, st_rdev =
18344976773382976, __pad2 = 2064, st_size = 4294967296,
 st_blksize = 107793408, st_blocks = 4147592, st_atim = {tv_sec = 0,
tv_nsec = -1073904808}, st_mtim = {tv_sec = 4003570, tv_nsec =
146665712}, st_ctim = {tv_sec = 1, tv_nsec = 4001120},
 st_ino = 13834360246576710476}
#3  0x08056f38 in ArgusGetPackets (src=0xb7ea8008) at ArgusSource.c:2139
       pkt_data = (const u_char *) 0x8bdf2f0 "������"
       pkts = 840
       cnt = 1
       header = (struct pcap_pkthdr *) 0x8bdf2c4
       retn = <value optimized out>
       ArgusReadMask = {__fds_bits = {0 <repeats 32 times>}}
       ArgusWriteMask = {__fds_bits = {0 <repeats 32 times>}}
       ArgusExceptMask = {__fds_bits = {0 <repeats 32 times>}}
       tmp = <value optimized out>
       i = 0
       width = 1
       noerror = 1
       fd = <value optimized out>
       found = 1
       up = 1
       notselectable = 0
       fds = {1, -1, -1, -1, -1}
       wait = {tv_sec = 0, tv_usec = 0}
#4  0x0804c422 in main (argc=7, argv=0xbffd8ab4) at argus.c:530
       eptr = 0x7 <Address 0x7 out of bounds>
       ptr = 0xb7f3c708 "�\aB"
       commandlinew = 1
       doconf = 0
       i = 7
       pid = <value optimized out>
       tmparg = <value optimized out>
       filter = <value optimized out>
---Type <return> to continue, or q <return> to quit---
       statbuf = {st_dev = 64768, __pad1 = 0, __st_ino = 43156691,
st_mode = 33188, st_nlink = 1, st_uid = 0, st_gid = 0, st_rdev = 0,
__pad2 = 0, st_size = 12807, st_blksize = 4096, st_blocks = 40,
 st_atim = {tv_sec = 1215441879, tv_nsec = 0}, st_mtim = {tv_sec =
1215122542, tv_nsec = 0}, st_ctim = {tv_sec = 1215122628, tv_nsec =
0}, st_ino = 43156691}
       op = <value optimized out>
       commandlinei = 1
       path = "/etc/argus.conf", '\0' <repeats 8176 times>
#5  0x00438dec in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#6  0x0804a4b1 in _start ()
No symbol table info available.
(gdb)


More information about the argus mailing list