php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #53841 occasionally dead loop in php_stream_url_wrap_http_ex/_php_stream_get_line
Submitted: 2011-01-26 04:06 UTC Modified: 2013-02-18 00:34 UTC
From: wxiaoguang at gmail dot com Assigned:
Status: No Feedback Package: HTTP related
PHP Version: php5.3-201102150730 OS: Linux
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: wxiaoguang at gmail dot com
New email:
PHP Version: OS:

 

 [2011-01-26 04:06 UTC] wxiaoguang at gmail dot com
Description:
------------
I am writing a php script running in crontab to read pages from many other sites. Sometimes the script eats 100% CPU and get into a dead loop. This problem occurs randomly, no dependence on special remote web servers.

It seems that the problem is in php5-5.2.17/ext/standard/http_fopen_wrapper.c around line 614.


When gdb is attached to the dead loop php process, the stack trace looks like:
(the url differs everytime, so I think the remote web servers are not related to this problem)

(gdb) bt
#0  0x0809ff78 in __i686.get_pc_thunk.bx ()
#1  0x082c4f11 in _php_stream_get_line (stream=0xcb512c4, buf=0xcb9536c "Date: Tue, 25 Jan 2011 ", maxlen=<error type>, 
    returned_len=0xbfffa428) at /usr/src/php5/source/php5-5.2.17/main/streams/streams.c:743
#2  0x08277084 in php_stream_url_wrap_http_ex (wrapper=0x85d06c8, path=0x8879f9c "http://www.xxxxxxxxx.com/xxxxxxxx.php", 
    mode=0x83c467f "rb", options=4, opened_path=0x0, context=0xcb4e290, redirect_max=20, flags=1)
    at /usr/src/php5/source/php5-5.2.17/ext/standard/http_fopen_wrapper.c:614
#3  0x08279120 in php_stream_url_wrap_http (wrapper=0x85d06c8, path=0x8879f9c "http://www.xxxxxxxxxxxxx.com/xxxxxxx.php", 
    mode=0x83c467f "rb", options=4, opened_path=0x0, context=0xcb4e290)
    at /usr/src/php5/source/php5-5.2.17/ext/standard/http_fopen_wrapper.c:782
#4  0x082c450f in _php_stream_open_wrapper_ex (path=0x8879f9c "http://www.xxxxxxxxx.com/xxxxxxxxx.php", 
    mode=0x83c467f "rb", options=12, opened_path=0x0, context=0xcb4e290)
    at /usr/src/php5/source/php5-5.2.17/main/streams/streams.c:1827
#5  0x08233513 in zif_file_get_contents (ht=3, return_value=0xcb81008, return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=1) at /usr/src/php5/source/php5-5.2.17/ext/standard/file.c:541
#6  0x08332b8b in zend_do_fcall_common_helper_SPEC (execute_data=0xbfffb32c)
    at /usr/src/php5/source/php5-5.2.17/Zend/zend_vm_execute.h:200
#7  0x0831ce30 in execute (op_array=0x87cb954) at /usr/src/php5/source/php5-5.2.17/Zend/zend_vm_execute.h:92
#8  0x0833244e in zend_do_fcall_common_helper_SPEC (execute_data=0xbfffb80c)
    at /usr/src/php5/source/php5-5.2.17/Zend/zend_vm_execute.h:234
#9  0x0831ce30 in execute (op_array=0x87cafd8) at /usr/src/php5/source/php5-5.2.17/Zend/zend_vm_execute.h:92
#10 0x0833244e in zend_do_fcall_common_helper_SPEC (execute_data=0xbfffc0dc)
    at /usr/src/php5/source/php5-5.2.17/Zend/zend_vm_execute.h:234
#11 0x0831ce30 in execute (op_array=0x8713608) at /usr/src/php5/source/php5-5.2.17/Zend/zend_vm_execute.h:92
#12 0x082f7530 in zend_execute_scripts (type=8, retval=0x0, file_count=3)
    at /usr/src/php5/source/php5-5.2.17/Zend/zend.c:1215
