Bug #66675 [NEW]: sometimes segfault while processing .js as .php
| From: | phpreq at byom dot de | Date: | Sat, 08 Feb 2014 20:25:07 +0000 |
| Subject: | Bug #66675 [NEW]: sometimes segfault while processing .js as .php | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-184211@lists.php.net to get a copy of this message | ||
From: phpreq at byom dot de
Operating system: Debian 7.2 x64
PHP version: 5.5.9
Package: *General Issues
Bug Type: Bug
Bug description: sometimes segfault while processing .js as .php
Description:
------------
Hi,
In my setup (Debian Wheezy 64 Bit, Kernel 3.12, Apache 2.4.7, php 5.5.9,
gcc Debian 4.7.2-5)
I let php also parse and execute .js - files as some very few contain
php-code to have dynamically created .js files.
Done with: AddType application/x-httpd-php js
Apache segfaults about 5-6 times a day.
Doing a backtrace shows me that only files that end with .js cause the
segfault.
The files are typically stock .js-files from a wordpress 3.8.1
installation. Parsing them by php shouldn't be a problem, especially as
they don't contain any <? ?>. But it seems there is a problem with the
file-buf as seen in gdb's frame 4: error: Cannot access memory at
address 0x100000001.
See the output of gdb:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f653a6948ef in i_create_execute_data_from_op_array (nested=0
'\000', op_array=0x7f6540403148)
at /usr/local/src/php-5.5.9/Zend/zend_execute.c:1631
1631 EX(prev_execute_data) =
EG(current_execute_data);
(gdb) bt
#0 0x00007f653a6948ef in i_create_execute_data_from_op_array (nested=0
'\000', op_array=0x7f6540403148)
at /usr/local/src/php-5.5.9/Zend/zend_execute.c:1631
#1 zend_execute (op_array=0x7f6540403148) at
/usr/local/src/php-5.5.9/Zend/zend_vm_execute.h:388
#2 zend_execute (op_array=0x7f6540403148) at
/usr/local/src/php-5.5.9/Zend/zend_vm_execute.h:383
#3 0x00007f653a5e7b69 in zend_execute_scripts (type=type@entry=2,
retval=0x0, retval@entry=0x2201a60,
file_count=file_count@entry=1) at
/usr/local/src/php-5.5.9/Zend/zend.c:1316
#4 0x00007f653a698105 in php_handler (r=0x21f1770)
at /usr/local/src/php-5.5.9/sapi/apache2handler/sapi_apache2.c:669
#5 0x000000000044ee50 in ap_run_handler (r=0x21f1770) at config.c:170
#6 0x000000000044f42b in ap_invoke_handler (r=r@entry=0x21f1770) at
config.c:439
#7 0x000000000046354a in ap_process_async_request (r=0x21f1770) at
http_request.c:317
#8 0x00000000004637ff in ap_process_request (r=r@entry=0x21f1770) at
http_request.c:363
#9 0x000000000045fe05 in ap_process_http_sync_connection (c=0x21e18e0)
at http_core.c:190
#10 ap_process_http_connection (c=0x21e18e0) at http_core.c:231
#11 0x0000000000458460 in ap_run_process_connection (c=0x21e18e0) at
connection.c:41
#12 0x0000000000458860 in ap_process_connection (c=c@entry=0x21e18e0,
csd=<optimized out>) at connection.c:202
#13 0x000000000046986b in child_main
(child_num_arg=child_num_arg@entry=2) at prefork.c:704
#14 0x0000000000469a77 in make_child (s=0x1eaf538, slot=2) at
prefork.c:800
#15 0x000000000046a842 in perform_idle_server_maintenance (p=<optimized
out>) at prefork.c:902
#16 prefork_run (_pconf=<optimized out>, plog=<optimized out>,
s=<optimized out>) at prefork.c:1090
#17 0x0000000000435a0e in ap_run_mpm (pconf=0x1e86138, plog=0x1eb3378,
s=0x1eaf538) at mpm_common.c:98
#18 0x000000000042f12b in main (argc=3, argv=0x7fff5542e328) at
main.c:777
(gdb) bt full
#0 0x00007f653a6948ef in i_create_execute_data_from_op_array (nested=0
'\000', op_array=0x7f6540403148)
at /usr/local/src/php-5.5.9/Zend/zend_execute.c:1631
execute_data = 0x0
CVs_size = 0
Ts_size = <optimized out>
stack_size = <optimized out>
total_size = <optimized out>
call_slots_size = <optimized out>
#1 zend_execute (op_array=0x7f6540403148) at
/usr/local/src/php-5.5.9/Zend/zend_vm_execute.h:388
No locals.
#2 zend_execute (op_array=0x7f6540403148) at
/usr/local/src/php-5.5.9/Zend/zend_vm_execute.h:383
No locals.
#3 0x00007f653a5e7b69 in zend_execute_scripts (type=type@entry=2,
retval=0x0, retval@entry=0x2201a60,
file_count=file_count@entry=1) at
/usr/local/src/php-5.5.9/Zend/zend.c:1316
files = {{gp_offset = 32, fp_offset = 28, overflow_arg_area =
0x7fff5542dba0,
reg_save_area = 0x7fff5542db30}}
i = <optimized out>
file_handle = 0x7fff5542dc00
orig_op_array = 0x0
orig_retval_ptr_ptr = 0x0
orig_interactive = 0
#4 0x00007f653a698105 in php_handler (r=0x21f1770)
at /usr/local/src/php-5.5.9/sapi/apache2handler/sapi_apache2.c:669
zfd = {type = ZEND_HANDLE_FILENAME,
filename = 0x21f2ef0
"/home/www/htdocs/wp-includes/js/jquery/jquery.js",
opened_path = 0x0, handle = {fd = 1067612014, fp =
0x7f653fa2776e <apr_table_unset+158>, stream = {
handle = 0x7f653fa2776e <apr_table_unset+158>, isatty =
35598064, mmap = {len = 36590244,
pos = 35591928, map = 0x6440073f370,
buf = 0x100000001 <error: Cannot access memory at
address 0x100000001>, old_handle = 0x1,
old_closer = 0x7180567}, reader = 0x902, fsizer = 0x1,
closer = 0x21e18e0}},
free_filename = 0 '\000'}
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {32654544, 6444143732774364179,
35592048, 35526880, 32175416, 0,
-6444483869346667501, -6366886698566065133},
__mask_was_saved = 0, __saved_mask = {__val = {
32257640, 32563064, 35799832, 1, 32563064, 35799840, 0,
35526880, 32175416, 0, 140072810773443, 0,
0, 0, 0, 0}}}}
ctx = 0x21e9c48
conf = 0x1ee6160
brigade = 0x0
bucket = <optimized out>
rv = <optimized out>
parent_req = 0x2201a60
#5 0x000000000044ee50 in ap_run_handler (r=0x21f1770) at config.c:170
pHook = 0x1f244d0
n = 4
rv = 0
#6 0x000000000044f42b in ap_invoke_handler (r=r@entry=0x21f1770) at
config.c:439
handler = <optimized out>
p = <optimized out>
result = <optimized out>
old_handler = 0x0
ignore = <optimized out>
#7 0x000000000046354a in ap_process_async_request (r=0x21f1770) at
http_request.c:317
c = 0x21e18e0
access_status = 0
#8 0x00000000004637ff in ap_process_request (r=r@entry=0x21f1770) at
http_request.c:363
bb = <optimized out>
b = <optimized out>
c = 0x21e18e0
rv = <optimized out>
#9 0x000000000045fe05 in ap_process_http_sync_connection (c=0x21e18e0)
at http_core.c:190
r = 0x21f1770
cs = 0x0
csd = 0x21e16f0
mpm_state = 1
#10 ap_process_http_connection (c=0x21e18e0) at http_core.c:231
No locals.
#11 0x0000000000458460 in ap_run_process_connection (c=0x21e18e0) at
connection.c:41
pHook = 0x1f2eaa0
n = 1
rv = 0
#12 0x0000000000458860 in ap_process_connection (c=c@entry=0x21e18e0,
csd=<optimized out>) at connection.c:202
rc = <optimized out>
#13 0x000000000046986b in child_main
(child_num_arg=child_num_arg@entry=2) at prefork.c:704
current_conn = 0x21e18e0
csd = 0x21e16f0
thd = 0x20aff70
osthd = 140072847148864
ptrans = 0x21e1678
allocator = 0x20afb70
status = <optimized out>
i = <optimized out>
lr = <optimized out>
pollset = 0x20b0050
sbh = 0x20b0048
bucket_alloc = 0x21e5698
last_poll_idx = 1
lockfile = <optimized out>
#14 0x0000000000469a77 in make_child (s=0x1eaf538, slot=2) at
prefork.c:800
pid = 0
#15 0x000000000046a842 in perform_idle_server_maintenance (p=<optimized
out>) at prefork.c:902
i = <optimized out>
idle_count = <optimized out>
ws = <optimized out>
free_length = <optimized out>
free_slots = {2, 7, 12, 14, 28, 29, 30, 31, 32, 33, 34, 35, 36,
38, 39, 40, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72}
last_non_dead = <optimized out>
total_non_dead = <optimized out>
#16 prefork_run (_pconf=<optimized out>, plog=<optimized out>,
s=<optimized out>) at prefork.c:1090
status = 0
pid = {pid = -1, in = 0x7f653aaf582d, out = 0x7f653efa8e60, err
= 0x20}
child_slot = <optimized out>
exitwhy = APR_PROC_EXIT
processed_status = <optimized out>
index = <optimized out>
remaining_children_to_start = 0
rv = <optimized out>
#17 0x0000000000435a0e in ap_run_mpm (pconf=0x1e86138, plog=0x1eb3378,
s=0x1eaf538) at mpm_common.c:98
pHook = 0x1f2ebc8
n = 0
rv = 0
#18 0x000000000042f12b in main (argc=3, argv=0x7fff5542e328) at
main.c:777
c = 0 '\000'
showcompile = 0
showdirectives = 0
confname = 0x46c1f0 "/usr/local/apache/conf/httpd.conf"
def_server_root = 0x46b8f8 "/usr/local/apache/2.4.7"
temp_error_log = <optimized out>
error = <optimized out>
process = 0x1e84218
pconf = 0x1e86138
plog = 0x1eb3378
ptemp = 0x1eb1348
pcommands = 0x1ea8248
opt = 0x1ea8338
rv = <optimized out>
mod = 0x689ac0 <ap_prelinked_modules+32>
opt_arg = 0x1e84128 "\b\001\350\001"
signal_server = <optimized out>
(gdb) frame 1
#1 zend_execute (op_array=0x7f6540403148) at
/usr/local/src/php-5.5.9/Zend/zend_vm_execute.h:388
388
zend_execute_ex(i_create_execute_data_from_op_array(op_array, 0
TSRMLS_CC) TSRMLS_CC);
(gdb)
(gdb) frame 4
#4 0x00007f653a698105 in php_handler (r=0x2376c90)
at /usr/local/src/php-5.5.9/sapi/apache2handler/sapi_apache2.c:669
669 zend_execute_scripts(ZEND_INCLUDE
TSRMLS_CC, NULL, 1, &zfd);
--
Edit bug report at https://bugs.php.net/bug.php?id=66675&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=66675&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=66675&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=66675&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=66675&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=66675&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=66675&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=66675&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=66675&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=66675&r=support
Expected behavior: https://bugs.php.net/fix.php?id=66675&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=66675&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=66675&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=66675&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=66675&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=66675&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=66675&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=66675&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=66675&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=66675&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=66675&r=mysqlcfg