[devel] Re: RPM::Database
Alexey Tourbin
at на altlinux.ru
Ср Окт 19 22:00:34 MSD 2005
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 <Address 0x544d5052 out of bounds>, ap=0xbffff1dc "ы\204\004\bфї\027@@ў")
> at vfprintf.c:1468
> #2 0x400b496f in *__GI_fprintf (stream=0x544d5052,
> format=0x544d5052 <Address 0x544d5052 out of bounds>) 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 <Address 0x544d5052 out of bounds>
> (gdb) p rpmTagTable
> $2 = (const struct headerTagTableEntry_s *) 0x4006e8e4
> (gdb) p rpmTagTable[0]
> $3 = {name = 0x544d5052 <Address 0x544d5052 out of bounds>, val = 1214203713}
>
> Такое впечатление, что происходит неправильный dereferencing, то есть
> rpmTagTable в качестве указателя уже смотрит непойми куда. Я озадачен. :)
Хе-хе! Вот что в этой ситуации присходит:
(gdb) p rpmTagTable
$10 = (const struct headerTagTableEntry_s *) 0x4006e8e4
(gdb) p (char*)rpmTagTable
$11 = 0x4006e8e4 "RPMTAG_HEADERIMAGE"
(gdb)
То есть один лишний dereferencing в этом случае почему-то происходит.
----------- УМЕДХЭБС ЮБУФШ -----------
j e?ф???Ъ?
l? з?ЙчвоT?Xm??Ъ?+-??m?)Нф?ЮЧ??z? ?_щzВ?Щ?miхfz{lЪm4Г]5ВЩЬyН?Сoз?ж°?g????
Подробная информация о списке рассылки Devel