ID:               35886
 User updated by:  chris at lodesys dot com
 Reported By:      chris at lodesys dot com
-Status:           Feedback
+Status:           Open
 Bug Type:         Streams related
 Operating System: win32 only
 PHP Version:      5CVS-2006-01-03 (snap)
 Assigned To:      wez
 New Comment:

The example test file is C:/php/news.txt (part of the PHP Windows
distribution).  It is 74 KB (75,800 bytes).  Was having problems with
files larger than that (say up to 170 KB).  Didn't test with extra
large files.


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

[2006-02-08 00:50:26] [EMAIL PROTECTED]

How big is the file?

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

[2006-01-05 12:32:42] [EMAIL PROTECTED]

Assigned to the maintainer.

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

[2006-01-05 02:21:26] [EMAIL PROTECTED]

OK, the problem is in the MapViewOfFile() call in
php_stdiop_set_option(), because it is mapping less data than we've
asked.
It seems a windows problem to me, but I'm leaving open because this can
be a serious bug (although I'm not able to fix it..).

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

[2006-01-05 00:26:24] [EMAIL PROTECTED]

OK, back from the school exams, the problem seems to be in
php_stdiop_set_option(), because it is allocating one less byte than it
should. (and that mmap code is specific for windows).

I'll try to investigate the problem further and produce a patch.

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

[2006-01-03 20:01:56] chris at lodesys dot com

Description:
------------
This one is weird.  For some value of offset & maxlen,
file_get_contents will fail and crash PHP. (I'm running under Apache
1.3.34 and get a Dr. Watson).  The combination may have something to do
with offset + maxlen just above 4096, but even that's not consistant.

Reproduce code:
---------------
$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 500, 3596);  //
WORKS

$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 500, 3597);  //
FAILS

$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 500, 4096);  //
FAILS

$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 500, 4097);  //
WORKS


$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 1000, 4096);  //
FAILS

$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 1000, 4097);  //
WORKS

$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 0, 4096);  //
WORKS

$x = file_get_contents("C:/php/news.txt", FALSE, NULL, 0, 4097);  //
WORKS


Expected result:
----------------
All combinations of offset & maxlen should work as news.txt is 74 KB
long. 

Actual result:
--------------
PHP fails in some instances (see above) with Dr. Watson reporting
"Application exception occurred: App:  (pid=1828)[apache.exe] Exception
number: c0000005 (access violation)"

Using 


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


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

Reply via email to