ID:               22474
 Comment by:       kxrm at hotmail dot com
 Reported By:      chuck at fuck dot org
 Status:           No Feedback
 Bug Type:         Filesystem function related
 Operating System: FreeBSD 4.7
 PHP Version:      5CVS-2003-02-28 (dev)
 New Comment:

I am also experiencing this problem with Redhat 7.3

I do not have a debug install however but here are the results of the
backtrace.

Program received signal SIGPIPE, Broken pipe.
[Switching to Thread 1024 (LWP 11094)]
0x420e83b2 in send () from /lib/i686/libc.so.6
(gdb) bt full
#0  0x420e83b2 in send () from /lib/i686/libc.so.6
No symbol table info available.
#1  0x08176350 in php_sockop_write ()
No symbol table info available.
#2  0x0817296d in _php_stream_write ()
No symbol table info available.
#3  0x0811a67a in zif_fwrite ()
No symbol table info available.
#4  0x081a6321 in execute ()
No symbol table info available.
#5  0x08192ee8 in zend_execute_scripts ()
No symbol table info available.
#6  0x08169681 in php_execute_script ()
No symbol table info available.
#7  0x081b64bc in main ()
No symbol table info available.
#8  0x42017589 in __libc_start_main () from /lib/i686/libc.so.6
No symbol table info available.

It doesn't lockup when in gdb it just displays the broken pipe error,
but when running normally it does lockup.


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

[2003-03-16 01:00:01] php-bugs at lists dot php dot net

No feedback was provided for this bug for over 2 weeks, 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".

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

[2003-02-28 10:31:45] [EMAIL PROTECTED]

Can you provide a bit more information?

I want to see a script like this:

<?php
$fp = fsockopen($host, $port, $err, $errstr, 10);
if (!$fp) {
   die("Connection failed: $err $errstr);
}
stream_set_timeout($fp, 15);
$n = fwrite($fp, "data");
var_dump($n);

fclose($fp);
?>

But please fill in the $host and $port with addresses that I can use
from my machine(s) so that I can try and replicate.

Alternatively, please read the docs here
http://bugs.php.net/bugs-generating-backtrace.php
and generate a backtrace from within the fwrite() when it is eating up
the cpu:

Compile php with --enable-debug first then:

gdb ./sapi/cli/php
run myscript.php
[ wait for it to "hang" ]
[ press CTRL-C ]
bt full

Please post the backtrace at a URL and enter the link into this
report.

If you can provide a reproducing script AND a backtrace, that is even
more useful.


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

[2003-02-28 06:34:23] chuck at fuck dot org

When using a fsockopen resource that has been accepted, but is
non-responsive, fwrite will use as much cpu as it can before the
program is terminated by the time limit.

 if(false===([EMAIL PROTECTED]("tcp://$a", 1080, $err, $errstr, 10)))
return false;
 $conn=pack('ccnN', '4', 1, 25, ip2long($ip)) .pack('a',$socksusers);
 stream_set_timeout($a, 15);

 if(!socks_write($a,$conn,9)) return false;

function socks_write(&$a,$b,$c=false) {
 $tmp=fwrite($a,$b,$c);
 if($c != $tmp) return false;
 return true;
}


This program will freeze at the fwrite command.
I've had this happen on PHP 4.3.0 and CVS

It only occurs when specific servers are addressed in the fsockopen.
While I understand the server may be responding with garbage data, the
fsockopen should not be returning the connection as success. Even with
that case, I don't see reason for the fwrite to hang with high cpu
usage.



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


-- 
Edit this bug report at http://bugs.php.net/?id=22474&edit=1

Reply via email to