ID:               38017
 User updated by:  baco at infomaniak dot ch
 Reported By:      baco at infomaniak dot ch
 Status:           Open
 Bug Type:         XML related
 Operating System: Linux Debian Sarge
 PHP Version:      5.1.4
 New Comment:

New strace of previous code 
 
open("/home/www/29212ea8a58d20e52ba0886bd64685bb/web/test.php", 
O_RDONLY) = 7 
fstat64(7, {st_mode=S_IFREG|0644, st_size=235, ...}) = 0 
lseek(7, 0, SEEK_CUR)                   = 0 
read(7, "<?php\n\t$data = \'<?xml version=\"1"..., 8192) = 
235 
read(7, "", 8192)                       = 0 
read(7, "", 8192)                       = 0 
brk(0)                                  = 0x85f2000 
brk(0x8613000)                          = 0x8613000 
close(7)                                = 0 
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
chdir("/opt/apache")                    = 0 
rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0 
getpid()                                = 29068 
kill(29068, SIGSEGV)                    = 0 
sigreturn()                             = ? (mask now []) 
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
Process 29068 detached 
 
New gdb output from new code 
 
(gdb) continue 
Continuing. 
Program received signal SIGSEGV, Segmentation fault. 
[Switching to Thread -1210239712 (LWP 29128)] 
0xb7e4e07f in memcpy () from /lib/tls/libc.so.6


Previous Comments:
------------------------------------------------------------------------

[2006-07-05 17:51:45] baco at infomaniak dot ch

Exemple without any external xml.  
  
$ cat test.php   
   
<?php   
 $data = '<?xml version="1.0"   
encoding="ISO-8859-1" ?><baco></baco>';   
 $xml_parser = xml_parser_create("ISO-8859-1");   
 xml_parse_into_struct($xml_parser, $data, $vals, $index);   
 xml_parser_free($xml_parser);   
 print_r($vals);   
?>   
   
$ /opt/php/bin/php test.php   
   
Array   
(   
    [0] => Array   
        (   
            [tag] => BACO   
            [type] => complete   
            [level] => 1   
        )   
   
)   
   
$ wget -O- http://localhost/test.php                                   
    
   
Connecting to localhost[127.0.0.1]:80... connected.   
HTTP request sent, awaiting response...   
End of file while parsing headers.   
Retrying.   
...looping forever...   
   
$ tail -n1 /var/log/httpd/error   
[Wed Jul  5 19:48:49 2006] [notice] child pid 28993 exit   
signal Segmentation fault (11)

------------------------------------------------------------------------

[2006-07-05 17:34:19] [EMAIL PROTECTED]

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc.

If possible, make the script source available online and provide
an URL to it here. Try to avoid embedding huge scripts into the report.



------------------------------------------------------------------------

[2006-07-05 17:32:55] baco at infomaniak dot ch

Description:
------------
PHP5 Segmentation fault when a script call       
xml_parser_create() under Apache but not when called       
from the CLI ?!? 
      
$ wget -O- http://.../xml.php      
     
=> Crash of Apache thread  
 
HTTP request sent, awaiting response... 
End of file while parsing headers. 
Retrying. 
child pid ... exit signal Segmentation fault (11)   
   
$ php xml.php     
     
=> result OK  

Reproduce code:
---------------
PHP Code to reproduce the segmentation fault inside Apache

    $file = "data.xml";
    $data = '';

    if (!($fp = fopen($file, "r"))) {
        die("could not open XML input");
    }
    while (!feof($fp)) {
        $data .= fread($fp, 8192);
    }
    fclose($fp);

    $xml_parser = xml_parser_create("ISO-8859-1");
    # crash at this point
    xml_parse_into_struct($xml_parser, $data, $vals, $index);
    xml_parser_free($xml_parser);
    print_r($vals);


Expected result:
----------------
Expected to return on Apache but only output this when I  
call the script from PHP CLI. 
  
Array   
(   
    [0] => Array   
        (   
           ...   
        )  
 ...  
)  
 

Actual result:
--------------
N.B.  
php.ini and php-cli.ini are the same.    
ldd on php cli and on libphp5.so both  
use same libxml2 from Debian Sarge.   
 
Result 
 
(gdb) continue 
 
Program received signal SIGSEGV, Segmentation fault. 
[Switching to Thread -1210239712 (LWP 28800)] 
0x0808b14c in XML_ParserFree () 
 
strace 
 
open("/home/www/29212ea8a58d20e52ba0886bd64685bb/web/test-xml/data.xml",

O_RDONLY) = 7 
fstat64(7, {st_mode=S_IFREG|0644, st_size=113, ...}) = 0 
lseek(7, 0, SEEK_CUR)                   = 0 
read(7, "<?xml version=\"1.0\" encoding=\"IS"..., 8192) = 
113 
read(7, "", 8192)                       = 0 
close(7)                                = 0 
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
chdir("/opt/apache")                    = 0 
rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0 
getpid()                                = 28871 
kill(28871, SIGSEGV)                    = 0 
sigreturn()                             = ? (mask now []) 
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
 
PHP Compiled with 
 
'./configure' '--prefix=/opt/php' '--mandir=/usr/share/man' 
'--with-apxs=/opt/apache/bin/apxs' '--disable-cgi' 
'--with-config-file-path=/opt/php/lib' '--disable-sigchild' 
'--disable-ipv6' '--disable-all' '--enable-libxml' 
'--with-libxml-dir' '--with-openssl' '--with-kerberos' 
'--with-pcre-regex' '--with-zlib' '--with-zlib-dir' 
'--enable-bcmath' '--enable-calendar' '--enable-ctype' 
'--with-curl' '--enable-dom' '--enable-exif' '--enable-ftp' 
'--with-openssl-dir' '--with-gd' '--with-jpeg-dir' 
'--with-png-dir' '--with-xpm-dir' '--with-ttf' 
'--with-freetype-dir' '--enable-gd-native-ttf' 
'--with-gettext' '--with-gmp' '--with-iconv' '--with-imap' 
'--with-imap-ssl' '--enable-mbstring' '--enable-mbregex' 
'--with-mcrypt' '--with-mhash' 
'--with-mysql=/opt/misc/mysql' 
'--with-mysqli=/opt/misc/mysql/bin/mysql_config' 
'--enable-pdo' '--with-pdo-mysql=/opt/misc/mysql' 
'--enable-posix' '--enable-session' '--enable-simplexml' 
'--enable-soap' '--enable-spl' '--with-tidy' 
'--enable-tokenizer' '--enable-wddx' '--enable-xml' 
'--with-libexpat-dir' '--with-xmlrpc' '--with-iconv-dir' 
'--with-xsl' '--with-pear' '--enable-memory-limit' 
'--enable-zend-multibyte' '--with-ming=/opt/misc/ming' 
'--enable-debug' 
 
 


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=38017&edit=1

Reply via email to