#13 0x082ac92f in php_execute_script (primary_file=0xbfffe4dc) at /usr/src/php5/source/php5-5.2.17/main/main.c:2058
#14 0x0837d573 in main (argc=2, argv=0xbfffe5c4) at /usr/src/php5/source/php5-5.2.17/sapi/cli/php_cli.c:1171


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2011-01-26 04:16 UTC] wxiaoguang at gmail dot com
My script uses file_get_contents to read other sites' pages. The number of pages to read is larger, this problem occurs more frequently. 

I didn't notice this problem when the number of pages to read is smaller than 100 (now I have more than 1000 pages to read, and meet this problem almost everyday)
 [2011-01-26 06:39 UTC] aharvey@php.net
-Status: Open +Status: Feedback
 [2011-01-26 06:39 UTC] aharvey@php.net
PHP 5.2 is no longer supported.

Does the same problem occur in PHP 5.3.5?
 [2011-02-03 07:17 UTC] wxiaoguang at gmail dot com
-Status: Feedback +Status: Closed
 [2011-02-03 07:17 UTC] wxiaoguang at gmail dot com
It seems no problem in 5.3
 [2011-02-15 09:49 UTC] wxiaoguang at gmail dot com
-Summary: occasionally dead loop in php_stream_url_wrap_http_ex +Summary: occasionally dead loop in php_stream_url_wrap_http_ex/_php_stream_get_line -Status: Closed +Status: Assigned -PHP Version: 5.2.17 +PHP Version: 5.3.5
 [2011-02-15 09:49 UTC] wxiaoguang at gmail dot com
It happens in php-5.3.5 again


0x083a4c49 in _php_stream_get_line (stream=0x88d5f28, buf=0x8c31948 "http://www.xxxxxxxxxxx.net/xxxxx.php", 
    maxlen=<error type>, returned_len=0x4) at /usr/src/php5.3/source/php5-5.3.5/main/streams/streams.c:862
862     /usr/src/php5.3/source/php5-5.3.5/main/streams/streams.c: No such file or directory.
        in /usr/src/php5.3/source/php5-5.3.5/main/streams/streams.c
(gdb) bt
#0  0x083a4c49 in _php_stream_get_line (stream=0x88d5f28, buf=0x8c31948 "http://www.xxxxxxxxxxx.net/xxxx.php", 
    maxlen=<error type>, returned_len=0x4) at /usr/src/php5.3/source/php5-5.3.5/main/streams/streams.c:862
#1  0x0833b034 in php_stream_url_wrap_http (wrapper=0x88d5f28, path=0x8c31948 "http://www.xxxxxxxxxx.net/xxxxxx.php", 
    mode=0x84c48d5 "rb", options=4, opened_path=0x0, context=0xba8c5cc)
    at /usr/src/php5.3/source/php5-5.3.5/ext/standard/http_fopen_wrapper.c:825
#2  0x083a4056 in _php_stream_open_wrapper_ex (path=0x8c31948 "http://www.xxxxxxxxxxx.net/xxxxxxx.php", 
    mode=0x84c48d5 "rb", options=12, opened_path=0x0, context=0xba8c5cc)
    at /usr/src/php5.3/source/php5-5.3.5/main/streams/streams.c:1864
#3  0x082fa6c6 in zif_file_get_contents (ht=3, return_value=0xa8baf84, return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=1) at /usr/src/php5.3/source/php5-5.3.5/ext/standard/file.c:557
#4  0x0822b180 in phar_file_get_contents (ht=3, return_value=0xa8baf84, return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=1) at /usr/src/php5.3/source/php5-5.3.5/ext/phar/func_interceptors.c:225
#5  0x0840d8f1 in execute_internal (execute_data_ptr=0x8a937b0, return_value_used=1)
    at /usr/src/php5.3/source/php5-5.3.5/Zend/zend_execute.c:1261
#6  0xb5c3f8fb in ?? () from /usr/lib/php5/20090626+lfs/suhosin.so
 [2011-02-15 09:50 UTC] wxiaoguang at gmail dot com
-Status: Assigned +Status: Open
 [2011-02-15 09:50 UTC] wxiaoguang at gmail dot com
