ID: 21306 Updated by: [EMAIL PROTECTED] Reported By: Xuefer at 21cn dot com -Status: Open +Status: Assigned Bug Type: Session related Operating System: linux PHP Version: 4.3.7 -Assigned To: +Assigned To: sas
Previous Comments: ------------------------------------------------------------------------ [2004-11-08 17:24:27] Xuefer at 21cn dot com i guess i've found the bug it's a "exception safe" problem as c++ well, not php5 exception, i meant zend_bailout(longjmp) when write handler issue a Fatal error, will trigger zend_bailout() and skip ALL other modules rshutdown, including the one right after session_flush_data(); session.c: static void php_session_flush(TSRMLS_D) { if(PS(session_status)==php_session_active) { php_session_save_current_state(TSRMLS_C); <-- NOT exception safe using for mod_user.c } PS(session_status)=php_session_none; <- WON'T executed when zend_bailout } suggested fix: mod_user.c :: function PS_WRITE_FUNC(user) chnage ====== retval = ps_call_handler(PSF(write), 2, args TSRMLS_CC); ====== to ====== zend_try { retval = ps_call_handler(PSF(write), 2, args TSRMLS_CC); } zend_end_try(); ====== ------------------------------------------------------------------------ [2003-05-20 10:03:32] [EMAIL PROTECTED] Code being executed twice really sounds like a problem in the scripting engine to me. It could be caused or triggered by defects in the tool chain (buggy compiler optimizer, broken bison/flex). Please retest with current Stable snapshot from snaps.php.net. ------------------------------------------------------------------------ [2003-03-06 11:35:25] soletan at toxa dot de Damn, I got rid of that message Xuefer initially posted. All I had done was calling exit() before session could write back its data. Then I included session_write_close() before some exit. It's not that exit inside some session_set_save_handler-calling function. It's any exit at any place, I expect. Isn't it possible, to include this needed call to session_write_close() automatically in sources of exit() to avoid all that trouble I have been handling with for the last 24 hours??? It would be more convenient, doesn't it? BTW: I have PHP 4.3.1 as DSO to Apache 2.0.43 under SuSE Linux 7.1. The first two are both self-compiled from source. Best Regards, Thomas Urban ------------------------------------------------------------------------ [2003-02-07 17:15:20] rob at nospamplease dot com This appears (in our case anyway) to be triggered by the use of an "exit" statement in the session_set_save_handler session_write function. We had a benign error in our custom session_write function (caused by the session data not changing when it was writing out).. this caused an error message to be written to a log file, and then the "exit;" statement. In PHP 4.2, this exit apparently caused no problems but now it generates this seemingly unrelated error message. Incidently, because this message is generated at the time of session_write (rather than during actual content generation) it also caused an interaction with ob_gzhandler (gzip compression) such that blank pages were being served up.. we had to disable ob_gzhandler to even see the "A session is active..." messages.. This seems buggy to me. ------------------------------------------------------------------------ [2002-12-31 02:52:19] Xuefer at 21cn dot com i forgot to note that, this issue is random happend i can't reproduce it, but my user trigger it and i saw errors in log and my script is in production, it's too complex i am not able to give full script but my function look like: function mysessionstart() { if (session_id()) return session_set_save_handler( '_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc' ); session_start(); } it works fine until get warnning in php-4.3.0 here the config is: session.save_handler = files session.save_path = /tmp session.use_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.serialize_handler = php session.gc_probability = 1 session.gc_maxlifetime = 1440 containing ids. session.referer_check = session.entropy_length = 0 session.entropy_file = ;session.entropy_length = 16 ;session.entropy_file = /dev/urandom session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 1 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/21306 -- Edit this bug report at http://bugs.php.net/?id=21306&edit=1