The FCGI module contains the following code:
THREADS_ALLOW(); ret = FCGX_Accept_r(THIS->request); THREADS_DISALLOW();
This works fine normally, but if pike was compiled --with-debug, then HIDE_GLOBAL_VARIABLES() is defined which sets int Pike_interpreter =0; which in turn means THIS is no longer valid and you get:
./FCGI.cmod:157: error: request for member `frame_pointer' in something not a structure or union
Adam
No, it does not "work fine" even without --with-debug, except by pure chance. After THREADS_ALLOW(), Pike_fp->current_storage may change at any time due to other threads executing pike code. Therefore, the value of THIS is undefined. The code needs to assign THIS->request to a local C variable _before_ calling THREADS_ALLOW().
pike-devel@lists.lysator.liu.se