|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-04-07 19:41 UTC] pbxanime at gmail dot com
Description:
------------
I use the latest stable XCache and the latest stable Lighttpd.
I store sessions with memcache:
session.save_handler = memcache
session.save_path = "unix:///tmp/memcached.socket:0?persistent=1&weight=1&timeout=1&retry_interval=15"
php is compiled with the following, I removed directories, but they are correctly linked:
./configure \
--disable-fileinfo \
--disable-pdo \
--enable-exif \
--enable-fpm \
--enable-ftp \
--enable-gd-native-ttf \
--enable-libxml \
--enable-mbstring \
--enable-zip \
--prefix= \
--with-apxs2= \
--with-bz2 \
--with-curl= \
--with-freetype-dir= \
--with-gd \
--with-gettext \
--with-imap= \
--with-imap-ssl= \
--with-jpeg-dir= \
--with-png-dir= \
--with-kerberos \
--with-libxml-dir= \
--with-mcrypt= \
--with-mysql= \
--with-mysql-sock= \
--with-mysqli= \
--with-openssl= \
--with-openssl-dir= \
--with-pcre-regex= \
--with-png-dir= \
--with-xpm-dir= \
--with-zlib \
--with-zlib-dir=
Test script:
---------------
I store sessions like this:
IF (!ISSET($_SESSION)) {
SESSION_START();
}
IF($_SESSION['user_session_last_access']+180 < TIME()){
$_SESSION['user_session_last_access'] = TIME();
}
It's nothing special and it works normally.
Actual result:
--------------
I don't know how to dupicate this bug, it just happens randomly every few to several hours:
FPM Log:
[07-Apr-2013 08:35:05.926454] DEBUG: pid 25374, fpm_got_signal(), line 72: received SIGCHLD
[07-Apr-2013 08:35:05.926552] WARNING: pid 25374, fpm_children_bury(), line 252: [pool ] child 534 exited on signal 11 (SIGSEGV - core dumped) after 34.242946 seconds from start
[07-Apr-2013 08:35:05.926939] NOTICE: pid 25374, fpm_children_make(), line 421: [pool ] child 575 started
[07-Apr-2013 08:35:05.926980] DEBUG: pid 25374, fpm_event_loop(), line 411: event module triggered 1 events
Backtrace:
#0 0x08304f47 in _php_stream_write (stream=0x9556b88,
buf=0xb77c5000 "set 0b58f7308927b881bd2d5273f0dc8de7 0 1440 38\r\nuser_session_last_access|i:1365338080;\r\n", count=88)
at /usr/src/php-5.4.13/main/streams/streams.c:1238
1238 if (buf == NULL || count == 0 || stream->ops->write == NULL) {
(gdb) bt
#0 0x08304f47 in _php_stream_write (stream=0x9556b88,
buf=0xb77c5000 "set 0b58f7308927b881bd2d5273f0dc8de7 0 1440 38\r\nuser_session_last_access|i:1365338080;\r\n", count=88)
at /usr/src/php-5.4.13/main/streams/streams.c:1238
#1 0x00764506 in ?? ()
#2 0x09556b88 in ?? ()
#3 0xb77c5000 in ?? ()
#4 0x00000058 in ?? ()
#5 0xbfb79f0e in ?? ()
#6 0x00000000 in ?? ()
(gdb) frame 0
#0 0x08304f47 in _php_stream_write (stream=0x9556b88,
buf=0xb77c5000 "set 0b58f7308927b881bd2d5273f0dc8de7 0 1440 38\r\nuser_session_last_access|i:1365338080;\r\n", count=88)
at /usr/src/php-5.4.13/main/streams/streams.c:1238
1238 if (buf == NULL || count == 0 || stream->ops->write == NULL) {
Another Backtrace:
#0 _php_stream_write_filtered (stream=0x95564a8, buf=0x96c9100 "", count=3216473280, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177
1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp,
(gdb) bt
#0 _php_stream_write_filtered (stream=0x95564a8, buf=0x96c9100 "", count=3216473280, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177
#1 0x007620bb in ?? ()
#2 0x00000000 in ?? ()
(gdb) frame 0
#0 _php_stream_write_filtered (stream=0x95564a8, buf=0x96c9100 "", count=3216473280, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177
1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp,
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 16:00:01 2025 UTC |
here's php -v: PHP 5.4.13 (cli) (built: Apr 2 2013 15:57:48) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies I turned off Xcache and here's results from 5 different core dumps spanning 5 hours: #0 0x08304f47 in _php_stream_write (stream=0x90f5b08, buf=0xb77495bc "set 34e0f7080b10afd7af2e03e9b1536c33 0 1440 38\r\nuser_session_last_access|i:1365458365;\r\n", count=88) at /usr/src/php-5.4.13/main/streams/streams.c:1238 1238 if (buf == NULL || count == 0 || stream->ops->write == NULL) { ---------------------------- #0 0x04939510 in ?? () (gdb) bt #0 0x04939510 in ?? () #1 0x08303995 in _php_stream_write_buffer (stream=0x90f5b18, buf=0x95e6958 "get 8185df46afa3fa484826ee530507445e\r\n", count=38) at /usr/src/php-5.4.13/main/streams/streams.c:1134 #2 0x009a00bb in ?? () #3 0x090f5b18 in ?? () #4 0x095e6958 in ?? () #5 0x00000026 in ?? () #6 0x082f5029 in spprintf (pbuf=0x95e9374, max_len=3214955994, format=0x20 <Address 0x20 out of bounds>) at /usr/src/php-5.4.13/main/spprintf.c:818 #7 0x009a346a in ?? () #8 0x095e9374 in ?? () #9 0xbfa055da in ?? () #10 0x00000020 in ?? () #11 0xbfa055da in ?? () #12 0x00000000 in ?? () (gdb) frame 1 #1 0x08303995 in _php_stream_write_buffer (stream=0x90f5b18, buf=0x95e6958 "get 8185df46afa3fa484826ee530507445e\r\n", count=38) at /usr/src/php-5.4.13/main/streams/streams.c:1134 1134 justwrote = stream->ops->write(stream, buf, towrite TSRMLS_CC); (gdb) frame 6 #6 0x082f5029 in spprintf (pbuf=0x95e9374, max_len=3214955994, format=0x20 <Address 0x20 out of bounds>) at /usr/src/php-5.4.13/main/spprintf.c:818 818 cc = vspprintf(pbuf, max_len, format, ap); ---------------------------- #0 0x08304eb3 in _php_stream_write_filtered (stream=0x90992a0, buf=<value optimized out>, count=3214964224, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp, (gdb) bt #0 0x08304eb3 in _php_stream_write_filtered (stream=0x90992a0, buf=<value optimized out>, count=3214964224, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 #1 0x009a2506 in ?? () #2 0x00000000 in ?? () (gdb) frame 0 #0 0x08304eb3 in _php_stream_write_filtered (stream=0x90992a0, buf=<value optimized out>, count=3214964224, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp, ---------------------------- #0 0x30320032 in ?? () (gdb) bt #0 0x30320032 in ?? () #1 0x08304ee5 in _php_stream_write_filtered (stream=0x90f5b18, buf=<value optimized out>, count=<value optimized out>, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 #2 0x009a00bb in ?? () #3 0x00000000 in ?? () (gdb) frame 1 #1 0x08304ee5 in _php_stream_write_filtered (stream=0x90f5b18, buf=<value optimized out>, count=<value optimized out>, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp, ---------------------------- #0 0x08304eb3 in _php_stream_write_filtered (stream=0x9098890, buf=<value optimized out>, count=3214964224, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp, (gdb) bt #0 0x08304eb3 in _php_stream_write_filtered (stream=0x9098890, buf=<value optimized out>, count=3214964224, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 #1 0x009a2506 in ?? () #2 0x00000000 in ?? () (gdb) frame 0 #0 0x08304eb3 in _php_stream_write_filtered (stream=0x9098890, buf=<value optimized out>, count=3214964224, flags=0) at /usr/src/php-5.4.13/main/streams/streams.c:1177 1177 status = filter->fops->filter(stream, filter, brig_inp, brig_outp,Well I commented out memcache as save_handler in php.ini and went back to saving sessions by files. And I haven't had php crash on me since, the output is below for the .diff file. my problem had to do with memcache though, the php pecl version i'm running is memcache-2.2.7. It almost doesn't make sense though, because now I have 300 plus session files that only take up 15KB total space. And if that's all it was taking up in memcache, I don't know why it would cause php to crash. cat /usr/src/php-5.4.14/ext/session/tests/rfc1867.diff: 001+ Fatal error: Unknown: No storage module chosen - failed to initialize session in Unknown on line 0 001- string(%d) "rfc1867-tests" 002- bool(true) 003- array(2) { 004- [%u|b%"file1"]=> 005- array(5) { 006- [%u|b%"name"]=> 007- %string|unicode%(9) "file1.txt" 008- [%u|b%"type"]=> 009- %string|unicode%(0) "" 010- [%u|b%"tmp_name"]=> 011- %string|unicode%(%d) "%s" 012- [%u|b%"error"]=> 013- int(0) 014- [%u|b%"size"]=> 015- int(1) 016- } 017- [%u|b%"file2"]=> 018- array(5) { 019- [%u|b%"name"]=> 020- %string|unicode%(9) "file2.txt" 021- [%u|b%"type"]=> 022- %string|unicode%(0) "" 023- [%u|b%"tmp_name"]=> 024- %string|unicode%(%d) "%s" 025- [%u|b%"error"]=> 026- int(0) 027- [%u|b%"size"]=> 028- int(1) 029- } 030- } 031- array(5) { 032- [%u|b%"start_time"]=> 033- int(%d) 034- [%u|b%"content_length"]=> 035- int(%d) 036- [%u|b%"bytes_processed"]=> 037- int(%d) 038- [%u|b%"done"]=> 039- bool(true) 040- [%u|b%"files"]=> 041- array(2) { 042- [0]=> 043- array(7) { 044- [%u|b%"field_name"]=> 045- %unicode|string%(5) "file1" 046- [%u|b%"name"]=> 047- %unicode|string%(9) "file1.txt" 048- [%u|b%"tmp_name"]=> 049- %unicode|string%(%d) "%s" 050- [%u|b%"error"]=> 051- int(0) 052- [%u|b%"done"]=> 053- bool(true) 054- [%u|b%"start_time"]=> 055- int(%d) 056- [%u|b%"bytes_processed"]=> 057- int(1) 058- } 059- [1]=> 060- array(7) { 061- [%u|b%"field_name"]=> 062- %unicode|string%(5) "file2" 063- [%u|b%"name"]=> 064- %unicode|string%(9) "file2.txt" 065- [%u|b%"tmp_name"]=> 066- %unicode|string%(%d) "%s" 067- [%u|b%"error"]=> 068- int(0) 069- [%u|b%"done"]=> 070- bool(true) 071- [%u|b%"start_time"]=> 072- int(%d) 073- [%u|b%"bytes_processed"]=> 074- int(1) 075- } 076- } 077- }