Hi, I have been doing some code-reading. Why is the RSHUTDOWN function for syslog ext called only when run under win32? Shouldn't the cleanup happen on linux as well?
Another question is for the use of zend_strndup instead of one of the non-persistent memory allocation functions (i.e. estrndup() ) ? There is no use for this variable after the request dies (as far as I understand). However, so far, I can't seem to understand who/what corrupts my memory. What do you think about extending the RINIT function instead of: PHP_RINIT_FUNCTION(syslog) { if (INI_INT("define_syslog_variables")) { start_syslog(TSRMLS_C); } else { BG(syslog_started)=0; } return SUCCESS; } To be: PHP_RINIT_FUNCTION(syslog) { if (INI_INT("define_syslog_variables")) { start_syslog(TSRMLS_C); } else { BG(syslog_started)=0; BG(syslog_device)=NULL; /* This is the addition */ } return SUCCESS; } Thanks in advance, Nir. -----Original Message----- From: Rachmel, Nir (Nir) [mailto:[EMAIL PROTECTED] Sent: Sunday, December 02, 2007 11:31 AM To: Antony Dovgal Cc: internals@lists.php.net Subject: RE: [PHP-DEV] FW: [PHP] PHP 5.2.3 segfault with syslog standard extension Hi, I tried your advice, and put a breakpoint at the shutdown function. However it never reaches it! (not normally, and not before the SEGV is sent). In case I didn't write it in the previous threads, I am running the PHP scripts from my web-server (appWeb, which is apache like for embedded systems). PHP is compiled as a static module into it, so maybe the shutdown procedure is never called since the PHP is "never shut down"? I would appreciate any advice / ideas you might have, Thanks in advance, Nir. -----Original Message----- From: Antony Dovgal [mailto:[EMAIL PROTECTED] Sent: Tuesday, November 27, 2007 8:40 AM To: Rachmel, Nir (Nir) Cc: internals@lists.php.net Subject: Re: [PHP-DEV] FW: [PHP] PHP 5.2.3 segfault with syslog standard extension On 25.11.2007 19:55, Rachmel, Nir (Nir) wrote: > If it helps, I am attaching the relevant tsrm_ls (according to the > globals_id in the relevant frame): > syslog_started = 1, > syslog_device = 0x5a5a5a5a <Address 0x5a5a5a5a out of bounds>, So it's somehow got freed. Try setting breakpoint to zm_shutdown_syslog() function to see if it was called before. It should be called on shutdown only, but that's the only case when BG(syslog_device) is freed and not NULLed. -- Wbr, Antony Dovgal -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php