Date: 12/06/00
- Next message: Stig S. Bakken: "[PHP-DEV] Re: /tests -> run-tests.php"
- Previous message: hholzgra <email protected>: "[PHP-DEV] PHP 4.0 Bug #8134 Updated: See the document ...."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
From: jacek.margos <email protected>
Operating system: SuSE Linux 2.2.16
PHP version: 3.0.16
PHP Bug Type: Misbehaving function
Bug description: persistent sockets do not work
Persistent socket connections cannot be re-used.
The first invocation of pfsockopen() works fine. But if I click on Reload button
(several times if more than one Apache process is running), the socket returned
by the function (got from a hash) cannot be used.
PHP 3.0.16 just dies without writing anything to the output (Netscape: "The
document contained no data", telnet localhost 80: "Connection closed by foreign
host" - without any output).
Apache log:
...
[Wed Dec 6 09:20:11 2000] [notice] Apache/1.3.12 (Unix) (SuSE/Linux) mod_fastcgi/2.2.2 balanced_by_mod_backhand/1.0.8 DAV/1.0.0 mod_perl/1.24 PHP/3.0.16 configured -- resuming normal operations
...
[Wed Dec 6 09:57:47 2000] [notice] child pid 24437 exit signal Segmentation fault (11)
...
Note: PHP 4.0.0 reports EOF on socket (function feof( $socket ) returns TRUE).
But "Segmentation faults" are being reported in the log file of Apache, too.
Note: there are several bug reports for similar problems: #6914, #7420, #7723.
#simple test script (/usr/local/httpd/htdocs/jacek/pfsockopen.php3):
<HTML>
<HEAD> <TITLE> test: pfsockopen </TITLE> </HEAD>
<BODY>
<?
// port = 7 is echo, works fine if using fsockopen() - not persistent
$socket = pfsockopen( "localhost", 7, $errno, $errstr, 10 );
if( ! $socket ) {
printf( "cannot connect: %d, %s\n<BR>\n", $errno, $errstr );
} else {
printf( "socket: %s\n<BR>\n", $socket );
if( feof( $socket ) ) {
printf( "EOF on socket\n<BR>\n" );
exit;
}
printf( "<TABLE BORDER=1>\n<TR>\n" );
printf( "\t<TD>Written</TD>\n\t<TD>Received</TD>\n</TR>\n" );
for( $i = 0; $i < 10; $i ++ ) {
$send = "i = $i\n";
fputs( $socket, $send );
printf( "<TR>\n\t<TD ALIGN=center>%s</TD>\n", chop( $send ) );
$rcvd = fgets( $socket, 80 );
printf( "\t<TD ALIGN=center>%s</TD>\n</TR>\n", chop( $rcvd ) );
}
printf( "</TABLE>\n" );
}
?>
</BODY>
</HTML>
Configure command (standard SuSE 7.0): ./configure
'--with-adabas=/usr/lib/adabas'
'--with-pgsql=/usr' '--with-mysql=yes'
'--enable-safe-mode'
'--enable-sysvsem'
'--enable-sysvshm'
'--enable-track-vars'
'--enable-magic-quotes'
'--enable-memory-limit'
'--enable-debugger'
'--enable-bcmath'
'--with-zlib=yes'
'--with-ttf'
'--with-imap=yes'
'--with-ldap=yes'
'--with-pdflib'
'--with-xml'
'--with-gd=yes'
'--with-yp'
'--with-jpeg-dir'
'--with-tiff-dir'
'--with-config-file-path=/etc/httpd'
'--with-apxs=/usr/sbin/apxs -ltiff -lnsl -lpdf -lpng'
'--with-exec-dir=/usr/lib/apache/bin'
'--with-apache=/usr/src/packages/BUILD/php-3.0.16/..'
'i386-suse-linux-gnu'
php3.ini file path is set to: /etc/httpd
Apache version (standard SuSE 7.0):
Server version: Apache/1.3.12 (Unix) (SuSE/Linux)
Server built: Jul 30 2000 22:47:29
PHP used as module.
output from strace -p <PID of an Apache process>:
read(5, "GET /jacek/pfsockopen.php3\r\n", 4096) = 28
rt_sigaction(SIGUSR1, {SIG_IGN}, {SIG_IGN}, 8) = 0
time(NULL) = 976096455
stat("/usr/local/httpd/htdocs/jacek/pfsockopen.php3", {st_mode=S_IFREG|0644,
st_size=748, ...}) = 0
lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd/htdocs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd/htdocs/jacek", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd/htdocs/jacek/pfsockopen.php3", {st_mode=S_IFREG|0644, st_size=748, ...}) = 0
gettimeofday({976096455, 747885}, NULL) = 0
stat("/usr/local/httpd/htdocs/jacek/pfsockopen.php3", {st_mode=S_IFREG|0644, st_size=748, ...}) = 0
lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd/htdocs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd/htdocs/jacek", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/local/httpd/htdocs/jacek/pfsockopen.php3", {st_mode=S_IFREG|0644, st_size=748, ...}) = 0
open("/usr/local/httpd/htdocs/jacek/pfsockopen.php3", O_RDONLY) = 7
fcntl(7, F_DUPFD, 15) = 19
close(7) = 0
umask(077) = 022
umask(022) = 077
chdir("/usr/local/httpd/htdocs/jacek") = 0
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={10, 0}}, NULL) = 0
rt_sigaction(SIGPROF, {0x402ebcb0, [], SA_INTERRUPT|0x4000000}, {0x402ebcb0, [], SA_INTERRUPT|0x4000000}, 8) = 0
old_mmap(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40887000
fcntl(19, F_GETFL) = 0 (flags O_RDONLY)
fstat64(19, {st_mode=S_IFREG|0644, st_size=748, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
_llseek(19, 0, [0], SEEK_CUR) = 0
ioctl(19, TCGETS, 0xbffff898) = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(19, TCGETS, 0xbffff818) = -1 ENOTTY (Inappropriate ioctl for device)
read(19, "<HTML>\n<HEAD> <TITLE> test: pfso"..., 8192) = 748
read(19, "", 4096) = 0
send(2433068, "i = 0\n", 6, 0) = -1 EBADF (Bad file descriptor)
--- SIGSEGV (Segmentation fault) ---
chdir("/usr/local/httpd") = 0
rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0
getpid() = 8944
kill(8944, SIGSEGV) = 0
sigreturn() = ? (mask now [])
--- SIGSEGV (Segmentation fault) ---
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: Stig S. Bakken: "[PHP-DEV] Re: /tests -> run-tests.php"
- Previous message: hholzgra <email protected>: "[PHP-DEV] PHP 4.0 Bug #8134 Updated: See the document ...."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

