#21306 [NoF->Opn]: [PATCH] warning about "cannot change the session settings"
| From: | Xuefer at 21cn dot com | Date: | Sat, 12 Feb 2005 08:23:37 +0000 |
| Subject: | #21306 [NoF->Opn]: [PATCH] warning about "cannot change the session settings" | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-73932@lists.php.net to get a copy of this message | ||
ID: 21306
User updated by: Xuefer at 21cn dot com
Reported By: Xuefer at 21cn dot com
-Status: No Feedback
+Status: Open
Bug Type: Session related
Operating System: linux
-PHP Version: 4.3.7
+PHP Version: PHP 4.3.11-dev
Assigned To: sas
New Comment:
confirmed with CVS
again, exit() in sess_write() cause this issue
other modules after session module is not shutdown properly
i don't see any fix in the php4-src/ext/session/ source
Previous Comments:
------------------------------------------------------------------------
[2005-02-02 01:00:06] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2005-01-25 15:28:30] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
------------------------------------------------------------------------
[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] sas@php.net
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
------------------------------------------------------------------------
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