Bug #75282 [Com]: xmlrpc_encode_request() crashes with "zend_mm_heap corrupted"
| From: | ondrej@php.net | Date: | Tue, 24 Oct 2017 17:20:40 +0000 |
| Subject: | Bug #75282 [Com]: xmlrpc_encode_request() crashes with "zend_mm_heap corrupted" | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-212286@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75282&edit=1
ID: 75282
Comment by: ondrej@php.net
Reported by: marina at moodle dot com
Summary: xmlrpc_encode_request() crashes with "zend_mm_heap
corrupted"
Status: Open
Type: Bug
Package: XMLRPC-EPI related
Operating System: Ubuntu
PHP Version: 7.2.0RC3
Block user comment: N
Private report: N
New Comment:
Debian and Ubuntu (and I guess Fedora, but I have just asked @remi) doesn't use embedded
libraries. So the xmlrpc.so definitely use the non-patched system library.
Previous Comments:
------------------------------------------------------------------------
[2017-10-24 09:34:36] nikic@php.net
Looks to me like there is a mismatch in the used allocator. libxmlrpc was patched to use ZMM in https://github.com/php/php-src/commit/3a0872d08fc71d9bb9ec3d431260f838725d3b8d.
Could it be that Debian handles this library somehow differently and uses a non-patched version?
------------------------------------------------------------------------
[2017-10-24 08:17:00] ondrej@php.net
I was more lucky in generating the segfault. Sometimes it ends only with zend_mm_heap message, but
sometimes it breaks with "Segmentation fault" dumping a core, so here's the full
backtrace:
Core was generated by `php -r echo xmlrpc_encode_request('func', 'text',
[]);'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 zend_mm_free_heap (ptr=<optimized out>, heap=<optimized out>) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_alloc.c:1374
1374 /build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_alloc.c: No such file or directory.
(gdb) bt full
#0 zend_mm_free_heap (ptr=<optimized out>, heap=<optimized out>) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_alloc.c:1374
chunk = 0x55d651a00000
info = 310887680
page_offset = 384
#1 _efree (ptr=ptr@entry=0x55d651b80dc0) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_alloc.c:2433
No locals.
#2 0x00007f260f593786 in zif_xmlrpc_encode_request (execute_data=<optimized out>,
return_value=0x7f261281b080) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/ext/xmlrpc/xmlrpc-epi-php.c:704
xRequest = 0x55d651a40dd0
outBuf = 0x55d651b80dc0 "<?xml version=\"1.0\"
encoding=\"iso-8859-1\"?>\n<methodCall>\n<methodName>func</methodName>\n<params>\n
<param>\n <value>\n <string>text</string>\n </value>\n
</param>\n</params>\n</methodCall>\n"
vals = 0x7f261281b0f0
out_opts = 0x7f261281b100
method = 0x7f261285d358 "func"
method_len = 4
out = {b_php_out = 0, b_auto_version = 1, xmlrpc_out = {xml_elem_opts = {verbosity =
xml_elem_pretty,
escaping = (xml_elem_markup_escaping | xml_elem_non_ascii_escaping |
xml_elem_non_print_escaping), encoding = 0x7f260f594108 "iso-8859-1"}, version =
xmlrpc_version_1_0}}
#3 0x000055d650e1c11a in ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER () at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_vm_execute.h:617
call = 0x7f261281b090
fbc = 0x7f261287c500
ret = 0x55d651a00000
#4 execute_ex (ex=0x55d651b80dc0) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_vm_execute.h:59737
No locals.
#5 0x000055d650e24d43 in zend_execute (op_array=op_array@entry=0x7f261287c2a0,
return_value=return_value@entry=0x7ffcdeb7db10) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_vm_execute.h:63763
No locals.
#6 0x000055d650d70a25 in zend_eval_stringl (str=0x55d651a40ad0 "echo
xmlrpc_encode_request('func', 'text', []);", str_len=<optimized out>,
retval_ptr=0x0, string_name=0x55d650e870cb "Command line code")
at /build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_execute_API.c:1080
__orig_bailout = 0x7ffcdeb7ddd0
__bailout = {{__jmpbuf = {94378971973536, -2745732968994631115, 94378968772811,
94378981067472, 0, 0, -2859598804687056331, -8357072563008892363}, __mask_was_saved = 0,
__saved_mask = {__val = {
0, 139801496245024, 139801185484817, 139801496371424, 139801496371200,
139801496371648, 0, 0, 94378965993598, 139801496375296, 4744115309160432649, 94378982105424, 1,
139801496375320,
94377611363337, 94378982105472}}}}
local_retval = {value = {lval = 94378982105520, dval = 4.6629412747803189e-310, counted =
0x55d651b3e1b0, str = 0x55d651b3e1b0, arr = 0x55d651b3e1b0, obj = 0x55d651b3e1b0, res =
0x55d651b3e1b0,
ref = 0x55d651b3e1b0, ast = 0x55d651b3e1b0, zv = 0x55d651b3e1b0, ptr = 0x55d651b3e1b0,
ce = 0x55d651b3e1b0, func = 0x55d651b3e1b0, ww = {w1 = 1370743216, w2 = 21974}}, u1 = {v = {
type = 0 '\000', type_flags = 0 '\000', const_flags = 0
'\000', reserved = 0 '\000'}, type_info = 0}, u2 = {next = 21974, cache_slot =
21974, lineno = 21974, num_args = 21974,
fe_pos = 21974, fe_iter_idx = 21974, access_flags = 21974, property_guard = 21974, extra
= 21974}}
pv = {value = {lval = 139801496363088, dval = 6.9071116590201753e-310, counted =
0x7f261287a050, str = 0x7f261287a050, arr = 0x7f261287a050, obj = 0x7f261287a050, res =
0x7f261287a050,
ref = 0x7f261287a050, ast = 0x7f261287a050, zv = 0x7f261287a050, ptr = 0x7f261287a050,
ce = 0x7f261287a050, func = 0x7f261287a050, ww = {w1 = 310878288, w2 = 32550}}, u1 = {v = {
type = 6 '\006', type_flags = 20 '\024', const_flags = 0
'\000', reserved = 0 '\000'}, type_info = 5126}, u2 = {next = 3482432889,
cache_slot = 3482432889, lineno = 3482432889,
num_args = 3482432889, fe_pos = 3482432889, fe_iter_idx = 3482432889, access_flags =
3482432889, property_guard = 3482432889, extra = 3482432889}}
new_op_array = 0x7f261287c2a0
original_compiler_options = <optimized out>
retval = <optimized out>
#7 0x000055d650d70bb9 in zend_eval_stringl_ex (str=<optimized out>, str_len=<optimized
out>, retval_ptr=<optimized out>, string_name=<optimized out>, handle_exceptions=1)
at /build/php7.2-E8VsQc/php7.2-7.2.0~rc4/Zend/zend_execute_API.c:1121
result = <optimized out>
#8 0x000055d650e26d9e in do_cli (argc=3, argv=0x55d651a40a60) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/sapi/cli/php_cli.c:1042
__orig_bailout = 0x7ffcdeb7ef60
__bailout = {{__jmpbuf = {0, -2859598804040084939, 140724045082452, 0, 0, 94378971853632,
-2859598804596878795, -8357072723372469707}, __mask_was_saved = 0, __saved_mask = {__val = {
94378968659083, 94378968659107, 94378968563908, 94378968563929, 94378968659120,
94378968659140, 94378968659157, 94378968659178, 94378968659188, 94378968659202, 94378968659224,
94378968659243, 94378968659270, 94378968659299, 0, 7955998172649846063}}}}
c = <optimized out>
file_handle = {handle = {fd = 321349184, fp = 0x7f2613276640 <_IO_2_1_stdin_>, stream
= {handle = 0x7f2613276640 <_IO_2_1_stdin_>, isatty = 1357296728, mmap = {len =
94378968659061, pos = 0,
map = 0x0, buf = 0x0, old_handle = 0x0, old_closer = 0x0}, reader = 0x0, fsizer =
0x0, closer = 0x0}}, filename = 0x55d650e6b57f "Standard input code", opened_path = 0x0,
type = ZEND_HANDLE_FP, free_filename = 0 '\000'}
behavior = <optimized out>
reflection_what = 0x7f261281b030 ""
request_started = 1
exit_status = 0
php_optarg = 0x55d651a40ad0 "echo xmlrpc_encode_request('func',
'text', []);"
php_optind = 3
exec_direct = 0x55d651a40ad0 "echo xmlrpc_encode_request('func',
'text', []);"
exec_run = 0x0
exec_begin = 0x0
exec_end = 0x0
arg_free = <optimized out>
arg_excp = <optimized out>
script_file = <optimized out>
translated_path = <optimized out>
interactive = 0
lineno = 0
param_error = <optimized out>
hide_argv = 0
#9 0x000055d650be0d7e in main (argc=3, argv=0x55d651a40a60) at
/build/php7.2-E8VsQc/php7.2-7.2.0~rc4/sapi/cli/php_cli.c:1404
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {94378981068080, -2859598804040084939, 140724045082452, 0, 0,
94378971853632, -2859598804018064843, -8357073310343425483}, __mask_was_saved = 0, __saved_mask =
{__val = {
0, 32, 139801500679104, 94378981064720, 139801536659472, 0, 140724045082984,
139801538908616, 0, 140724045082800, 139801536726775, 1, 0, 139801520185648, 139801520183000, 1}}}}
c = <optimized out>
exit_status = 0
module_started = 1
sapi_started = 1
php_optarg = 0x55d651a40ad0 "echo xmlrpc_encode_request('func',
'text', []);"
php_optind = 3
use_extended_info = 0
ini_path_override = 0x0
ini_entries = 0x55d651a40d30
"html_errors=0\nregister_argc_argv=1\nimplicit_flush=1\noutput_buffering=0\nmax_execution_time=0\nmax_input_time=-1\n"
ini_entries_len = 0
ini_ignore = 0
sapi_module = <optimized out>
------------------------------------------------------------------------
[2017-10-24 06:53:22] marina at moodle dot com
I have the same problem on RC4
reported also here:
https://github.com/oerdnj/deb.sury.org/issues/724
------------------------------------------------------------------------
[2017-10-05 10:53:08] nikic@php.net
I've run this through valgrind in a number of variations (with/without zmm, with/without
opcache) and did not get any memory errors.
------------------------------------------------------------------------
[2017-10-05 01:29:35] marina at moodle dot com
Thanks for reply. I use Ubuntu 14.04.5 LTS
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=75282
--
Edit this bug report at https://bugs.php.net/bug.php?id=75282&edit=1