[Fontconfig] Re: fontconfig often crashes when there is something
wrong with the cache files
Mike FABIAN
mfabian at suse.de
Thu Oct 27 00:30:39 EST 2005
Patrick Lam <plam at MIT.EDU> さんは書きました:
> Mike FABIAN wrote:
>> For details see:
>>
>> http://bugzilla.novell.com/show_bug.cgi?id=128080
>>
>> This bugreport also has a backtrace attached (comment #10).
>>
>> Until now I don't know a easy way to reproduce the problem, it occurs
>> "sometimes" and goes away by calling "fc-cache -f" as root.
>> I.e. I guess there is something wrong with the cache files.
>>
>> I have started debugging this but until now I only found that
>> it crashes in fccharset.c in
>>
>> FcCharSet *
>> FcCharSetCopy (FcCharSet *src)
>> {
>> if (src->ref != FC_REF_CONSTANT)
>> src->ref++;
>> return src;
>> }
>>
>>
>> when src->ref happens to be 0 (which is != FC_REF_CONSTANT)
>> and then tries to execute
>>
>> src->ref++;
>>
>> which won't work because "src" is v.u.c where v is of type FcValue and
>> FcCharSet is "const" in that union (fontconfig.h), therefore it cannot
>> be incremented:
>
> The constness is not a problem, since that's cast away. However, the
> problem might be that the charset is in mmapped space and therefore ref
> can't be incremented. But that's strange, because mmapped charsets
> should always have ref set to -1. Also, the backtrace seems to point to
> line 359, which is the statement just after the increment.
The shift of one line is probably because I had added a printf for
debugging somewhere.
When single stepping with gdb, it crashed exactly on the
src->ref++;
line.
And when that happened, ref was equal to 0.
--
Mike FABIAN <mfabian at suse.de> http://www.suse.de/~mfabian
睡眠不足はいい仕事の敵だ。
More information about the Fontconfig
mailing list