patch for crash in XFT_JHD_BRANCH

View: New views
4 Messages — Rating Filter:   Alert me  

patch for crash in XFT_JHD_BRANCH

by Michael Teske :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi!

 From time to time I got crashes of an XFT_JHD_BRANCH-emacs with
something like
*** glibc detected *** free(): invalid pointer: 0x0a23c190 ***

The important part of the stacktrace is this:
#15 0x417f0149 in abort () from /lib/tls/libc.so.6
#16 0x4182227a in __libc_message () from /lib/tls/libc.so.6
#17 0x41828abf in _int_free () from /lib/tls/libc.so.6
#18 0x41828e3a in free () from /lib/tls/libc.so.6
#19 0x0815b36b in overrun_check_free (block=0x8e08250) at alloc.c:724
#20 0x0815b6b9 in emacs_blocked_free (ptr=0x8e08250) at alloc.c:1196
#21 0x41828de5 in free () from /lib/tls/libc.so.6
#22 0x411aa244 in XftDrawDestroy () from /usr/X11R6/lib/libXft.so.2
#23 0x080e3a51 in clear_face_cache (clear_fonts_p=0) at xfaces.c:5389
#24 0x080a8b42 in redisplay_internal (preserve_echo_area=0) at xdisp.c:10


This small diff fixes it for me:

$ CVS_RSH=ssh cvs diff -c xfaces.c
[...]

diff -c -r1.316.2.2 xfaces.c
*** xfaces.c    6 Jun 2005 08:36:36 -0000       1.316.2.2
--- xfaces.c    21 Jul 2005 16:25:59 -0000
***************
*** 7177,7182 ****
--- 7177,7183 ----
       {
         bcopy (base_face, face, sizeof *face);
         face->gc = 0;
+       face->xft_draw = NULL;

         /* Don't try to free the colors copied bitwise from BASE_FACE.  */
         face->colors_copied_bitwise_p = 1;



face->colors_copied_bitwise_p = 1 is set where it crashes.

Greetings,
        Michael


_______________________________________________
Emacs-pretest-bug mailing list
Emacs-pretest-bug@...
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Re: patch for crash in XFT_JHD_BRANCH

by Jan Djärv :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Michael Teske wrote:

> Hi!
>
> From time to time I got crashes of an XFT_JHD_BRANCH-emacs with
> something like
> *** glibc detected *** free(): invalid pointer: 0x0a23c190 ***
>
> The important part of the stacktrace is this:
> #15 0x417f0149 in abort () from /lib/tls/libc.so.6
> #16 0x4182227a in __libc_message () from /lib/tls/libc.so.6
> #17 0x41828abf in _int_free () from /lib/tls/libc.so.6
> #18 0x41828e3a in free () from /lib/tls/libc.so.6
> #19 0x0815b36b in overrun_check_free (block=0x8e08250) at alloc.c:724
> #20 0x0815b6b9 in emacs_blocked_free (ptr=0x8e08250) at alloc.c:1196
> #21 0x41828de5 in free () from /lib/tls/libc.so.6
> #22 0x411aa244 in XftDrawDestroy () from /usr/X11R6/lib/libXft.so.2
> #23 0x080e3a51 in clear_face_cache (clear_fonts_p=0) at xfaces.c:5389
> #24 0x080a8b42 in redisplay_internal (preserve_echo_area=0) at xdisp.c:10
>
>
> This small diff fixes it for me:
>
> $ CVS_RSH=ssh cvs diff -c xfaces.c
> [...]
>
> diff -c -r1.316.2.2 xfaces.c
> *** xfaces.c    6 Jun 2005 08:36:36 -0000       1.316.2.2
> --- xfaces.c    21 Jul 2005 16:25:59 -0000
> ***************
> *** 7177,7182 ****
> --- 7177,7183 ----
>       {
>         bcopy (base_face, face, sizeof *face);
>         face->gc = 0;
> +       face->xft_draw = NULL;
>
>         /* Don't try to free the colors copied bitwise from
> BASE_FACE.  */
>         face->colors_copied_bitwise_p = 1;
>
>
>
> face->colors_copied_bitwise_p = 1 is set where it crashes.


Thanks.  I'll install this next time I get some time for the XFT
branch.  May take a while though.

    Jan D.



_______________________________________________
Emacs-pretest-bug mailing list
Emacs-pretest-bug@...
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Re: patch for crash in XFT_JHD_BRANCH

by Michael Teske :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Jan D. wrote:

>
> Thanks.  I'll install this next time I get some time for the XFT
> branch.  May take a while though.

No problem, it doesn't crash anymore, that's enough for me ;-)
Without xft, fonts really become unreadable on a recent LCD IMHO...

One question left, though: The cursor is just a rectangle of the font
color now, and not inverse like in my 21.4 emacs without xft. Do you (or
anyone else here) know where I have to look if I'd want to try to fix this?

Greetings,
        Michael


_______________________________________________
Emacs-pretest-bug mailing list
Emacs-pretest-bug@...
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Re: patch for crash in XFT_JHD_BRANCH

by Michael Teske :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Michael Teske wrote:

> Jan D. wrote:
>
>>
>> Thanks.  I'll install this next time I get some time for the XFT
>> branch.  May take a while though.
>
>
> No problem, it doesn't crash anymore, that's enough for me ;-)
> Without xft, fonts really become unreadable on a recent LCD IMHO...
>
> One question left, though: The cursor is just a rectangle of the font
> color now, and not inverse like in my 21.4 emacs without xft. Do you (or
> anyone else here) know where I have to look if I'd want to try to fix this?
>
Ok, i found it by myself. The complete cvs diff output is attached, for
anyone interested.

