freetype-devel
[Top][All Lists]
Advanced

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

Re: [ft-devel] avoiding a longjmp crash in ftgrays.c


From: Tom Bishop, Wenlin Institute
Subject: Re: [ft-devel] avoiding a longjmp crash in ftgrays.c
Date: Sun, 9 Jan 2011 11:24:46 -0800

On Jan 9, 2011, at 12:07 AM, Werner LEMBERG wrote:
> ...
> This won't compile.  You need -DFT2_BUILD_LIBRARY also.

I forgot to mention that I had set up FreeType 2.4.4 as follows:

Ran "./configure", "make", and "sudo make install".

Added this line to ft2build.h:
#define FT2_BUILD_LIBRARY

> Adding FT2_DEBUG=any:5 to the environment, I get the same output as
> you but complete, without crash.

And that's on Linux, right? I imagine it would crash for anyone using MinGW GCC 
4.5 on Windows XP. I have confirmed that on a second machine.

>> The output is shown below. The stuff at the end about "# of
>> contours: -1" and "Glyph 22971" is mysterious.
> 
> Not at all: -1 for the number of contours specifies that it is a
> composite glyph.  What follows are the subglyphs.

So that's probably not related to the problem. I think the other font for which 
the crash occurred does not have composite glyphs.

> Using valgrind, I get two warnings specific to the demo program:
> 
>   Use of uninitialised value of size 4
>      at 0x808F02F: __longjmp (__longjmp.S:68)
> 
>   Use of uninitialised value of size 4
>      at 0x80759DD: gray_convert_glyph_inner (ftgrays.c:1718)
>      by 0x8075CAB: gray_convert_glyph (ftgrays.c:1816)
>      by 0x8075628: ft_smooth_render_generic (ftsmooth.c:292)
>      by 0x8057ECA: FT_Render_Glyph_Internal (ftobjs.c:3932)
>      by 0x8057F41: FT_Render_Glyph (ftobjs.c:3972)
>      by 0x808E98F: (below main) (libc-start.c:226)
> 
>   Use of uninitialised value of size 4
>      at 0x80759EC: gray_convert_glyph_inner (ftgrays.c:1721)
>      by 0x8075CAB: gray_convert_glyph (ftgrays.c:1816)
>      by 0x8075628: ft_smooth_render_generic (ftsmooth.c:292)
>      by 0x8057ECA: FT_Render_Glyph_Internal (ftobjs.c:3932)
>      by 0x8057F41: FT_Render_Glyph (ftobjs.c:3972)
>      by 0x808E98F: (below main) (libc-start.c:226)
> 
> My knowledge of compiler details is too limited to really interpret
> it.  The variable `error' is already defined as `volatile', and AFAIK
> more is not needed to make longjmp work.

It's over my head as well. That Valgrind reports any warning related to this 
use of longjmp does seem significant; it suggests a problem that isn't limited 
to MinGW.

I wonder if you tried changing -fomit-frame-pointers to 
fno-omit-frame-pointers, and whether Valgrind still issues warnings in that 
case?

Maybe some Valgrind or GCC experts would be willing to investigate.

Tom

文林 Wenlin Institute, Inc.        Software for Learning Chinese
E-mail: address@hidden     Web: http://www.wenlin.com
Telephone: 1-877-4-WENLIN (1-877-493-6546)
☯








reply via email to

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