wireshark-dev October 2010 archive
Main Archive Page > Month Archives  > wireshark-dev archives
wireshark-dev: Re: [Wireshark-dev] Unable to run wireshark, tsha

Re: [Wireshark-dev] Unable to run wireshark, tshark or dumpcap from the build directory.

From: Jeff Morriss <jeff.morriss.ws_at_nospam>
Date: Mon Oct 04 2010 - 20:42:38 GMT
To: Developer support list for Wireshark <wireshark-dev@wireshark.org>

Christopher Maynard wrote:
> Jaap Keuter <jaap.keuter@...> writes:
>
>> From the top of my head there's an environment variable which can be set on
> running glib based apps that cause
>> these apps to stop when they hit these. Running in a debugger allows you to to
> backtrace to the source.
>
> Thanks Jaap. From http://library.gnome.org/devel/glib/2.12/glib-running.html, I
> found that if I set G_DEBUG=fatal_criticals that tshark will abort at the first
> occurrence.
>
> With that set, I ran tshark in gdb and got the backtrace, which follows. I've
> been trying to figure out what's going wrong, stepping through the code in gdb,
> but haven't been able to draw any conclusions yet.
>
> (gdb) bt
> #0 0x0000003e13430015 in raise () from /lib64/libc.so.6
> #1 0x0000003e13431980 in abort () from /lib64/libc.so.6
> #2 0x0000003e19435050 in g_logv () from /lib64/libglib-2.0.so.0
> #3 0x0000003e194350d3 in g_log () from /lib64/libglib-2.0.so.0
> #4 0x0000003e1944704b in g_string_insert_c () from /lib64/libglib-2.0.so.0
> #5 0x00002aaaabc5780a in dfilter_macro_apply (text=<value optimized out>,
> depth=0, error=0x632d00) at /usr/include/glib-2.0/glib/gstring.h:131

Looks like your glib is attempting to inline g_string_append_c() (this
is from a RH5 system):

> 120 #ifdef G_CAN_INLINE
> 121 static inline GString*
> 122 g_string_append_c_inline (GString *gstring,
> 123 gchar c)
> 124 {
> 125 if (gstring->len + 1 < gstring->allocated_len)
> 126 {
> 127 gstring->str[gstring->len++] = c;
> 128 gstring->str[gstring->len] = 0;
> 129 }
> 130 else
> 131 g_string_insert_c (gstring, -1, c); <<<< here
> 132 return gstring;
> 133 }
> 134 #define g_string_append_c(gstr,c) g_string_append_c_inline (gstr, c)
> 135 #endif /* G_CAN_INLINE */

But then when it gets into g_string_insert_c() it doesn't think that -1
is actually a -1 (this code is from 2.12.latest via the git web interface):

> GString*
> g_string_insert_c (GString *string,
> gssize pos,
> gchar c)
> {
> g_return_val_if_fail (string != NULL, NULL);
>
> g_string_maybe_expand (string, 1);
>
> if (pos < 0)
> pos = string->len; <<<< should have gone down this path
> else
> g_return_val_if_fail (pos <= string->len, string); <<< but your error indicates it came here

Not sure what's going on there. Reinstall glib2? Forcibly undef
G_CAN_INLINE (as an experiment at least)?
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request@wireshark.org?subject=unsubscribe