[cairo] pixman TLS crash on win32 under java-vm
mikhailkozhevnikov at yandex.ru
Wed Sep 1 09:52:36 PDT 2010
I've got a rather strange setup here, which causes pixman to crash. It seems to happen in line 657 of pixman.c that reads
cache = PIXMAN_GET_THREAD_LOCAL (fast_path_cache);
which disassembles into
102F8922 mov edx,dword ptr [__tls_index (1064AEDCh)]
102F8928 mov eax,dword ptr fs:[0000002Ch]
102F892E mov ecx,dword ptr [eax+edx*4]
102F8931 add ecx,108h
102F8937 mov dword ptr [cache],ecx
where the third instruction is the one to cause the crash.
The call sequence is as follows:
The 32-bit binaries are built from the latest cairo/pixman release sources with VS 9.0 under Win Server 2008 x64 and are linked into a dll that's loaded by the Java VM on a Win XP x86 machine. An interesting point is that we've failed to reproduce this error on 32-bit Vista or on the same machine, but calldoing the same stuff from a C++ application without using Java.
I suspect that this has something to do with the TLS machinery in use. Has anyone ran across this?
Is there a way to prevent pixman from using TLS?
More information about the cairo