Wireshark-bugs: [Wireshark-bugs] [Bug 2786] New: Cannot use "capture info" dialog, wireshark get

Date: Fri, 8 Aug 2008 22:44:02 -0700 (PDT)
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.