ID:               38757
 User updated by:  davidb at pins dot net
 Reported By:      davidb at pins dot net
-Status:           Feedback
+Status:           Open
 Bug Type:         Apache related
 Operating System: Solaris 8
 PHP Version:      5.1.6
 Assigned To:      dmitry
 New Comment:

Greetings.

Is the poll() timing out, even though it appeared to get all of the
data in fd4?  Or, is there additional data that isn't getting passed on
for some reason?  I can send the entire truss if you'd like.

We're running Apache 1.3.33, Solaris 8, on a dual-processor SPARC.  I
believe it's the 2.4.2 FastCGI.  I do note that the read() that a valid
post gets is different.

In a good truss:

poll(0xFFBED8F0, 1, 1000)                       = 1
read(4, "0101\001\0\b\0\0", 8)                  = 8
read(4, "\001\0\0\0\0\0\0", 8)                  = 8
read(4, "0104\001\015\0\0", 8)                  = 8
read(4, 0xFFBDD918, 21)                         = 21
  0E05 C O N T E N T _ L E N G T H 6 1 0 1 5
read(4, "0104\001\0 V\0\0", 8)                  = 8
read(4, 0xFFBDD918, 86)                         = 86
  \f H C O N T E N T _ T Y P E m u l t i p a r t / f o r m - d a t
   a ;   b o u n d a r y = - - - - - - - - - - - - - - - - - - - -
   - - - - - - - 1 9 1 9 4 1 1 2 6 6 2 0 5 9 7
read(4, "0104\001\0 =\0\0", 8)                  = 8
read(4, 0xFFBDD918, 61)                         = 61
  \r . D O C U M E N T _ R O O T / e x p o r t / h t t p d / D O M
   A I N S / t e s t 2 . f o r w a r d . c o m / h t d o c s

The poll seems to return with a 1, but the data that's read in is the
same.  Is there something about the submit from different users that
would cause the poll() to return differently?  I have network snoops,
as well.


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

[2006-09-11 07:55:00] [EMAIL PROTECTED]

>From the strace log I see: PHP FastCGI server accepts connection and
waits 1 sec (in pool()) for any input from HTTP client. It doesn't get
any data in a second and does save connection close.

Could you describe your environment: CPU speed, WebServer, fastcgi
plugin, fastcgi configuraion...


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

[2006-09-09 21:09:16] [EMAIL PROTECTED]

Dmitry, could you plz check it out?

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

[2006-09-09 02:05:01] davidb at pins dot net

Well, I tried with the latest 5.2b snapshot, and now it's broken for my
PC at home also.  Appears to be the identical problem - php just
silently stops processing after it reads in the POST data, closes the
socket, and then waits for the next request, throwing a 500 server
error.

Please.

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

[2006-09-08 22:09:08] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip



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

[2006-09-08 22:04:15] davidb at pins dot net

Description:
------------
Greetings.

I'm currently observing a reproducible version of bug #26647 in the PHP
5.1 train.  For a subset of users running mostly Mac but some PC
browsers, the PHP process unceremoniously exists witout comment when
the form is POST'ed.  A truss of the PHP FastCGI process shows PHP
reading in the text (incidently, it's also pointed out a performance
issue where php's doing a read() of 8 bytes at a time from the FastCGI
stream instead of 8kB at at a time, but I digress).  The problem
appears to go away when I switch to a non-FastCGI version.

The broken users are broken consistently - it would be possible (and
easy) to gdb trace it and see why it's exiting.  Here's the start/end
of the truss:

accept(0, 0xFFBEDA50, 0xFFBED99C, 1)            = 4
fcntl(0, F_SETLK, 0xFFBEDA28)                   = 0
poll(0xFFBED8F0, 1, 1000)                       = 0
shutdown(4, 1, 1)                               = 0
recv(4, "0101\001\0\b\0\0", 8, 0)               = 8
recv(4, "\001\0\0\0\0\0\0", 8, 0)               = 8
recv(4, "0104\001\015\0\0", 8, 0)               = 8
recv(4, "0E05 C O N T E N", 8, 0)               = 8
recv(4, " T _ L E N G T H", 8, 0)               = 8
recv(4, " 8 3 5 1 90104\0", 8, 0)               = 8
recv(4, "01\0 d\0\0\f V C", 8, 0)               = 8
recv(4, " O N T E N T _ T", 8, 0)               = 8
recv(4, " Y P E m u l t i", 8, 0)               = 8
recv(4, " p a r t / f o r", 8, 0)               = 8
recv(4, " m - d a t a ;  ", 8, 0)               = 8
recv(4, " b o u n d a r y", 8, 0)               = 8
recv(4, " m L b O u N d A", 8, 0)               = 8
(many many lines)
recv(4, " r Y - -\r\n0105", 8, 0)               = 8
recv(4, "\001\0\0\0\0", 8, 0)                   = 6
recv(4, 0xFFBEDA28, 8, 0)                       = 0
close(4)                                        = 0
fcntl(0, F_SETLKW, 0xFFBEDA28)                  = 0
accept(0, 0xFFBEDA50, 0xFFBED99C, 1) (sleeping...)

Bam.  Goodbye.  No error, no nothing.



Reproduce code:
---------------
<html>
<head>
</head>
<body>
<form method="post" action="response.php"
enctype="multipart/form-data">
        <input name="test" type="file">
        <input name="submit" value="submit" type="submit" />
</form>
</body>
</html>

Expected result:
----------------
The response.php should work - note, however, that php never even
attempts to open the response.php file, which is just a trivial "file
uploaded" message, no attempt to save.

Actual result:
--------------
See above truss - php just exits.


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


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

Reply via email to