[devel] Re: RPM::Database

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Окт 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 в этом случае почему-то происходит.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20051019/34ee6482/attachment-0001.bin>


Подробная информация о списке рассылки Devel