Bug 35012
| Summary: | SVG entity parsing broken on SnowLeopard/Windows - libxml2 bug | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> |
| Component: | XML | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED INVALID | ||
| Severity: | Normal | CC: | krit, zimmermann |
| Priority: | P2 | Keywords: | InRadar |
| Version: | 528+ (Nightly build) | ||
| Hardware: | Mac | ||
| OS: | OS X 10.5 | ||
Simon Fraser (smfr)
Bots are showing failure in this test on SnowLeopard:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r54847%20(5627)/results.html
svg/zoom/page/zoom-coords-viewattr-01-b.svg expected actual diff pretty diff
svg/zoom/text/zoom-coords-viewattr-01-b.svg expected actual diff pretty diff
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Nikolas Zimmermann
Skipping tests in r54850 on SnowLeopard. svg/W3C-SVG-1.1/coords-viewattr* is already skiped on SL. According to the diffs the entity contained in the tests, that expands to SVG markup (it's sad W3C writes tests like this...) are not parsed properly.
I don't have SnowLeopard around, can anyone test and/or investigate? It's bad to skip important tests like this on SL. Maybe trac.webkit.org says something about why this test has been skipped...
Simon Fraser (smfr)
The test seems to have issues with the Smile entity. Wildfox suspects a libxml problem.
mitz
<rdar://problem/7656130>
Simon Fraser (smfr)
The entity parsing in libxml seems OK. What I'm seeing is that XMLTokenizer::startElementNs(), when called for the <rect> of the entity, is creating an Element, rather than an SVGElement, because the SVG namespace URI is not getting passed in. As a result, we refuse to create a renderer for the Element.
Simon Fraser (smfr)
The nsTab for the ctxt created by xmlParseBalancedChunkMemoryInternal() in libxml2 never gets the svg namespace stuffed into it, which is why the xmlParseBalancedChunkMemoryInternal() callback has a null uri param.
Simon Fraser (smfr)
On Leopard the stack for creating elements from entities looks like this:
#0 WebCore::XMLTokenizer::startElementNs (this=0x1f6d4320, xmlLocalName=0x8208963 "rect", xmlPrefix=0x0, xmlURI=0x8208875 "http://www.w3.org/2000/svg", nb_namespaces=0, libxmlNamespaces=0x0, nb_attributes=6, nb_defaulted=0, libxmlAttributes=0x1f6d25c0) at /Volumes/InternalData/Development/WebKit/OpenSource/WebCore/dom/XMLTokenizerLibxml2.cpp:723
#1 0x047df5ba in WebCore::startElementNsHandler (closure=0x1fd56830, localname=0x8208963 "rect", prefix=0x0, uri=0x8208875 "http://www.w3.org/2000/svg", nb_namespaces=0, namespaces=0x0, nb_attributes=6, nb_defaulted=0, libxmlAttributes=0x1f6d25c0) at /Volumes/InternalData/Development/WebKit/OpenSource/WebCore/dom/XMLTokenizerLibxml2.cpp:1097
#2 0x9003516d in xmlIOParseDTD ()
#3 0x9000dd40 in xmlParseChunk ()
#4 0x047de049 in WebCore::XMLTokenizer::doEnd (this=0x1f6d4320) at /Volumes/InternalData/Development/WebKit/OpenSource/WebCore/dom/XMLTokenizerLibxml2.cpp:1321
#5 0x047db7f7 in WebCore::XMLTokenizer::end (this=0x1f6d4320) at /Volumes/InternalData/Development/WebKit/OpenSource/WebCore/dom/XMLTokenizer.cpp:208
#6 0x047db883 in WebCore::XMLTokenizer::finish (this=0x1f6d4320) at /Volumes/InternalData/Development/WebKit/OpenSource/WebCore/dom/XMLTokenizer.cpp:227
#7 0x03e8c6c2 in WebCore::Document::finishParsing (this=0x8278c00) at /Volumes/InternalData/Development/WebKit/OpenSource/WebCore/dom/Document.cpp:1959
xmlURI is the correct SVG URI.
Simon Fraser (smfr)
On SnowLeopard it looks like this:
#0 WebCore::XMLTokenizer::startElementNs (this=0x12233e170, xmlLocalName=0x11b25416f "rect", xmlPrefix=0x0, xmlURI=0x0, nb_namespaces=0, libxmlNamespaces=0x0, nb_attributes=6, nb_defaulted=0, libxmlAttributes=0x12234b950) at /Volumes/InternalData/Development/webkit/OpenSource/WebCore/dom/XMLTokenizerLibxml2.cpp:723
#1 0x0000000102a1f546 in WebCore::startElementNsHandler (closure=0x12234b460, localname=0x11b25416f "rect", prefix=0x0, uri=0x0, nb_namespaces=0, namespaces=0x0, nb_attributes=6, nb_defaulted=0, libxmlAttributes=0x12234b950) at /Volumes/InternalData/Development/webkit/OpenSource/WebCore/dom/XMLTokenizerLibxml2.cpp:1097
#2 0x0000000101d12358 in xmlParseStartTag2 (ctxt=0x12234b460, pref=0x7fff5fbfcc60, URI=0x7fff5fbfcc58, tlen=0x7fff5fbfcc78) at parser.c:9057
#3 0x0000000101d135fe in xmlParseElement (ctxt=0x12234b460) at parser.c:9402
#4 0x0000000101d13312 in xmlParseContent (ctxt=0x12234b460) at parser.c:9315
#5 0x0000000101d1c24f in xmlParseBalancedChunkMemoryInternal (oldctxt=0x122348de0, string=0x122349f50 "\n<rect x='.5' y='.5' width='29' height='39' fill='black' stroke='red'/>\n<g transform='translate(0, 5)'>\n<circle cx='15' cy='15' r='10' fill='yellow'/>\n<circle cx='12' cy='12' r='1.5' fill='black'/>\n<c"..., user_data=0x0, lst=0x7fff5fbfcdf0) at parser.c:12630
#6 0x0000000101d0d280 in xmlParseReference (ctxt=0x122348de0) at parser.c:6745
#7 0x0000000101d17ea1 in xmlParseTryOrFinish (ctxt=0x122348de0, terminate=0) at parser.c:10895
#8 0x0000000101d19abe in xmlParseChunk (ctxt=0x122348de0, chunk=0x11b25fa00 "<", size=16980, terminate=0) at parser.c:11502
#9 0x0000000102a1e8b9 in WebCore::XMLTokenizer::doWrite (this=0x12233e170, parseString=@0x7fff5fbfd0d0) at /Volumes/InternalData/Development/webkit/OpenSource/WebCore/dom/XMLTokenizerLibxml2.cpp:650
Note that xmlURI is null.
Simon Fraser (smfr)
See http://mail.gnome.org/archives/xml/2007-December/msg00031.html
https://bugzilla.gnome.org/show_bug.cgi?id=502960
Fixed in libxml2 2.7.4
Simon Fraser (smfr)
LOL: http://mail.gnome.org/archives/xml/2007-December/msg00044.html specifically calls out these SVG tests.
Mark Rowe (bdash)
Closing as INVALID since this isn’t a WebKit issue.