[webkit-gtk] mingw webkit-1.3.6-2 causes GtkLauncher.exe crash in WTF::TCMalloc_Central_FreeList::FetchFromSpans

Ben Lafreniere bjlafren at cs.uwaterloo.ca
Wed Mar 30 21:18:15 PDT 2011


In the end, we overcame the problem by using SUSE as our mingw cross
compiling environment instead of Fedora.

I'm not sure if the patches included in the SUSE mingw32-libwebkit
package fixed a bug, or if the root cause of the problem was something
to do with Fedora's mingw environment. I just know that we aren't
getting the seg fault when compiling in SUSE.

Hope this helps anyone experiencing a similar problem.

-- Ben


On Tue, Mar 29, 2011 at 5:48 PM, Ben Lafreniere
<bjlafren at cs.uwaterloo.ca> wrote:
> Hello -
>
> I'm working on a Gtk project for release on Linux and Windows that
> uses webkit. I've been developing on Linux, and everything runs fine.
>
> To create Windows builds, I'm using the mingw cross compilation
> environment that comes with Fedora 14. It includes a package
> mingw32-webkit-1.3.6-2.
>
> Everything compiles fine, but webkit causes a crash when I run on
> Windows XP (haven't tried on any other versions of Windows).
>
> To ensure that the problem really is in webkit, I have reproduced the
> crash using only GtkLauncher.exe. Running it the first time works
> fine, but after a refresh, or closing and then re-running it, I get
> the seg fault below.
>
> Any suggestions or ideas are welcome. Thanks. -- Ben
>
> Program received signal SIGSEGV, Segmentation fault.
> WTF::TCMalloc_Central_FreeList::FetchFromSpans (this=0x67f827e0)
>    at JavaScriptCore/wtf/FastMalloc.cpp:2684
> 2684    JavaScriptCore/wtf/FastMalloc.cpp: No such file or directory.
>        in JavaScriptCore/wtf/FastMalloc.cpp
> (gdb) bt
> #0  WTF::TCMalloc_Central_FreeList::FetchFromSpans (this=0x67f827e0)
>    at JavaScriptCore/wtf/FastMalloc.cpp:2684
> #1  0x67a8bc1d in WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe (
>    this=0x67f827e0) at JavaScriptCore/wtf/FastMalloc.cpp:2668
> #2  0x67a8c1b1 in WTF::TCMalloc_Central_FreeList::RemoveRange (
>    this=0x67f827e0, start=0x22d858, end=0x22d854, N=0x22d85c)
>    at JavaScriptCore/wtf/FastMalloc.cpp:2644
> #3  0x67b3ae77 in WTF::TCMalloc_ThreadCache::FetchFromCentralCache (
>    this=0x7ff90240, cl=25, allocationSize=288)
>    at JavaScriptCore/wtf/FastMalloc.cpp:2820
> #4  0x67a8def0 in Allocate (size=268)
>    at JavaScriptCore/wtf/FastMalloc.cpp:2798
> #5  do_malloc<true> (size=268) at JavaScriptCore/wtf/FastMalloc.cpp:3531
> #6  fastMalloc<true> (size=268) at JavaScriptCore/wtf/FastMalloc.cpp:3735
> #7  WTF::fastMalloc (size=268) at JavaScriptCore/wtf/FastMalloc.cpp:3712
> #8  0x679cd3ef in operator new (this=0x7fe9a9a0, lvalp=0x22f210,
>    llocp=0x22f218, lexType=JSC::Lexer::IgnoreReservedWords, strictMode=false)
>    at ./JavaScriptCore/wtf/FastAllocBase.h:121
> #9  append<JSC::Identifier> (this=0x7fe9a9a0, lvalp=0x22f210, llocp=0x22f218,
>    lexType=JSC::Lexer::IgnoreReservedWords, strictMode=false)
>    at ./JavaScriptCore/wtf/SegmentedVector.h:148
> #10 makeIdentifier (this=0x7fe9a9a0, lvalp=0x22f210, llocp=0x22f218,
>    lexType=JSC::Lexer::IgnoreReservedWords, strictMode=false)
>    at JavaScriptCore/parser/ParserArena.h:52
> #11 makeIdentifier (this=0x7fe9a9a0, lvalp=0x22f210, llocp=0x22f218,
>    lexType=JSC::Lexer::IgnoreReservedWords, strictMode=false)
>    at JavaScriptCore/parser/Lexer.cpp:325
> #12 parseIdentifier (this=0x7fe9a9a0, lvalp=0x22f210, llocp=0x22f218,
>    lexType=JSC::Lexer::IgnoreReservedWords, strictMode=false)
>    at JavaScriptCore/parser/Lexer.cpp:442
> #13 JSC::Lexer::lex (this=0x7fe9a9a0, lvalp=0x22f210, llocp=0x22f218,
>    lexType=JSC::Lexer::IgnoreReservedWords, strictMode=false)
>    at JavaScriptCore/parser/Lexer.cpp:1024
> #14 0x67b05b97 in next (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:96
> #15 JSC::JSParser::parseMemberExpression<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1823
> #16 0x67b0a833 in parseUnaryExpression<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1871
> #17 parseBinaryExpression<JSC::SyntaxChecker> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:1453
> #18 parseConditionalExpression<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1418
> #19 JSC::JSParser::parseAssignmentExpression<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1362
> #20 0x67b05d4c in parseArguments<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1743
> #21 JSC::JSParser::parseMemberExpression<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1813
> #22 0x67b0a833 in parseUnaryExpression<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1871
> #23 parseBinaryExpression<JSC::SyntaxChecker> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:1453
> #24 parseConditionalExpression<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1418
> #25 JSC::JSParser::parseAssignmentExpression<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1362
> #26 0x67af7d62 in JSC::JSParser::parseExpression<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1336
> #27 0x67af8ab2 in JSC::JSParser::parseIfStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1265
> #28 0x67af7839 in JSC::JSParser::parseStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=..., directive=@0x22de5c)
>    at JavaScriptCore/parser/JSParser.cpp:1089
> #29 0x67b00680 in JSC::JSParser::parseSourceElements<(JSC::JSParser::SourceEleme
> ntsMode)1, JSC::SyntaxChecker> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:561
> #30 0x67af7980 in parseBlockStatement<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=..., directive=@0x22df9c)
>    at JavaScriptCore/parser/JSParser.cpp:1061
> #31 JSC::JSParser::parseStatement<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=..., directive=@0x22df9c)
>    at JavaScriptCore/parser/JSParser.cpp:1077
> #32 0x67af8b2d in JSC::JSParser::parseIfStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1271
> #33 0x67af7839 in JSC::JSParser::parseStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=..., directive=@0x22e03c)
>    at JavaScriptCore/parser/JSParser.cpp:1089
> #34 0x67b00680 in JSC::JSParser::parseSourceElements<(JSC::JSParser::SourceEleme
> ntsMode)1, JSC::SyntaxChecker> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:561
> #35 0x67af7980 in parseBlockStatement<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=..., directive=@0x22e17c)
>    at JavaScriptCore/parser/JSParser.cpp:1061
> #36 JSC::JSParser::parseStatement<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=..., directive=@0x22e17c)
>    at JavaScriptCore/parser/JSParser.cpp:1077
> #37 0x67af8b2d in JSC::JSParser::parseIfStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1271
> #38 0x67af7839 in JSC::JSParser::parseStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=..., directive=@0x22e23c)
>    at JavaScriptCore/parser/JSParser.cpp:1089
> #39 0x67b00483 in JSC::JSParser::parseSourceElements<(JSC::JSParser::SourceEleme
> ntsMode)0, JSC::SyntaxChecker> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:561
> #40 0x67afc85f in parseFunctionBody<JSC::SyntaxChecker> (this=0x22f1c8,
>    context=..., name=@0x22e3ac, parameters=@0x22e3a8, body=@0x22e3a4,
>    openBracePos=@0x22e3a0, closeBracePos=@0x22e39c, bodyStartLine=@0x22e398)
>    at JavaScriptCore/parser/JSParser.cpp:1159
> #41 JSC::JSParser::parseFunctionInfo<(JSC::JSParser::FunctionRequirements)1, tru
> e, JSC::SyntaxChecker> (this=0x22f1c8, context=..., name=@0x22e3ac,
>    parameters=@0x22e3a8, body=@0x22e3a4, openBracePos=@0x22e3a0,
>    closeBracePos=@0x22e39c, bodyStartLine=@0x22e398)
>    at JavaScriptCore/parser/JSParser.cpp:1187
> #42 0x67b072ef in JSC::JSParser::parseFunctionDeclaration<JSC::SyntaxChecker>
>    (this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1212
> #43 0x67af7802 in JSC::JSParser::parseStatement<JSC::SyntaxChecker> (
>    this=0x22f1c8, context=..., directive=@0x22e46c)
>    at JavaScriptCore/parser/JSParser.cpp:1084
> #44 0x67b00483 in JSC::JSParser::parseSourceElements<(JSC::JSParser::SourceEleme
> ntsMode)0, JSC::SyntaxChecker> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:561
> #45 0x67afac70 in parseFunctionBody<JSC::ASTBuilder> (this=0x22f1c8,
>    context=..., name=@0x22e638, parameters=@0x22e64c, body=@0x22e648,
>    openBracePos=@0x22e644, closeBracePos=@0x22e640, bodyStartLine=@0x22e63c)
>    at JavaScriptCore/parser/JSParser.cpp:1159
> #46 JSC::JSParser::parseFunctionInfo<(JSC::JSParser::FunctionRequirements)0, fal
> se, JSC::ASTBuilder> (this=0x22f1c8, context=..., name=@0x22e638,
>    parameters=@0x22e64c, body=@0x22e648, openBracePos=@0x22e644,
>    closeBracePos=@0x22e640, bodyStartLine=@0x22e63c)
>    at JavaScriptCore/parser/JSParser.cpp:1187
> #47 0x67b047cb in JSC::JSParser::parseMemberExpression<JSC::ASTBuilder> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1777
> #48 0x67b01fa2 in JSC::JSParser::parseUnaryExpression<JSC::ASTBuilder> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1871
> #49 0x67b0985f in parseBinaryExpression<JSC::ASTBuilder> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1453
> #50 parseConditionalExpression<JSC::ASTBuilder> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:1418
> #51 JSC::JSParser::parseAssignmentExpression<JSC::ASTBuilder> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1362
> #52 0x67af7a9c in JSC::JSParser::parseExpression<JSC::ASTBuilder> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1336
> #53 0x67b046d4 in parsePrimaryExpression<JSC::ASTBuilder> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1677
> #54 JSC::JSParser::parseMemberExpression<JSC::ASTBuilder> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1780
> #55 0x67b01fa2 in JSC::JSParser::parseUnaryExpression<JSC::ASTBuilder> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1871
> #56 0x67b0985f in parseBinaryExpression<JSC::ASTBuilder> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1453
> #57 parseConditionalExpression<JSC::ASTBuilder> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:1418
> #58 JSC::JSParser::parseAssignmentExpression<JSC::ASTBuilder> (this=0x22f1c8,
>    context=...) at JavaScriptCore/parser/JSParser.cpp:1362
> #59 0x67af7a9c in JSC::JSParser::parseExpression<JSC::ASTBuilder> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1336
> #60 0x67b06ba4 in JSC::JSParser::parseExpressionStatement<JSC::ASTBuilder> (
>    this=0x22f1c8, context=...) at JavaScriptCore/parser/JSParser.cpp:1250
> #61 0x67af7212 in JSC::JSParser::parseStatement<JSC::ASTBuilder> (
>    this=0x22f1c8, context=..., directive=@0x22eddc)
>    at JavaScriptCore/parser/JSParser.cpp:1124
> #62 0x67b00326 in JSC::JSParser::parseSourceElements<(JSC::JSParser::SourceEleme
> ntsMode)0, JSC::ASTBuilder> (this=0x22f1c8, context=...)
>    at JavaScriptCore/parser/JSParser.cpp:561
> #63 0x679ca644 in JSC::JSParser::parseProgram (this=0x22f1c8,
>    lexicalGlobalObject=0x19ac380) at JavaScriptCore/parser/JSParser.cpp:528
> #64 0x679cb0bf in JSC::jsParse (lexicalGlobalObject=0x19ac380,
>    parameters=0x0, strictness=JSC::JSParseNormal,
>    parserMode=JSC::JSParseProgramCode, source=0x7fd248c8)
>    at JavaScriptCore/parser/JSParser.cpp:489
> #65 0x679cfd5a in JSC::Parser::parse (this=0x7fef6c98,
>    lexicalGlobalObject=0x19ac380, parameters=0x0,
>    strictness=JSC::JSParseNormal, mode=JSC::JSParseProgramCode,
>    errLine=0x22f83c, errMsg=0x22f838) at JavaScriptCore/parser/Parser.cpp:51
> #66 0x67af43ef in JSC::Parser::parse<JSC::ProgramNode> (this=0x7fef6c98,
>    lexicalGlobalObject=0x19ac380, debugger=0x0,
>    debuggerExecState=0x7fd217d8, source=..., parameters=0x0,
>    strictness=JSC::JSParseNormal, exception=0x22f92c)
>    at ./JavaScriptCore/parser/Parser.h:88
> #67 0x67a11461 in JSC::ProgramExecutable::compileInternal (this=0x7fd24898,
>    exec=0x7fd217d8, scopeChainNode=0x7fd2db28)
>    at JavaScriptCore/runtime/Executable.cpp:148
> #68 0x679f919a in compile (exec=0x7fd217d8, scopeChain=..., source=...,
>    thisValue=...) at ./JavaScriptCore/runtime/Executable.h:250
> #69 JSC::evaluate (exec=0x7fd217d8, scopeChain=..., source=..., thisValue=...)
>    at JavaScriptCore/runtime/Completion.cpp:56
> #70 0x66c2178a in evaluate (this=0x7feb39fc, sourceCode=...,
>    world=0x7fef6af8, shouldAllowXSS=WebCore::DoNotAllowXSS)
>    at WebCore/bindings/js/JSMainThreadExecState.h:54
> #71 WebCore::ScriptController::evaluateInWorld (this=0x7feb39fc,
>    sourceCode=..., world=0x7fef6af8, shouldAllowXSS=WebCore::DoNotAllowXSS)
>    at WebCore/bindings/js/ScriptController.cpp:148
> #72 0x66c221e0 in WebCore::ScriptController::evaluate (this=0x7feb39fc,
>    sourceCode=..., shouldAllowXSS=WebCore::DoNotAllowXSS)
>    at WebCore/bindings/js/ScriptController.cpp:171
> #73 0x66d4c663 in WebCore::ScriptElementData::evaluateScript (
>    this=0x7ff6f618, sourceCode=...) at WebCore/dom/ScriptElement.cpp:201
> #74 0x66d4c90b in WebCore::ScriptElementData::execute (this=0x7ff6f618,
>    cachedScript=0x7fd21480) at WebCore/dom/ScriptElement.cpp:222
> #75 0x66cdd514 in WebCore::AsyncScriptRunner::timerFired (this=0x7ff53040,
>    timer=0x7ff53050) at WebCore/dom/AsyncScriptRunner.cpp:87
> #76 0x67d2cf71 in WebCore::Timer<WebCore::AsyncScriptRunner>::fired (
>    this=0x7ff53050) at ./WebCore/platform/Timer.h:98
> #77 0x670c7fd9 in WebCore::ThreadTimers::sharedTimerFiredInternal (
>    this=0x7fec53c0) at WebCore/platform/ThreadTimers.cpp:112
> #78 0x670c8073 in WebCore::ThreadTimers::sharedTimerFired ()
>    at WebCore/platform/ThreadTimers.cpp:90
> #79 0x6734da11 in WebCore::timeout_cb ()
>    at WebCore/platform/gtk/SharedTimerGtk.cpp:49
> #80 0x685ef00e in ?? ()
>   from c:\Documents and Settings\bjlafren.LOOPS\Desktop\shared_with_fedora\webk
> ittest\bin\libglib-2.0-0.dll
> #81 0x685eda57 in ?? ()
>   from c:\Documents and Settings\bjlafren.LOOPS\Desktop\shared_with_fedora\webk
> ittest\bin\libglib-2.0-0.dll
> #82 0x685ee190 in ?? ()
>   from c:\Documents and Settings\bjlafren.LOOPS\Desktop\shared_with_fedora\webk
> ittest\bin\libglib-2.0-0.dll
> #83 0x685ee8a1 in ?? ()
>   from c:\Documents and Settings\bjlafren.LOOPS\Desktop\shared_with_fedora\webk
> ittest\bin\libglib-2.0-0.dll
> #84 0x00529fcf in ?? ()
>   from c:\Documents and Settings\bjlafren.LOOPS\Desktop\shared_with_fedora\webk
> ittest\bin\libgtk-win32-2.0-0.dll
> #85 0x00401da7 in main (argc=1, argv=0xe40398)
>    at WebKitTools/GtkLauncher/main.c:268
>


More information about the webkit-gtk mailing list