reopen?
 [2011-02-15 09:56 UTC] pajoye@php.net
-Status: Open +Status: Feedback
 [2011-02-15 09:56 UTC] pajoye@php.net
Please try using this snapshot:

  http://snaps.php.net/php5.3-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/


 [2011-02-15 18:11 UTC] wxiaoguang at gmail dot com
-Status: Feedback +Status: Open -PHP Version: 5.3.5 +PHP Version: php5.3-201102150730
 [2011-02-15 18:11 UTC] wxiaoguang at gmail dot com
still occurs in php5.3-201102150730



When php eats much memory ( ~ 100M  it seems there are some memory leaks in the program? ), the problems occurs more easily.

In the program, I have a big loop to process thousands of web sites,
I use DOM/SimpleXML to parse xml data from every site and use GD to process some images.


0x0831db44 in _php_stream_get_line (stream=0xdfe6864, buf=0xdfe5ad8 "Set-Cookie: PHPSESSID=en", maxlen=1024, 
    returned_len=0xbfffd2e4) at /tmp/php5.3-201102150730/main/streams/streams.c:752
752     {
(gdb) bt
#0  0x0831db44 in _php_stream_get_line (stream=0xdfe6864, buf=0xdfe5ad8 "Set-Cookie: PHPSESSID=en", maxlen=1024, 
    returned_len=0xbfffd2e4) at /tmp/php5.3-201102150730/main/streams/streams.c:752
#1  0x082e6a71 in php_stream_url_wrap_http_ex (wrapper=0x86aef20, path=0x89604cc "http://www.xxxxxxx.com/xxxxxxxx.php", 
    mode=0x842f567 "rb", options=<value optimized out>, opened_path=0x0, context=0xcbfcd08, redirect_max=20, flags=1)
    at /tmp/php5.3-201102150730/ext/standard/http_fopen_wrapper.c:723
#2  0x082e95c4 in php_stream_url_wrap_http (wrapper=0x86aef20, path=0x89604cc "http://www.xxxxxxx.com/xxxxxxxx.php", 
    mode=0x842f567 "rb", options=4, opened_path=0x0, context=0xcbfcd08)
    at /tmp/php5.3-201102150730/ext/standard/http_fopen_wrapper.c:925
#3  0x0831d265 in _php_stream_open_wrapper_ex (path=0x89604cc "http://www.xxxxxxx.com/xxxxxxxx.php", 
    mode=0x842f567 "rb", options=4, opened_path=0x0, context=0xcbfcd08)
    at /tmp/php5.3-201102150730/main/streams/streams.c:1868
#4  0x082ad0be in zif_file_get_contents (ht=3, return_value=0xdb435dc, return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=1) at /tmp/php5.3-201102150730/ext/standard/file.c:557
#5  0x081f6382 in phar_file_get_contents (ht=3, return_value=0xdb435dc, return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=1) at /tmp/php5.3-201102150730/ext/phar/func_interceptors.c:225
#6  0x083a35c9 in zend_do_fcall_common_helper_SPEC (execute_data=0x882bdcc)
    at /tmp/php5.3-201102150730/Zend/zend_vm_execute.h:316
#7  0x0838292e in execute (op_array=0x88ecb14) at /tmp/php5.3-201102150730/Zend/zend_vm_execute.h:107
#8  0x083580b6 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /tmp/php5.3-201102150730/Zend/zend.c:1194
#9  0x08306c57 in php_execute_script (primary_file=0xbffff924) at /tmp/php5.3-201102150730/main/main.c:2268
#10 0x083db742 in main (argc=2, argv=0xbffffa84) at /tmp/php5.3-201102150730/sapi/cli/php_cli.c:1193
(gdb)
 [2011-06-13 03:02 UTC] felipe@php.net
-Status: Open +Status: Feedback
 [2011-06-13 03:02 UTC] felipe@php.net
Please try using this snapshot:

  http://snaps.php.net/php5.3-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/


 [2013-02-18 00:34 UTC] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 17:01:29 2024 UTC