RESOLVED FIXED 17136
Crash in ICU beneath xsltUnicodeSortFunction with Windows r29908 nightly
https://bugs.webkit.org/show_bug.cgi?id=17136
Summary Crash in ICU beneath xsltUnicodeSortFunction with Windows r29908 nightly
Adam Plumb
Reported 2008-02-01 08:12:50 PST
I'm using Safari 3.0.4 with the latest nightly build (r29908) when I load the webapp I'm working on, it crashes almost immediately. The webapp makes use of xslt transformations using sarissa, and has some ajax calls in the first page.
Attachments
crash dump txt file (8.31 KB, text/plain)
2008-02-01 08:13 PST, Adam Plumb
no flags
crash dump file (53.20 KB, application/octet-stream)
2008-02-01 08:14 PST, Adam Plumb
no flags
Adam Plumb
Comment 1 2008-02-01 08:13:49 PST
Created attachment 18847 [details] crash dump txt file
Adam Plumb
Comment 2 2008-02-01 08:14:20 PST
Created attachment 18848 [details] crash dump file
Adam Plumb
Comment 3 2008-02-01 08:18:01 PST
I just tried nightly build r29603 and the same thing happens.
Adam Plumb
Comment 4 2008-02-01 08:24:37 PST
Just tried webkit nightly r28586 and the webapp loads fine without problems.
Adam Roben (:aroben)
Comment 5 2008-02-01 08:28:53 PST
Here's the backtrace: icuin36.dll!_ucol_strcoll_3_6() + 0x280 bytes C++ > WebKit.dll!WebCore::xsltUnicodeSortFunction(_xsltTransformContext * ctxt=, _xmlNode * * sorts=, int nbsorts=) Line 264 C++ msvcr80.dll!_free() + 0xcd bytes 00000001() kernel32.dll!_HeapFree@12() + 0x14 bytes msvcr80.dll!_free() + 0xcd bytes libxml2.dll!_xmlXPathFreeParserContext() + 0x2d bytes C libxml2.dll!_xmlXPathCompiledEval() + 0xd1 bytes C libxslt.dll!_xsltForEach() + 0x230 bytes C libxslt.dll!_xsltApplyOneTemplate() + 0x2a3 bytes C libxslt.dll!_xsltProcessOneNode() + 0x193 bytes C libxslt.dll!_xsltApplyStripSpaces() + 0x302 bytes C libxslt.dll!_xsltProcessOneNode() + 0xdb bytes C libxslt.dll!_xsltNewTransformContext() + 0x7d9 bytes C WebKit.dll!WebCore::XSLTProcessor::transformToString(WebCore::Node * sourceNode=0x02d486b8, WebCore::String & mimeType={...}, WebCore::String & resultString={...}, WebCore::String & resultEncoding={...}) Line 378 C++ WebKit.dll!WebCore::XSLTProcessor::transformToDocument(WebCore::Node * sourceNode=0x00000000) Line 404 + 0x31 bytes C++ WebKit.dll!KJS::jsXSLTProcessorPrototypeFunctionTransformToDocument(KJS::ExecState * exec=0x0012f2c0, KJS::JSObject * thisObj=0x043da200, const KJS::List & args={...}) Line 115 C++ WebKit.dll!KJS::PrototypeFunction::callAsFunction(KJS::ExecState * exec=0x0012f2c0, KJS::JSObject * thisObj=0x043da200, const KJS::List & args={...}) Line 882 + 0x14 bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x043da200, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallDotNode::evaluate(KJS::ExecState * exec=0x0012f2c0) Line 1230 + 0x13 bytes C++ WebKit.dll!KJS::AssignLocalVarNode::evaluate(KJS::ExecState * exec=0x0012f2c0) Line 3276 C++ WebKit.dll!KJS::ConstStatementNode::execute(KJS::ExecState * exec=0x0012f2c0) Line 3736 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::BlockNode::execute(KJS::ExecState * exec=0x0012f2c0) Line 3697 + 0xc bytes C++ WebKit.dll!KJS::IfElseNode::execute(KJS::ExecState * exec=0x0012f2c0) Line 3774 + 0xa bytes C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000005) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012f3fc, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallResolveNode::evaluate(KJS::ExecState * exec=0x0012f3fc) Line 1040 + 0x1e bytes C++ WebKit.dll!KJS::AssignLocalVarNode::evaluate(KJS::ExecState * exec=0x0012f3fc) Line 3276 C++ WebKit.dll!KJS::ConstStatementNode::execute(KJS::ExecState * exec=0x0012f3fc) Line 3736 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000002) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012f524, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallResolveNode::evaluate(KJS::ExecState * exec=0x0012f524) Line 1040 + 0x1e bytes C++ WebKit.dll!KJS::ExprStatementNode::execute(KJS::ExecState * exec=0x0012f524) Line 3720 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000001) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012f64c, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallResolveNode::evaluate(KJS::ExecState * exec=0x0012f64c) Line 1040 + 0x1e bytes C++ WebKit.dll!KJS::ExprStatementNode::execute(KJS::ExecState * exec=0x0012f64c) Line 3720 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000000) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012f774, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallResolveNode::evaluate(KJS::ExecState * exec=0x0012f774) Line 1040 + 0x1e bytes C++ WebKit.dll!KJS::ExprStatementNode::execute(KJS::ExecState * exec=0x0012f774) Line 3720 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000000) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012f8f0, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x039c0000, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallValueNode::evaluate(KJS::ExecState * exec=) Line 975 + 0xf bytes C++ WebKit.dll!KJS::AssignDotNode::evaluate(KJS::ExecState * exec=0x0012f8f0) Line 3393 C++ WebKit.dll!KJS::ExprStatementNode::execute(KJS::ExecState * exec=0x0012f8f0) Line 3720 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::BlockNode::execute(KJS::ExecState * exec=0x0012f8f0) Line 3697 + 0xc bytes C++ WebKit.dll!KJS::TryNode::execute(KJS::ExecState * exec=0x0012f8f0) Line 4291 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::BlockNode::execute(KJS::ExecState * exec=0x0012f8f0) Line 3697 + 0xc bytes C++ WebKit.dll!KJS::IfNode::execute(KJS::ExecState * exec=0x0012f8f0) Line 3756 + 0xb bytes C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000003) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012fa24, KJS::JSObject * thisObj=0x044304c0, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x044304c0, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallDotNode::evaluate(KJS::ExecState * exec=0x0012fa24) Line 1230 + 0x13 bytes C++ WebKit.dll!KJS::ExprStatementNode::execute(KJS::ExecState * exec=0x0012fa24) Line 3720 C++ WebKit.dll!KJS::IfNode::execute(KJS::ExecState * exec=0x0012fa24) Line 3756 + 0xb bytes C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000001) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x0012fbec, KJS::JSObject * thisObj=0x044304c0, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x044304c0, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::functionProtoFuncApply(KJS::ExecState * exec=, KJS::JSObject * thisObj=, const KJS::List & args=) Line 110 + 0x13 bytes C++ WebKit.dll!KJS::PrototypeFunction::callAsFunction(KJS::ExecState * exec=0x0012fbec, KJS::JSObject * thisObj=0x04381620, const KJS::List & args={...}) Line 882 + 0x14 bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x04381620, const KJS::List & args={...}) Line 99 C++ WebKit.dll!KJS::FunctionCallDotNode::evaluate(KJS::ExecState * exec=0x0012fbec) Line 1230 + 0x13 bytes C++ WebKit.dll!KJS::ReturnNode::execute(KJS::ExecState * exec=0x0012fbec) Line 4078 C++ WebKit.dll!KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>,0> & statements={...}, KJS::ExecState * exec=0x00000000) Line 3673 C++ WebKit.dll!KJS::FunctionBodyNode::execute(KJS::ExecState * exec=0x00000000) Line 4616 + 0x8 bytes C++ WebKit.dll!KJS::FunctionImp::callAsFunction(KJS::ExecState * exec=0x7fefaea0, KJS::JSObject * thisObj=0x043df580, const KJS::List & args={...}) Line 76 + 0xf bytes C++ WebKit.dll!KJS::JSObject::call(KJS::ExecState * exec=0x00000000, KJS::JSObject * thisObj=0x043df580, const KJS::List & args={...}) Line 99 C++ WebKit.dll!WebCore::JSAbstractEventListener::handleEvent(WebCore::Event * ele=, bool isWindowEvent=) Line 116 C++ pthreadVC2.dll!_pthread_once() + 0x1e bytes C WebKit.dll!WebCore::currentTime() Line 54 C++ WebKit.dll!WebCore::XMLHttpRequest::didFinishLoading(WebCore::SubresourceLoader * loader=0x7ff269c0) Line 699 C++ WebKit.dll!WebCore::SubresourceLoader::didFinishLoading() Line 193 + 0xe bytes C++ WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal=0x7fca22a0) Line 373 C++ WebKit.dll!WebCore::didFinishLoading(_CFURLConnection * conn=0x000b0432, const void * clientInfo=0x000004cf) Line 112 C++
Adam Roben (:aroben)
Comment 6 2008-02-01 08:41:58 PST
Alexey Proskuryakov
Comment 7 2008-02-01 11:42:20 PST
The nightly archive only includes two ICU Dlls of three - it also needs to include the largest one, icudt36.dll.
Alexey Proskuryakov
Comment 8 2008-03-18 01:58:37 PDT
*** Bug 17894 has been marked as a duplicate of this bug. ***
Mark Rowe (bdash)
Comment 9 2008-03-18 09:09:51 PDT
Please install Safari 3.1 to resolve this issue. It was released earlier today and contains the updated ICU DLLs that fix this crash.
Note You need to log in before you can comment on or make changes to this bug.