Ethereal-dev: Re: [Ethereal-dev] Dumpcap: Coredump when disconnecting Ethernet during capture

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Joerg Mayer <jmayer@xxxxxxxxx>
Date: Tue, 6 Dec 2005 09:53:07 +0100
On Mon, Dec 05, 2005 at 06:26:07PM +0100, Ulf Lamping wrote:
> > I just managed to dump core with dumpcap.
> > While I was capturing I removed the Ethernet plug. After 10-20 seconds,
> > Ethereal crashed and dumped core:
> 
> Hmmm, Ethereal or dumpcap crashed?!? dumpcap isn't used in Ethereal today, so what do you mean exactly here?

Well, since about two days (or whenever I submitted the Linux compile
fix for dumpcap) I'm using a dumpcap enabled Ethereal build.
It was the version that was current at the time of the posting.
To me it looks that Ethereal crashed. I cannot be sure that dumpcap
doesn't crash too, but the following stuff happens:
I start ethereal.
Start capture on eth0
Wait for the first few frames to appear.
Unplug the Ethernet jack.
Wait for a while (less than a minute).
Ethereal itself crashes.

09:27:24          Err  file capture.c: line 368
(capture_input_error_message): assertion failed: (capture_opts->state ==
CAPTURE_PREPARING)
Aborted (core dumped)

> > The core did not provide any usable info.
> I've added this assert not long ago. Could you please try if it also happens with current Ethereal? I've maybe introduced a new bug which should be obviously fixed.

I've just retried with revision 16696. Still happens, but this time I
got a useable core:

(gdb) bt
#0  0xffffe410 in ?? ()
#1  0xbfffd5c8 in ?? ()
#2  0x00000006 in ?? ()
#3  0x00005d86 in ?? ()
#4  0x416112c1 in raise () from /lib/tls/libc.so.6
#5  0x41612b75 in abort () from /lib/tls/libc.so.6
#6  0x413f9be5 in g_logv () from /opt/gnome/lib/libglib-2.0.so.0
#7  0x413f9c22 in g_log () from /opt/gnome/lib/libglib-2.0.so.0
#8  0x413f9ca1 in g_assert_warning () from
/opt/gnome/lib/libglib-2.0.so.0
#9  0x0806680b in capture_input_error_message ()
#10 0x080694bd in sync_pipe_input_cb ()
#11 0x0807d6f1 in pipe_input_cb ()
#12 0x41274cfb in gdk_input_add () from
/opt/gnome/lib/libgdk-x11-2.0.so.0
#13 0x41417b6f in g_io_channel_unix_get_fd () from
/opt/gnome/lib/libglib-2.0.so.0
#14 0x413f0037 in g_main_context_dispatch () from
/opt/gnome/lib/libglib-2.0.so.0
#15 0x413f2402 in g_main_context_acquire () from
/opt/gnome/lib/libglib-2.0.so.0
#16 0x413f3457 in g_main_loop_run () from
/opt/gnome/lib/libglib-2.0.so.0
#17 0x410abbe3 in gtk_main () from /opt/gnome/lib/libgtk-x11-2.0.so.0
#18 0x08081e7b in main ()

> BTW: Which OS?

Suse Linux 9.3 i386

> However, dumpcap in it's current state isn't ready for prime time. 

No problem - I'd just like to test it as much as possible. If it
doesn't work, I can always recompile.

> I'm currently looking how to combine code from ethereal and tethereal, as there's a lot of duplicated (slightly changed) capture related code. I don't want to duplicate it another time in dumpcap.

Full ACK.

 Ciao
    Joerg
-- 
Joerg Mayer                                           <jmayer@xxxxxxxxx>
We are stuck with technology when what we really want is just stuff that
works. Some say that should read Microsoft instead of technology.