[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