crash in sablotron module
| From: | Chuck Hagenbuch | Date: | Thu, 07 Dec 2000 01:05:28 +0000 |
| Subject: | crash in sablotron module | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-40278@lists.php.net to get a copy of this message | ||
With current php4 cvs and sablotron 0.44 installed, the following php script:
<?php
error_reporting(E_ALL);
$xsl_file = './stock.xsl';
xslt_output_begintransform($xsl_file);
$xml = implode('', file('./stocks.xml'));
echo $xml;
xslt_output_endtransform();
?>
gives this backtrace:
(gdb) run -X
Starting program: /usr/sbin/apache.dbg -X
Program received signal SIGSEGV, Segmentation fault.
0x403fe407 in DynBlock::compactToBuffer_ (this=0x19,
buf=0x28 <Address 0x28 out of bounds>, kill_=4) at datastr.cpp:112
112 int compactedBytes = 0;
Current language: auto; currently c++
(gdb) bt
#0 0x403fe407 in DynBlock::compactToBuffer_ (this=0x19,
buf=0x28 <Address 0x28 out of bounds>, kill_=4) at datastr.cpp:112
#1 0x4044eebc in __DTOR_END__ () from /usr/local/lib/libsablot.so.0
#2 0x4040f468 in OutputDefinition::getMethod (this=0x80f3b78) at output.cpp:205
#3 0x40400e09 in findSame (p=@0xbfffdc3c) at expr.cpp:308
#4 0x404164fc in my_getcwd (dir=@0xbfffded4) at proc.cpp:268
#5 0x40415379 in TreeConstructer::setQNameFromExpat (this_=0xbfffded4,
qname_=@0x80f3484, text=0x8116670 "") at parser.cpp:613
#6 0x8072e80 in doContent (parser=0x8116498, startTagLevel=0, enc=0x808cb20,
s=0x80f7509 "<date>8/30/2000</date>\r\n <time>2:37PM</time>\r\n
</when>\r\n <price type=\"ask\" value=\"49.375\" />\r\n <price
type=\"open\"
value=\"46.0625\" />\r\n <price type=\"dayhigh\"
value=\"50.375\" />\r\n
<price type=\"da"...,
end=0x80f7792 "l\" /><br/>\r\n <xsl:apply-templates
select=\"price\" />\r\n</xsl:template>\r\n\r\n<xsl:template
match=\"price\">\r\n <xsl:value-of select=\"@type\" />:
<xsl:value-of
select=\"@value\" />\r\n</xsl:template>\r\n\r\n</xsl"...,
nextPtr=0x81164a4) at xmlparse.c:1266
#7 0x807275c in contentProcessor (parser=0x8116498,
start=0x80f74cb "<list>\r\n<stock_quote>\r\n
<symbol>LNUX</symbol>\r\n
<when>\r\n <date>8/30/2000</date>\r\n <time>2:37PM</time>\r\n
</when>\r\n <price type=\"ask\" value=\"49.375\" />\r\n <price
type=\"open\"
value=\"46.0625\" />"...,
end=0x80f7792 "l\" /><br/>\r\n <xsl:apply-templates
select=\"price\" />\r\n</xsl:template>\r\n\r\n<xsl:template
match=\"price\">\r\n <xsl:value-of select=\"@type\" />:
<xsl:value-of
select=\"@value\" />\r\n</xsl:template>\r\n\r\n</xsl"...,
endPtr=0x81164a4) at xmlparse.c:955
#8 0x80742fe in prologProcessor (parser=0x8116498,
s=0x80f74b0 "<?xml version=\"1.0\"?
>\r\n\r\n\r\n<list>\r\n<stock_quote>\r\n <symbol>LNUX</symbol>\r\n
<when>\r\n <date>8/30/2000</date>\r\n <time>2:37PM</time>\r\n
</when>\r\n <price type=\"ask\" value=\"49.375\" />\r\n <price
typ"...,
end=0x80f7792 "l\" /><br/>\r\n <xsl:apply-templates
select=\"price\" />\r\n</xsl:template>\r\n\r\n<xsl:template
match=\"price\">\r\n <xsl:value-of select=\"@type\" />:
<xsl:value-of
select=\"@value\" />\r\n</xsl:template>\r\n\r\n</xsl"...,
nextPtr=0x81164a4) at xmlparse.c:2034
#9 0x8074123 in prologInitProcessor (parser=0x8116498,
s=0x80f74b0 "<?xml version=\"1.0\"?
>\r\n\r\n\r\n<list>\r\n<stock_quote>\r\n <symbol>LNUX</symbol>\r\n
<when>\r\n <date>8/30/2000</date>\r\n <time>2:37PM</time>\r\n
</when>\r\n <price type=\"ask\" value=\"49.375\" />\r\n <price
typ"...,
end=0x80f7792 "l\" /><br/>\r\n <xsl:apply-templates
select=\"price\" />\r\n</xsl:template>\r\n\r\n<xsl:template
match=\"price\">\r\n <xsl:value-of select=\"@type\" />:
<xsl:value-of
select=\"@value\" />\r\n</xsl:template>\r\n\r\n</xsl"...,
nextPtr=0x81164a4) at xmlparse.c:1965
#10 0x80724c1 in XML_ParseBuffer (parser=0x8116498, len=738, isFinal=0)
at xmlparse.c:819
#11 0x40415100 in TreeConstructer::tcExternalEntityRef (parser=0xbfffded4,
context=0x4043e4a0 "",
base=0xbfffde7c "üÞÿ¿}\237A@ÔÞÿ¿hc\021\bHÓ\013\bm\237A@ÔÞÿ¿@:\017\büÞÿ¿]
\237A@¼îD@hc\021\bHÓ\013\bZÏA@td\021\b\017",
systemId=0x40414a1d "[\201Ã\237¤\003",
publicId=0x4044eebc ",\036\a") at parser.cpp:594
#12 0x40414a42 in TreeConstructer::tcStartNamespace (constructer=0xbfffded4,
prefix=0x8116368 "", uri=0x80bd348 "ða\021\b\016") at parser.cpp:405
#13 0x40414b80 in TreeConstructer::tcEndNamespace (constructer=0xbfffded4,
prefix=0x8116368 "") at parser.cpp:422
#14 0x40419f7d in Processor::getAliasedName (this=0x8116368, name=@0x80bd348,
currNamespaces=@0x40418b6e) at proc.cpp:1133
#15 0x40418c41 in Processor::processVertexAfterParse (this=0x80f3a40,
v=0x80f3a7c,
t=0xbfffdf60, tc=0x0) at proc.cpp:851
#16 0x40418f47 in Processor::parse (this=0x80f3a40, t=0x80f3a7c, d=0xbfffe020)
at proc.cpp:899
#17 0x404176c6 in Processor::insertRule (this=0x80f3a40, tmpl=0x80f6a04)
at proc.cpp:508
#18 0x4041b4ac in SituationObj::message (this=0x80f3a40, type=135227908,
code=1077089275, arg1=@0x403313ee, arg2=@0x0) at situa.cpp:194
#19 0x40261d78 in php_if_xslt_free (ht=0, return_value=0x80f728c, this_ptr=0x0,
return_value_used=0) at sablot.c:751
#20 0x4020b969 in execute (op_array=0x80f2384) at ./zend_execute.c:1730
#21 0x40219eff in add_assoc_double (arg=0x8, key=0x3 <Address 0x3 out of
bounds>,
---Type <return> to continue, or q <return> to quit---
d=-1.9970626831054688) at zend_API.c:284
#22 0x4022b5a4 in php_strip_url_passwd (
url=0xbffff3f8 "\002d:@¼÷\016\bd$\017\bÐg\017\b") at fopen-wrappers.c:494
#23 0x40227d6f in php_if_apache_note (ht=135191940, return_value=0x0,
this_ptr=0xbffff43c, return_value_used=1076004568) at php_apache.c:142
#24 0x402286e8 in php_if_virtual (ht=135191940, return_value=0x0, this_ptr=0x0,
return_value_used=1076004624) at php_apache.c:329
#25 0x40228726 in php_if_virtual (ht=135191940, return_value=0x4032ad3f,
this_ptr=0x17, return_value_used=134560765) at php_apache.c:334
#26 0x8053e74 in ap_invoke_handler (r=0x80edd84) at http_config.c:508
#27 0x806271c in process_request_internal (r=0x80edd84) at http_request.c:1214
#28 0x8062778 in ap_process_request (r=0x80edd84) at http_request.c:1230
#29 0x805c509 in child_main (child_num_arg=0) at http_main.c:4122
#30 0x805c69c in make_child (s=0x8099f44, slot=0, now=976150947) at
http_main.c:4235
#31 0x805c7b9 in startup_children (number_to_start=3) at http_main.c:4317
#32 0x805cc6b in standalone_main (argc=2, argv=0xbffff6a4) at http_main.c:4605
#33 0x805d31d in main (argc=2, argv=0xbffff6a4) at http_main.c:4933
You can get the xsl and xml files at
http://marina.horde.org/horde/jonah/stocks.xml
and
http://marina.horde.org/horde/jonah/stock.xsl
This doesn't seem to happen until the second time I process the page during the
lifetime of the module, but the first time, I don't get valid results, either.
It could be that the xslt is off; it works fine in IE5, and I don't have
anything else to test it with. In any case, I don't think php should be
segfaulting even if it is just an xsl problem.
-chuck