Hi, I'm writing an extension to php. After changing my code to have thread safe globals , my extension is crashing and I can't figure out what it is: typedef struct { HashTable array_dl_handle; /* hash user dll name -> handle, getobject, getcompiler, destroyobject */ HashTable array_compiler; /* hash compiler name -> handle, gps, gms, version */ } php_delphi_globals; #ifdef ZTS #define DG(v) (delphi_globals->v) #define DG_FETCH() php_delphi_globals *delphi_globals = ts_resource(delphi_globals_id) #define DG_D php_delphi_globals *delphi_globals #define DG_DC , DG_D #define DG_C delphi_globals #define DG_CC , DG_C int delphi_globals_id; #else #define DG(v) (delphi_globals.v) #define DG_FETCH() #define DG_D #define DG_DC #define DG_C #define DG_CC php_delphi_globals delphi_globals; #endif #ifdef ZTS static void alloc_delphi_globals_ctor(php_delphi_globals *delphi_globals) { memset(delphi_globals, 0, sizeof(php_delphi_globals)); } #endif ZEND_MINIT_FUNCTION(delphi) { #ifdef ZTS delphi_globals_id = ts_allocate_id(sizeof(php_delphi_globals), (ts_allocate_ctor)alloc_delphi_globals_ctor, NULL); #endif ... DG_FETCH(); zend_hash_init(&DG(array_dl_handle), 0, NULL, NULL, 0); zend_hash_init(&DG(array_compiler), 0, NULL, NULL, 0); .... } It crashes when I do in one function: DG_FETCH(); zend_hash_find(&DG(array_dl_handle), module_name,strlen(module_name)+1, (void **)&value); My hashtable is empty. When array_dl_handle was not part of ZTS globals, everything was OK. Any clue ? Gilles. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]