Ethereal-dev: [Ethereal-dev] Tethereal ring buffer capture woes
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Chris Timmons <cwt@xxxxxxxxxxxxxxxx>
Date: Wed, 26 May 2004 10:52:31 -0700 (PDT)
I'm running 0.10.3 on FreeBSD 4.9 and can see the following problem:
When tethereal is invoked in ring buffer capture mode the program will
abort via an assertion at line 1942 of wiretap/libpcap.c in
libpcap_dump(). See below for some relevent gdb output.
All sorts of different filesize and duration paremeters will reproduce the
problem; for example:
tethereal -w c.dat -a filesize:5000 -b 128:900 -s 1500 -i fxp1
I haven't tried 0.10.4 yet, but the diffs for tethereal and the wiretap
package don't suggest many changes from what I am running.
Any ideas?
-Chris
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[ ethereal 0.10.3 sources ]
Core was generated by `tethereal'.
Program terminated with signal 6, Abort trap.
.
.
.
(gdb) bt
#0 0x28bf3fc0 in kill () from /usr/lib/libc.so.4
#1 0x28c35882 in abort () from /usr/lib/libc.so.4
#2 0x28b523be in g_logv () from /usr/local/lib/libglib12.so.3
#3 0x28b52475 in g_log () from /usr/local/lib/libglib12.so.3
#4 0x2809073c in libpcap_dump (wdh=0x8152b00, phdr=0xbfbef07c,
pseudo_header=0xbfbeefec, pd=0x8194012 "", err=0xbfbeef54)
at libpcap.c:1942
#5 0x2808b3e7 in wtap_dump (wdh=0x8152b00, phdr=0xbfbef07c,
pseudo_header=0xbfbeefec, pd=0x8194012 "", err=0xbfbeef54)
at file_access.c:674
#6 0x8059abe in wtap_dispatch_cb_write (user=0xbfbeefe0 "",
phdr=0xbfbef07c, offset=0, pseudo_header=0xbfbeefec, buf=0x8194012 "")
at tethereal.c:2471
#7 0x8059469 in capture_pcap_cb (user=0x8065760 "\001", phdr=0x8194000,
pd=0x8194012 "") at tethereal.c:2111
#8 0x28b8bc92 in pcap_read_bpf (p=0x811aa00, cnt=1, callback=0x80593f4
<capture_pcap_cb>, user=0x8065760 "\001")
at ./pcap-bpf.c:276
#9 0x28b8846c in pcap_dispatch (p=0x811aa00, cnt=1, callback=0x80593f4
<capture_pcap_cb>, user=0x8065760 "\001") at ./pcap.c:73
#10 0x8058ff2 in capture (out_file_type=2) at tethereal.c:1942
#11 0x805898f in main (argc=15, argv=0xbfbff970) at tethereal.c:1594
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
It looks as though the (struct wdh *) which wtap_dump() passes to
libpcap_dump() points to a structure with a corrupted wdh->file_type
value. I'm guessing we would want to see WTAP_FILE_PCAP (2) in the
file_type field since we're saving in pcap format. What we have instead:
(gdb) up
#5 0x2808b3e7 in wtap_dump (wdh=0x8152b00, phdr=0xbfbef07c,
pseudo_header=0xbfbeefec, pd=0x8194012 "", err=0xbfbeef54)
at file_access.c:674
674 return (wdh->subtype_write)(wdh, phdr, pseudo_header, pd,
err);
(gdb) print wdh
$1 = (wtap_dumper *) 0x8152b00
(gdb) print *wdh
$2 = {fh = 0x0, file_type = 136069120, snaplen = 393280, encap = 4194367,
bytes_dumped = -2, dump = {opaque = 0xffffffff,
ngsniffer = 0xffffffff, netmon = 0xffffffff, netxray = 0xffffffff,
_5views = 0xffffffff, niobserver = 0xffffffff},
subtype_write = 0x280905f4 <libpcap_dump>, subtype_close = 0}
When libpcap_dump() looks at wdh->file_type and doesn't find any known
values, it triggers the assert at line #1942.
I'm wondering if there is some sort of race condition occuring between the
file saving operation being attempted in wtap_dump() and the ongoing
packet capturing being done with the pcap library itself?
- Prev by Date: Re: subversion (was: Re: [Ethereal-dev] ethereal man page)
- Next by Date: Re: [Ethereal-dev] Advanced filtering
- Previous by thread: Re: [Ethereal-dev] Advanced filtering
- Next by thread: [Ethereal-dev] application path of ethereal in windows registry
- Index(es):





