On Fri, Aug 04, 2006 at 12:56:11PM +0100, Neil Piercy wrote: > same execution path in this area. The big difference between the request > and the response is that the _values_ of the 64 bit monotonic replay > detection counter: the requests use very small values, the responses use > huge values (i.e. all bytes of the 64 bit values are non-zero).
Nice find! It has MSB set. > The crash definitely happens deep in the glib handling of the > g_vsnprintf - I dont have a debug build of glib, but it looked like it > went into the guts of the core gnulib/vasnprintf, where it hit an abort > call. Without the debug lib it is difficult to see where or why. > > Bottom line: looks to me like a glib bug or a build incompatibility > between guint64 handling in the glib binary and ethereal perhaps? OK, I've created a small testprogram (under Suse 10.1) which you should compile as similar as possible to the way you compile Wireshark. Let's see whether it crashes and if so, where. I hope the program doesn't much tweaking to compile on W32. ciao Joerg -- Joerg Mayer <[EMAIL PROTECTED]> We are stuck with technology when what we really want is just stuff that works. Some say that should read Microsoft instead of technology.
/* Testprogram for http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1025 * * Compile with: * gcc -Wall `pkg-config --cflags glib-2.0` `pkg-config --libs glib-2.0` -o gtest64 gtest64.c * which expands on my system to * gcc -Wall -I/opt/gnome/include/glib-2.0 -I/opt/gnome/lib/glib-2.0/include -L/opt/gnome/lib -lglib-2.0 -o gtest64 gtest64.c * Finally, run with ./gtest64 or something like that. */ #include <glib.h> #include <glib/gprintf.h> /* Formats for printing 64-bit unsigned hexadecimal numbers */ #ifndef PRIx64 #ifdef _MSC_EXTENSIONS #define PRIx64 "I64x" #else /* _MSC_EXTENSIONS */ #define PRIx64 "llx" #endif /* _MSC_EXTENSIONS */ #endif /* PRIx64 */ #define BUFLEN 100 char buffer[BUFLEN]; guint64 test1 = G_GINT64_CONSTANT(0x11223344U); guint64 test2 = G_GINT64_CONSTANT(0x11223344556677U); guint64 test3 = G_GINT64_CONSTANT(0x1122334455667788U); guint64 test4 = G_GINT64_CONSTANT(0xFFEEDDCC11223344U); void printit(const char *format, ...) { va_list ap; va_start(ap, format); g_vsnprintf(buffer, BUFLEN, format, ap); g_printf("%s\n", buffer); va_end(ap); } int main() { printit("Test1: %" PRIx64 , test1); printit("Test2: %" PRIx64 , test2); printit("Test3: %" PRIx64 , test3); printit("Test4: %" PRIx64 , test4); return 0; }
_______________________________________________ Wireshark-dev mailing list Wireshark-dev@wireshark.org http://www.wireshark.org/mailman/listinfo/wireshark-dev