[Top][All Lists]
[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)
☯