emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 23.0.60; SEGV in font_score()


From: James Cloos
Subject: Re: 23.0.60; SEGV in font_score()
Date: Sun, 08 Jun 2008 14:54:01 -0400
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (gnu/linux)

>>>>> "Handa" == Kenichi Handa <address@hidden> writes:

>> I was able to convince the xpr macro in gdb to tell me that the first
>> element of entity is "xft",

Handa> Hmmm, then it seems that at least entity is a correct
Handa> font-entity object.  So, perhaps the 2nd element (you wrote
Handa> that `i' was 2) of it was set to something other than symbol.

Yes.  If the elements of entity are laid out in order in VM as an array
of struct Lisp_Vector then after "xft" comes a Lisp_Symbol "nil" and
then a Lisp_Float which xpr cannot dereference; the (alleged) pointer
it tries to deref is at 0x4020000e.  Otherwise, ....

Handa> I've just installed a new gdb function xfont of .gdbinit.
Handa> With that, you can do something like this:

Handa> (gdb) p entity
Handa> $1 = 147592732
Handa> (gdb) xfont
Handa> $2 = (struct font_entity *) 0x8cc1618
Handa> (gdb) p $2->props[FONT_FAMILY_INDEX]
Handa> $3 = 148609265
Handa> (gdb) xtype
Handa> Lisp_Symbol

I'll give that a try.

Handa> And also this will help.

Handa> (gdb) up 2
Handa> #2  0x081e64d7 in font_find_for_lface (f=0x84e5300, attrs=0x89ea6f8, 
spec=147460412, c=-1) at font.c:2893
Handa> (gdb) pr spec
Handa> (gdb) pr prefer

(from the core I offered:)

(gdb) up 2
#6  0x08210a36 in font_find_for_lface (f=0x8cb2740, attrs=0xa773f98, 
spec=147711324, c=-1)
    at font.c:2893
2893          entities = font_sort_entites (entities, prefer, frame, spec, c < 
0);
(gdb) pr spec
Cannot access memory at address 0x83c63d0
(gdb) pr prefer
Cannot access memory at address 0x83c63d0
(gdb) 

So I tried:

(gdb) p spec
$35 = 147711324
(gdb) xvector
$36 = (struct Lisp_Vector *) 0x8cde558
0
(gdb) p {struct Lisp_Vector}0x8cde558
$37 = {
  size = 1075838989, 
  next = 0x84fa938, 
  contents = {138488009}
}
(gdb) p {Lisp_Object}0x8cde560
$38 = 138488009
(gdb) xpr
Lisp_Symbol
$39 = (struct Lisp_Symbol *) 0x84128c8
"nil"
(gdb)

(gdb) p prefer
$40 = 138734020
(gdb) xvector
$41 = (struct Lisp_Vector *) 0x844e9c0
0
(gdb) p {struct Lisp_Vector}0x844e9c0
$42 = {
  size = 1075838989, 
  next = 0x844e960, 
  contents = {138488009}
}
(gdb) p {Lisp_Object}0x844e9c8
$43 = 138488009
(gdb) xpr
Lisp_Symbol
$44 = (struct Lisp_Symbol *) 0x84128c8
"nil"
(gdb) 

I hope I got that right.

-JimC
-- 
James Cloos <address@hidden>         OpenPGP: 1024D/ED7DAEA6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]