Remember last Feburary and March there was a big discussion about xf86setjmp? Part of that discussion involved a SIGSEGV or SIGBUS in the freetype2 code when a font was not found. Well, I'm seeing the same thing (on ia64). At the time it was pointed out that one can never wrap setjmp because setjmp has bad behavior if its called from within a function that returns, which is exactly what a wrapper is.
The setjmp code was reworked a couple of months ago (in part to account for libc differences). The current implementation has these code fragments: ftstdlib.h: ----------- #define DONT_DEFINE_WRAPPERS #define DEFINE_SETJMP_WRAPPERS #include "xf86_ansic.h" #undef DONT_DEFINE_WRAPPERS xf86_libc.h: ------------ #if defined(XFree86LOADER) && \ (!defined(DONT_DEFINE_WRAPPERS) || defined(DEFINE_SETJMP_WRAPPERS)) #undef setjmp #define setjmp(a) xf86setjmp_macro(a) #undef longjmp #define longjmp(a,b) xf86longjmp(a,b) #undef jmp_buf #define jmp_buf xf86jmp_buf #endif As far as I can tell when one builds the freetype module for the loadable server you're not going to get any wrappers except for setjmp and this is bad because you can't wrap setjmp. As a trial I built both a static and a loadable server. The static server ran fine, but the loadable server dies with a SIGBUS in the freetype code when a setjmp/longjmp is executed. Pretty much what I expected. I'm wondering if I'm missing something, but its a fact you can't wrap setjmp right? And why would you turn off all wrappers except setjmp? Is this really right? I reread the original discussion and part of had to do with how to implement setjmp in modules that are supposed to be system neutral (i.e. must use wrappers) when one has this exception of a clib function that can't be wrapped. What ever came of that? -- John Dennis <[EMAIL PROTECTED]> _______________________________________________ Devel mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/devel