Regarding my last post, here's what I've found since then. The code is actually getting into lookup_composite_function(), but it's throwing the exception on the first statement inside lookup_composite_function(), at line 367 in pixman.c:
/* Check cache for fast paths */ cache = PIXMAN_GET_THREAD_LOCAL (fast_path_cache); The exception happens because the variable fast_path_cache is declared as __declspec(thread), i.e. thread local storage, and also because WinLauncher was fairly recently changed to delay load the Webkit dll. According to MSDN<http://msdn.microsoft.com/en-us/library/9w1sdazb(v=vs.80).aspx>, "The use of the *thread* attribute may interfere with delay loading of DLL imports." It goes on to describe this issue in more detail in the documentation for delay loading dlls<http://msdn.microsoft.com/en-us/library/yx1x886y.aspx>. As to why it actually works in Win7 and Vista, I have no idea. Maybe they've done some fixes in LoadLibrary() that initializes the thread local storage properly. Anyway, by changing WinLauncher back to not being delay-loaded, I was able to fix the problem in XP. So apparently the solution for getting it to work in XP is that WinLauncher (and our own implementations) should not delay load Webkit. I would like to have the option of delay loading, however. It seems that there are options for defining these variables differently when compiling pixman (in pixman-compiler.h where PIXMAN_GET_THREAD_LOCAL() is defined). It looks like if you define PIXMAN_NO_TLS, then the variables will just be static, not thread local. Or if you define __MINGW32__ it will use windows mutexes and the TLS commands to access them. Anyway, it seems like it's possible to do; I just don't know the other implications that those definitions would have. Anyway, my thoughts. Experts, any advice? Anthony Johnson
_______________________________________________ webkit-help mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-help
