From:             deeno at ukf dot net
Operating system: Redhat 7.2
PHP version:      4.3.2
PHP Bug Type:     XML related
Bug description:  PHP crash parsing very large xml file

Description:
------------
I'm using PHP to parse a very large XML file (a SOAP message - I use
NuSOAP). This is usually resulting in a seg fault (stack trace below), but
in some cases Apache is dumping the following error to the error log:

FATAL:  erealloc():  Unable to allocate -1073875731 bytes

Unfortunately, it is difficult to reproduce with a simple example due the
the size of the data.

PHP was configured as follows:
./configure --with-apxs=/home/test/apache/bin/apxs --with-mm=/usr/lib
--prefix=/opt/php --with-openssl=/opt/openssl/ --without-mysql
--with-curl=/opt/curl/ --with-mcrypt=/opt/mcrypt/

Expected result:
----------------
Normal execution of script

Actual result:
--------------
Program received signal SIGSEGV, Segmentation fault.
0x40109a5a in chunk_alloc (ar_ptr=0x401be4e0, nb=32) at malloc.c:2879
2879    malloc.c: No such file or directory.
        in malloc.c
(gdb) where
#0  0x40109a5a in chunk_alloc (ar_ptr=0x401be4e0, nb=32) at malloc.c:2879
#1  0x40109858 in __libc_malloc (bytes=28) at malloc.c:2811
#2  0x404efbaf in _emalloc (size=12) at
/home/do/php-4.3.2/Zend/zend_alloc.c:158
#3  0x40510fa7 in execute (op_array=0x8398814) at
/home/do/php-4.3.2/Zend/zend_execute.c:1601
#4  0x404f67fe in call_user_function_ex (function_table=0x8521100,
object_pp=0x8510b80, function_name=0x82f742c,
    retval_ptr_ptr=0xbffde9a8, param_count=3, params=0x18a8694c,
no_separation=1, symbol_table=0x0)
    at /home/do/php-4.3.2/Zend/zend_execute_API.c:559
#5  0x404f6204 in call_user_function (function_table=0x81bbbc8,
object_pp=0x8510b80, function_name=0x82f742c,
    retval_ptr=0x11c7674c, param_count=3, params=0xbffdea60) at
/home/do/php-4.3.2/Zend/zend_execute_API.c:401
#6  0x404b7a06 in xml_call_handler (parser=0x8510b44, handler=0x82f742c,
argc=3, argv=0xbffdea60)
    at /home/do/php-4.3.2/ext/xml/xml.c:377
#7  0x404b810a in _xml_startElementHandler (userData=0x8510b44,
name=0x8454e38 "item", attributes=0x8368048)
    at /home/do/php-4.3.2/ext/xml/xml.c:661
#8  0x404bbb29 in doContent (parser=0x82b6a18, startTagLevel=0,
enc=0x40547280,
    s=0x480704f6 "<item xsi:type=\"xsd:string\"></item>\n      <item
xsi:type=\"xsd:string\"></item>\n      <item
xsi:type=\"xsd:string\"></item>\n      <item
xsi:type=\"xsd:string\"></item>\n      <item
xsi:type=\"xsd:string\"></it"..., end=0x4922ba13 "", nextPtr=0x0) at
/home/do/php-4.3.2/ext/xml/expat/xmlparse.c:1659
#9  0x404bb2d8 in contentProcessor (parser=0x82b6a18,
    start=0x4794402f "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\";
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\";
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\";>\n
<soapenv:Body>\n  <ns1:l"..., end=0x4922ba13 "", endPtr=0x0) at
/home/do/php-4.3.2/ext/xml/expat/xmlparse.c:1349
#10 0x404bd623 in doProlog (parser=0x82b6a18, enc=0x40547280,
    s=0x4794402f "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\";
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\";
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\";>\n
<soapenv:Body>\n  <ns1:l"..., end=0x4922ba13 "", tok=29,
    next=0x4794402f "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\";
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\";
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\";>\n
<soapenv:Body>\n  <ns1:l"..., nextPtr=0x0) at
/home/do/php-4.3.2/ext/xml/expat/xmlparse.c:2687
#11 0x404bd1ba in prologProcessor (parser=0x82b6a18,
    s=0x47944008 "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>\n<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\";
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\";
xmlns:xsi=\"http://www.w3.org/2001/XMLSch";..., end=0x4922ba13 "",
nextPtr=0x0) at /home/do/php-4.3.2/ext/xml/expat/xmlparse.c:2523
#12 0x404baefa in php_XML_ParseBuffer (parser=0x82b6a18, len=26114571,
isFinal=1)
    at /home/do/php-4.3.2/ext/xml/expat/xmlparse.c:1150
