Wireshark-bugs: [Wireshark-bugs] [Bug 2786] New: Cannot use "capture info" dialog, wireshark get
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2786
Summary: Cannot use "capture info" dialog, wireshark gets SIGUSR1
Product: Wireshark
Version: SVN
Platform: PC
OS/Version: Ubuntu
Status: NEW
Severity: Critical
Priority: Medium
Component: Wireshark
AssignedTo: wireshark-bugs@xxxxxxxxxxxxx
ReportedBy: avn@xxxxxxxxxxxxxxx
Alexey Neyman <avn@xxxxxxxxxxxxxxx> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #2139| |review_for_checkin?
Flag| |
Created an attachment (id=2139)
--> (https://bugs.wireshark.org/bugzilla/attachment.cgi?id=2139)
Workaround
Build Information:
wireshark 1.0.99 (SVN Rev 25965)
Copyright 1998-2008 Gerald Combs <gerald@xxxxxxxxxxxxx> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled with GTK+ 2.12.9, with GLib 2.16.4, with libpcap 0.9.8, with libz
1.2.3.3, without POSIX capabilities, without libpcre, without SMI, without
c-ares, without ADNS, without Lua, without GnuTLS, without Gcrypt, without
Kerberos, without PortAudio, without AirPcap.
NOTE: this build doesn't support the "matches" operator for Wireshark filter
syntax.
Running on Linux 2.6.24-19-generic, with libpcap version 0.9.8.
Built using gcc 4.2.3 (Ubuntu 4.2.3-2ubuntu7).
--
I am running Ubuntu Hardy 8.04.1, GCC 4.2.3 on x86_64. Wireshark sources
are top-of-trunk.
When starting a capture, I tried to uncheck the boxes "Update list of
packets in real time" and "Hide capture info dialog". The capture
started fine, but when I hit the "Stop" button, Wireshark exited due to
receipt of SIGUSR1.
If I use the "Stop capture" button on the toolbar, the capture stops and
the list of captured packets is displayed.
I traced the problem to the following fact: the capture_info_delete_cb()
function is called with a "data" pointer which is different from the
one supplied to g_connect(). It so happens that the fork_child member
at that "bad pointer" has a value of 0, and thus SIGUSR1 is delivered
to the current process group instead of dumpcap.
Below, what GDB shows:
<<<<<
Breakpoint 6, capture_info_ui_create (cinfo=0x78be40,
capture_opts=0x79c0e0) at capture_info_dlg.c:269
269 stop_bt = g_object_get_data(G_OBJECT(bbox),
WIRESHARK_STOCK_CAPTURE_STOP);
(gdb) c
Continuing.
Breakpoint 7, capture_info_delete_cb (w=0x196e420, event=0x79c0e0,
data=0x89c960) at capture_info_dlg.c:93
93 capture_info_delete_cb(GtkWidget *w _U_, GdkEvent *event _U_,
gpointer data) {
<<<<
I pinpointed the breakage breakage to somewhere in between revision
25545 and 25577. It cannot be pinpointed any more precisely, as
revisions in between do not build.
The author of most these changes was Guy Harris. One of the
changes was making capture_info_delete_cb() rely on the "gpointer data"
argument instead of using a global pointer, and it broke the capture info
dialog.
I understand that using global pointer is probably a bad practice.
However, I am not familiar with GTK internals to investigate it
further. So, until somebody fixes it "the right way", could the
attached workaround be applied?
--
Configure bugmail: https://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.