Greetings,
        Michael

Index: xfaces.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfaces.c,v
retrieving revision 1.316.2.2
diff -c -r1.316.2.2 xfaces.c
*** xfaces.c 6 Jun 2005 08:36:36 -0000 1.316.2.2
--- xfaces.c 26 Jul 2005 11:08:56 -0000
***************
*** 5227,5233 ****
       
        XQueryColors (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->cmap,
                      colors, 2);
!       face->xft_fg.color.alpha = face->xft_fg.color.alpha = 0xffff;
        face->xft_fg.color.red = colors[0].red;
        face->xft_fg.color.green = colors[0].green;
        face->xft_fg.color.blue = colors[0].blue;
--- 5227,5233 ----
       
        XQueryColors (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->cmap,
                      colors, 2);
!       face->xft_fg.color.alpha = face->xft_fg.color.alpha = face->xft_bg.color.alpha = 0xffff;
        face->xft_fg.color.red = colors[0].red;
        face->xft_fg.color.green = colors[0].green;
        face->xft_fg.color.blue = colors[0].blue;
***************
*** 7177,7182 ****
--- 7177,7183 ----
      {
        bcopy (base_face, face, sizeof *face);
        face->gc = 0;
+       face->xft_draw = NULL;
 
        /* Don't try to free the colors copied bitwise from BASE_FACE.  */
        face->colors_copied_bitwise_p = 1;
Index: xterm.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xterm.c,v
retrieving revision 1.861.2.2
diff -c -r1.861.2.2 xterm.c
*** xterm.c 6 Jun 2005 08:36:36 -0000 1.861.2.2
--- xterm.c 26 Jul 2005 11:08:58 -0000
***************
*** 1360,1366 ****
            for (i = 0; i < s->nchars; ++i)
              ch[i] = s->char2b[i].byte2 | (s->char2b[i].byte1 << 8);
            XftDrawString16 (s->face->xft_draw,
!                            &s->face->xft_fg,
                             s->face->font,
                             x,
                             s->ybase - boff,
--- 1360,1366 ----
            for (i = 0; i < s->nchars; ++i)
              ch[i] = s->char2b[i].byte2 | (s->char2b[i].byte1 << 8);
            XftDrawString16 (s->face->xft_draw,
!                            s->hl == DRAW_CURSOR ? &s->face->xft_bg : &s->face->xft_fg,
                             s->face->font,
                             x,
                             s->ybase - boff,
***************
*** 1369,1375 ****
          }
        else
          XftDrawString8 (s->face->xft_draw,
!                         &s->face->xft_fg,
                          s->face->font,
                          x,
                          s->ybase - boff,
--- 1369,1375 ----
          }
        else
          XftDrawString8 (s->face->xft_draw,
!                         s->hl == DRAW_CURSOR ? &s->face->xft_bg : &s->face->xft_fg,
                          s->face->font,
                          x,
                          s->ybase - boff,

_______________________________________________
Emacs-pretest-bug mailing list
Emacs-pretest-bug@...
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug