#46194 [Ctl->Fbk]: SIGSEGV when requested file is not found
| From: | cellog@php.net | Date: | Mon, 29 Sep 2008 13:02:10 +0000 |
| Subject: | #46194 [Ctl->Fbk]: SIGSEGV when requested file is not found | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-129329@lists.php.net to get a copy of this message | ||
ID: 46194
Updated by: cellog@php.net
Reported By: xuefer at gmail dot com
-Status: Critical
+Status: Feedback
Bug Type: PHAR related
Operating System: linux
PHP Version: 5.3CVS-2008-09-29 (CVS)
-Assigned To:
+Assigned To: cellog
New Comment:
Please try this simple patch found at
http://pear.php.net/~greg/fixbug46194.patch.txt
Index: ext/phar/phar.c
===================================================================
RCS file: /repository/php-src/ext/phar/phar.c,v
retrieving revision 1.370.2.45
diff -u -r1.370.2.45 phar.c
--- ext/phar/phar.c 13 Sep 2008 22:30:55 -0000 1.370.2.45
+++ ext/phar/phar.c 29 Sep 2008 13:00:22 -0000
@@ -3286,6 +3286,9 @@
int failed;
phar_archive_data *phar;
+ if (!file_handle || !file_handle->filename) {
+ return phar_orig_compile_file(file_handle, type
TSRMLS_CC);
+ }
if (strstr(file_handle->filename, ".phar") &&
!strstr(file_handle->filename, "://")) {
if (SUCCESS ==
phar_open_from_filename(file_handle->filename,
strlen(file_handle->filename), NULL, 0, 0, &phar, NULL TSRMLS_CC)) {
if (phar->is_zip || phar->is_tar) {
Previous Comments:
------------------------------------------------------------------------
[2008-09-29 11:13:16] jani@php.net
Seems to be PHAR related issue (once again) so the quick fix: disable
phar. This is quite critical bug..
------------------------------------------------------------------------
[2008-09-29 03:13:05] xuefer at gmail dot com
Description:
------------
i have setup lighttpd + fastcgi + php, it used to work with old php but
not with 5.3 (not sure about 5.2)
"localhost:1026" => (
"host" => "127.0.0.1", "port" => 2048,
"check-local" => "disable", "disable-time" => 1,
"broken-scriptfilename" => "enable",
),
be aware that it is check-local => disable, which mean lighttpd won't
check if the file is exists but will forward the request to php anyway
when i try to request a non existing file, php SIGSEGV
Program received signal SIGSEGV, Segmentation fault.
0x4b319f51 in strstr () from /lib/libc.so.6
(gdb) bt
#0 0x4b319f51 in strstr () from /lib/libc.so.6
#1 0x082292c1 in phar_compile_file (file_handle=0xbfec434c, type=8) at
/home/xuefer/src/php/php5/ext/phar/phar.c:3294
#2 0x0849d9b2 in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at /home/xuefer/src/php/php5/Zend/zend.c:1189
#3 0x08433dbb in php_execute_script (primary_file=0xbfec434c) at
/home/xuefer/src/php/php5/main/main.c:2080
#4 0x0852e362 in main (argc=3, argv=0xbfec44b4) at
/home/xuefer/src/php/php5/sapi/cgi/cgi_main.c:1980
(gdb) up
#1 0x082292c1 in phar_compile_file (file_handle=0xbfec434c, type=8) at
/home/xuefer/src/php/php5/ext/phar/phar.c:3294
3294 if (strstr(file_handle->filename, ".phar") &&
!strstr(file_handle->filename, "://")) {
(gdb) p file_handle[0]
$2 = {type = ZEND_HANDLE_FILENAME, filename = 0x0, opened_path = 0x0,
handle = {fd = 0, fp = 0x0, stream = {handle = 0x0, isatty = 0,
mmap = {len = 0, pos = 1, map = 0x83f, buf = 0xb7f14878
"j®\t\b\020ii\r", old_handle = 0xb7f15000, old_closer = 0x807ba17},
reader = 0x4b2b9840, fsizer = 0x805f4a4, closer = 0x1}},
free_filename = 0 '\0'}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=46194&edit=1