On Wed, Oct 19, 2005 at 09:46:29PM +0400, Alexey Tourbin wrote: > > Segmentation fault > ^^^ > В этой ситуации вот что происходит: > > #0 0x400d73ef in strlen () from /usr/lib/debug/libc.so.6 > #1 0x400ae405 in _IO_vfprintf (s=0x4017c7e0, > format=0x544d5052
, ap=0xbffff1dc "ы\204\004\bфї\027@@ў") > at vfprintf.c:1468 > #2 0x400b496f in *__GI_fprintf (stream=0x544d5052, > format=0x544d5052
) at fprintf.c:32 > #3 0x080484d4 in main () at test.c:6 > > (gdb) frame 3 > #3 0x080484d4 in main () at test.c:6 > 6 fprintf(stdout, "tag0: %s$\n", tag0); > (gdb) p tag0 > $1 = 0x544d5052
> (gdb) p rpmTagTable > $2 = (const struct headerTagTableEntry_s *) 0x4006e8e4 > (gdb) p rpmTagTable[0] > $3 = {name = 0x544d5052
, val = 1214203713} > > Такое впечатление, что происходит неправильный dereferencing, то есть > rpmTagTable в качестве указателя уже смотрит непойми куда. Я озадачен. :) Хе-хе! Вот что в этой ситуации присходит: (gdb) p rpmTagTable $10 = (const struct headerTagTableEntry_s *) 0x4006e8e4 (gdb) p (char*)rpmTagTable $11 = 0x4006e8e4 "RPMTAG_HEADERIMAGE" (gdb) То есть один лишний dereferencing в этом случае почему-то происходит.