[Pixman] [PATCH] glyphs: Check the return code from _pixman_implementation_lookup_composite()

Juan Francisco Cantero Hurtado iam at juanfra.info
Mon Apr 1 14:34:16 PDT 2013


On 03/04/13 20:43, Juan Francisco Cantero Hurtado wrote:
> On 03/02/13 03:25, Juan Francisco Cantero Hurtado wrote:
>> On 01/13/13 22:37, Juan Francisco Cantero Hurtado wrote:
>>> On 01/13/13 11:20, Søren Sandmann wrote:
>>>> Søren Sandmann <sandmann at cs.au.dk> writes:
>>>>
>>>>> Juan Francisco Cantero Hurtado <iam at juanfra.info> writes:
>>>>>
>>>>>> OpenBSD and gcc 4.2 (the default compiler) don't support thread local
>>>>>> storage.
>>>>>
>>>>> In that case, it should fall back to pthread_setspecific(). Can you
>>>>> try
>>>>> putting in a #error above "#include <pthread.h>" in pixman-compiler.h
>>>>> and see if compilation fails.
>>>>>
>>>>> It's possible there is a bug in the pthread_setspecific() fallback in
>>>>> pixman, but if so, I couldn't reproduce it on Linux by forcing
>>>>> pthread_setspecific() and running the test suite.
>>>>>
>>>>> Does the test suite pass for you if you run "make check"?
>>>>
>>>> I found this thread:
>>>>
>>>>
>>>> https://groups.google.com/forum/?fromgroups=#!topic/comp.unix.bsd.openbsd.misc/y-qciyc6wNY
>>>>
>>>>
>>>>
>>>>
>>>> in which Marc Espie says that pthreads on OpenBSD 4.2 is a purely
>>>> userspace thread library.
>>>>
>>>> Since the backtrace you posted included multiple threads, I'm guessing
>>>> those are kernel threads, which means pthread_setspecific() can't work
>>>> on them.
>>>>
>>>> If this diagnosis is right, then pixman currently can't support threads
>>>> on OpenBSD 4.2. Support could potentially be added, but it would
>>>> have to
>>>> be done (and maintained) by someone who understands threads on OpenBSD.
>>>>
>>>
>>> OpenBSD changed from user-level to kernel-level threads in the last
>>> release (5.2). I'll mail to the maintainer of pixman on OpenBSD, my
>>> knowledge of OpenBSD internals isn't enough for help you with the bug.
>>>
>>
>> I've been doing some tests the last month. The error occur in pixman
>> 0.28 and 0.29.2 when SSE is enabled. If I disable SSE in the configure
>> script of pixman 0.28, all works.
>
> I forgot add that disable SSE2 in pixman isn't a good fix for OpenBSD
> because only one program crashes with SSE2 enabled on i386 (it works
> amd64). Can you give me any guidance for help you with the fix of the
> bug?. If you suspect is a bug in OpenBSD, a little test code would be
> great because I could show the problem to OpenBSD devs.
>

The bug was not in pixman or cairo. The culprit is libffi and it was 
fixed a few hours ago by Mark Kettenis 
http://www.openbsd.org/cgi-bin/cvsweb/ports/devel/libffi/patches/patch-src_x86_freebsd_S?rev=1.1;content-type=text%2Fplain

Cheers.




More information about the Pixman mailing list