ID:               21306
 User updated by:  Xuefer at 21cn dot com
 Reported By:      Xuefer at 21cn dot com
 Status:           Closed
 Bug Type:         Session related
 Operating System: linux
 PHP Version:      5CVS, 4CVS, 6CVS (2005-09-16)
 Assigned To:      sas
 New Comment:

i can confirm it's fixed, thanks


Previous Comments:
------------------------------------------------------------------------

[2005-09-23 10:17:03] [EMAIL PROTECTED]

Patch committed.

------------------------------------------------------------------------

[2005-09-21 10:29:19] [EMAIL PROTECTED]

Does THIS fix it:

  http://www.php.net/~jani/patches/bug21306.patch

???


------------------------------------------------------------------------

[2005-09-21 04:25:24] Xuefer at 21cn dot com

yeah, all modules is rshutdown correctly. but sorry.. the session error
messages is still there, let's check the source

PHP_RSHUTDOWN_FUNCTION(session)
{   
    zend_try {
        php_session_flush(TSRMLS_C); <- bailout, function is partly
executed, do we care? let's step inside
        php_rshutdown_session_globals(TSRMLS_C); <- not executed
    } zend_end_try();
...
}
static void php_session_flush(TSRMLS_D)
{
    if(PS(session_status)==php_session_active) {
        php_session_save_current_state(TSRMLS_C); <- bailout, function
is partly executed, but we don't care
        PS(session_status)=php_session_none; <- not executed. oops!
this is important for SESSION_CHECK_ACTIVE_STATE
    }
}


i realize that, my patch to zend_API.c make sure every modules's
rshutdown handler is called, but can't make sure the rshutdown itself
is completed.

------------------------------------------------------------------------

[2005-09-20 23:04:57] [EMAIL PROTECTED]

Fixed in PHP_4_4, PHP_5_1 and HEAD branches with this patch:

diff -u -r1.417 session.c
--- session.c   3 Aug 2005 14:07:44 -0000       1.417
+++ session.c   20 Sep 2005 20:54:26 -0000
@@ -1807,8 +1807,11 @@
 
 PHP_RSHUTDOWN_FUNCTION(session)
 {
-       php_session_flush(TSRMLS_C);
-       php_rshutdown_session_globals(TSRMLS_C);
+       zend_try {
+               php_session_flush(TSRMLS_C);
+               php_rshutdown_session_globals(TSRMLS_C);
+       } zend_end_try();
+
        return SUCCESS;
 }
 /* }}} */

Let me know if this doesn't fix the issue. (hard for me to confirm
since I can't even reproduce it :)


------------------------------------------------------------------------

[2005-09-20 16:11:44] Xuefer at 21cn dot com

about ps_call_handler:
hrm.. no idea if any other module/session handler have to be "no
bailout" and/or "might bailout". i can only bring the problem up.

------------------------------------------------------------------------

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

Reply via email to