From: chupaka at gmail dot com
Operating system: Fedora 19
PHP version: 5.5.1
Package: Reproducible crash
Bug Type: Bug
Bug description:Segmentation fault on compiling the script
Description:
------------
I faced the problem after upgrading from php-5.3 to php-5.4, and now it
continues
in php-5.5 on Apache 2.4.6.
The script (thumb.php) works correctly almost all the time (clients open
webpage
normally), but in Apache logs, there are messages:
[Wed Aug 14 19:33:31.106671 2013] [core:notice] [pid 9968] AH00052: child
pid
21804 exit signal Segmentation fault (11)
[Wed Aug 14 19:33:31.106736 2013] [core:notice] [pid 9968] AH00052: child
pid
23371 exit signal Segmentation fault (11)
[Wed Aug 14 19:33:31.106762 2013] [core:notice] [pid 9968] AH00052: child
pid
23373 exit signal Segmentation fault (11)
Test script:
---------------
thumb.php (it's the only file I saw so far that provokes segfaults):
<?
if (!isset($_GET['m'], $_GET['n'])) {
echo "No parameters in thumb.php, _GET is ".var_export($_GET,
true)."!";
die();
}
$m = (integer)$_GET['m'];
$n = (integer)$_GET['n'];
$dn = (floor($m / 100))."/";
$fn = $dn."$m-$n.jpg";
if (!file_exists($fn)) die("No frame found!");
if (!file_exists("thumbs/".$fn) or (filemtime($fn) >
filemtime("thumbs/".$fn)) or (filesize("thumbs/".$fn) == 0)) {
if (!file_exists("thumbs/".$dn)) mkdir("thumbs/".$dn);
$img = imagecreatefromjpeg($fn);
$size = getimagesize($fn);
$nimg = imagecreatetruecolor(80, 40);
imagecopyresampled($nimg, $img, 0, 0, 0, 0, 80, 40, $size[0],
$size[1]);
imagejpeg($nimg, "thumbs/".$fn, 85);
}
readfile("thumbs/".$fn);
?>
Expected result:
----------------
No Segmentation faults
Actual result:
--------------
gdb attached to a child shows this after failure:
Program received signal SIGSEGV, Segmentation fault.
0xb6a40af2 in zend_stack_push (stack=stack@entry=0xb6c0d3d0
<compiler_globals+368>,
element=element@entry=0xb6c0d3ac <compiler_globals+332>,
size=size@entry=36)
at /usr/src/debug/php-5.5.1/Zend/zend_stack.c:42
42 stack->elements[stack->top] = (void *) emalloc(size);
(gdb) backtrace
#0 0xb6a40af2 in zend_stack_push (stack=stack@entry=0xb6c0d3d0
<compiler_globals+368>,
element=element@entry=0xb6c0d3ac <compiler_globals+332>,
size=size@entry=36)
at /usr/src/debug/php-5.5.1/Zend/zend_stack.c:42
#1 0xb6a09eca in compile_file (file_handle=file_handle@entry=0xbfa206f8,
type=type@entry=2)
at Zend/zend_language_scanner.l:586
#2 0xb6a30f56 in dtrace_compile_file (file_handle=0xbfa206f8, type=2)
at /usr/src/debug/php-5.5.1/Zend/zend_dtrace.c:40
#3 0xb6a4390a in zend_execute_scripts (type=type@entry=2,
retval=retval@entry=0x0,
file_count=file_count@entry=1) at
/usr/src/debug/php-5.5.1/Zend/zend.c:1308
#4 0xb6afeccf in php_handler (r=0xb9938c48)
at /usr/src/debug/php-5.5.1/sapi/apache2handler/sapi_apache2.c:669
(gdb) backtrace full
#0 0xb6a40af2 in zend_stack_push (stack=stack@entry=0xb6c0d3d0
<compiler_globals+368>,
element=element@entry=0xb6c0d3ac <compiler_globals+332>,
size=size@entry=36)
at /usr/src/debug/php-5.5.1/Zend/zend_stack.c:42
No locals.
#1 0xb6a09eca in compile_file (file_handle=file_handle@entry=0xbfa206f8,
type=type@entry=2)
at Zend/zend_language_scanner.l:586
original_lex_state = {yy_leng = 0, yy_start = 0x0, yy_text = 0x0,
yy_cursor = 0x0, yy_marker = 0x0,
yy_limit = 0x0, yy_state = 0, state_stack = {top = 0, max = 0,
elements = 0x0},
heredoc_label_stack = {top = 0, max = 0, elements = 0x0,
top_element =
0x0, persistent = 0 '\000'},
in = 0x0, lineno = 0, filename = 0x0, script_org = 0x0,
script_org_size = 0, script_filtered = 0x0,
script_filtered_size = 0, input_filter = 0x0, output_filter =
0x0,
script_encoding = 0x0}
op_array = 0xb662112c
original_active_op_array = 0x0
retval = 0xb662112c
compiler_result = <optimized out>
compilation_successful = 0 '\000'
retval_znode = {op_type = 1, u = {op = {constant = 1, var = 1, num
= 1,
hash = 1, opline_num = 1,
jmp_addr = 0x1, zv = 0x1, literal = 0x1, ptr = 0x1}, constant
=
{value = {lval = 1,
dval = -1.4312713536766795e+179, str = {val = 0x1 <Address
0x1
out of bounds>,
len = -450778880}, ht = 0x1, obj = {handle = 1, handlers
=
0xe521a900}}, refcount__gc = 1,
type = 1 '\001', is_ref__gc = 0 '\000'}, op_array = 0x1}, EA
=
3073921433}
original_in_compilation = 0 '\000'
#2 0xb6a30f56 in dtrace_compile_file (file_handle=0xbfa206f8, type=2)
at /usr/src/debug/php-5.5.1/Zend/zend_dtrace.c:40
res = 0xb6621b88
#3 0xb6a4390a in zend_execute_scripts (type=type@entry=2,
retval=retval@entry=0x0,
file_count=file_count@entry=1) at
/usr/src/debug/php-5.5.1/Zend/zend.c:1308
files = 0xbfa206d0 "\031P-·QQ-·"
i = 0
file_handle = 0xbfa206f8
orig_op_array = 0x0
orig_retval_ptr_ptr = 0x0
orig_interactive = 0
#4 0xb6afeccf in php_handler (r=0xb9938c48)
at /usr/src/debug/php-5.5.1/sapi/apache2handler/sapi_apache2.c:669
zfd = {type = ZEND_HANDLE_MAPPED,
filename = 0xb9939f30
"/var/www/system/video.infolan.by/frames/thumb.php",
opened_path = 0xb6621204
"/var/www/system/video.infolan.by/frames/thumb.php", handle = {
fd = -1235086660, fp = 0xb66212bc, stream = {handle =
0xb66212bc,
isatty = 0, mmap = {len = 745,
pos = 0, map = 0x0,
buf = 0xb70a6000 "<?\n if (!isset($_GET['m'], $_GET['n']))
{\n
echo \"No parameters in thumb.php, _GET is \".var_export($_GET,
true).\"!\";\n
die();\n }\n $m = (integer)$_GET['m'];\n $n = (integer)$_GET['n'];\n \n
$dn
"..., old_handle = 0x0, old_closer = 0x0}, reader = 0xb69f5690
<_php_stream_read>,
fsizer = 0xb69da0a0 <php_zend_stream_fsizer>,
closer = 0xb69da060 <php_zend_stream_mmap_closer>}},
free_filename
= 0 '\000'}
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {-1228988416, -1183831224, -1229662672,
-1181512632, -1770762997,
-1917897447}, __mask_was_saved = 0, __saved_mask = {__val =
{3111136096, 3113461616,
3071472077, 3071483740, 3111264800, 3113454664, 3071483904,
3071473021, 3109372568, 1,
3073921433, 3070734156, 3113454664, 3111265368, 3109399248,
3070717099, 3113454600,
4294967295, 3073885849, 3070496172, 3113454664, 4294967295,
3113454664, 3070442654,
3113457088, 3070480937, 3109424016, 3844188416, 3113454664,
3109424016, 3070279966,
3064982056}}}}
ctx = 0xb9950f08
conf = <optimized out>
brigade = 0xb9969368
bucket = <optimized out>
rv = <optimized out>
parent_req = 0xb994f3f8
--
Edit bug report at https://bugs.php.net/bug.php?id=65451&edit=1
--
Try a snapshot (PHP 5.4):
https://bugs.php.net/fix.php?id=65451&r=trysnapshot54
Try a snapshot (PHP 5.3):
https://bugs.php.net/fix.php?id=65451&r=trysnapshot53
Try a snapshot (trunk):
https://bugs.php.net/fix.php?id=65451&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=65451&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=65451&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=65451&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=65451&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=65451&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=65451&r=support
Expected behavior: https://bugs.php.net/fix.php?id=65451&r=notwrong
Not enough info:
https://bugs.php.net/fix.php?id=65451&r=notenoughinfo
Submitted twice:
https://bugs.php.net/fix.php?id=65451&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=65451&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65451&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=65451&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=65451&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=65451&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65451&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=65451&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=65451&r=mysqlcfg