#13 0x404baea8 in php_XML_Parse (parser=0x82b6a18,
    s=0x4605c014 "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>\n<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\";
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\";
xmlns:xsi=\"http://www.w3.org/2001/XMLSch";..., len=26114571, isFinal=1) at
/home/do/php-4.3.2/ext/xml/expat/xmlparse.c:1140
#14 0x404b9742 in zif_xml_parse (ht=3, return_value=0x84588b4,
this_ptr=0x0, return_value_used=1)
    at /home/do/php-4.3.2/ext/xml/xml.c:1340
#15 0x40511018 in execute (op_array=0x84f51a4) at
/home/do/php-4.3.2/Zend/zend_execute.c:1606
#16 0x405111d6 in execute (op_array=0x83b90f4) at
/home/do/php-4.3.2/Zend/zend_execute.c:1650
#17 0x405111d6 in execute (op_array=0x84e12b4) at
/home/do/php-4.3.2/Zend/zend_execute.c:1650
#18 0x405111d6 in execute (op_array=0x8524e6c) at
/home/do/php-4.3.2/Zend/zend_execute.c:1650
#19 0x405111d6 in execute (op_array=0x83614e4) at
/home/do/php-4.3.2/Zend/zend_execute.c:1650
#20 0x405111d6 in execute (op_array=0x82d20ac) at
/home/do/php-4.3.2/Zend/zend_execute.c:1650
#21 0x405111d6 in execute (op_array=0x84a82ac) at
/home/do/php-4.3.2/Zend/zend_execute.c:1650
#22 0x404feb24 in zend_execute_scripts (type=8, retval=0x0, file_count=3)
at /home/do/php-4.3.2/Zend/zend.c:869
#23 0x404d7c48 in php_execute_script (primary_file=0xbffebf40) at
/home/do/php-4.3.2/main/main.c:1671
#24 0x405185c6 in apache_php_module_main (r=0x818fb20,
display_source_mode=0)
    at /home/do/php-4.3.2/sapi/apache/sapi_apache.c:54
#25 0x405191a2 in send_php (r=0x818fb20, display_source_mode=0,
filename=0x0)
    at /home/do/php-4.3.2/sapi/apache/mod_php4.c:617
#26 0x405191f6 in send_parsed_php (r=0x818fb20) at
/home/do/php-4.3.2/sapi/apache/mod_php4.c:632
#27 0x0809bbc3 in ap_invoke_handler ()
#28 0x080b1067 in process_request_internal ()
#29 0x080b10c8 in ap_process_request ()
#30 0x080a7e39 in child_main ()
#31 0x080a8008 in make_child ()
#32 0x080a817c in startup_children ()
#33 0x080a87f4 in standalone_main ()
#34 0x080a9073 in main ()
#35 0x400a5687 in __libc_start_main (main=0x80a8cb0 <main>, argc=4,
ubp_av=0xbffec384, init=0x8063920 <_init>,
    fini=0x81521a0 <_fini>, rtld_fini=0x4000dc54 <_dl_fini>,
stack_end=0xbffec37c)
    at ../sysdeps/generic/libc-start.c:129



-- 
Edit bug report at http://bugs.php.net/?id=24497&edit=1
-- 
Try a CVS snapshot:         http://bugs.php.net/fix.php?id=24497&r=trysnapshot
Fixed in CVS:               http://bugs.php.net/fix.php?id=24497&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=24497&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=24497&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=24497&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=24497&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=24497&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=24497&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=24497&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=24497&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=24497&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=24497&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=24497&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=24497&r=gnused

Reply via email to