<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>26837</bug_id>
          
          <creation_ts>2009-06-30 05:53:43 -0700</creation_ts>
          <short_desc>Mismatched malloc()/delete in JSC::ParserArenaDeletable</short_desc>
          <delta_ts>2009-07-02 05:20:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>26790</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Martin Zoubek">martin.zoubek</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129046</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Zoubek">martin.zoubek</who>
    <bug_when>2009-06-30 05:53:43 -0700</bug_when>
    <thetext>When WebKit is compiled with USE_SYSTEM_MALLOC=1, valgrind reports a lot of errors when deleting instances of some classes in JavaScript parser, for example:

==28953== Mismatched free() / delete / delete []
==28953==    at 0x4A19BAC: operator delete(void*) (vg_replace_malloc.c:342)
==28953==    by 0x4B55C74: JSC::SubNode::~SubNode() (Nodes.h:867)
==28953==    by 0x4C1766D: void WTF::deleteAllValues&lt;JSC::ParserArenaDeletable*, 0ul&gt;(WTF::Vector&lt;JSC::ParserArenaDeletable*, 0ul&gt; const&amp;) (Vector.h:940)
==28953==    by 0x4C17423: JSC::ParserArena::~ParserArena() (ParserArena.cpp:35)
==28953==    by 0x4C1519E: JSC::ScopeNodeData::~ScopeNodeData() (Nodes.h:1378)
==28953==    by 0x4C151F1: void WTF::deleteOwnedPtr&lt;JSC::ScopeNodeData&gt;(JSC::ScopeNodeData*) (OwnPtrCommon.h:44)
==28953==    by 0x4C1526F: WTF::OwnPtr&lt;JSC::ScopeNodeData&gt;::clear() (OwnPtr.h:63)
==28953==    by 0x4C15296: JSC::ScopeNode::destroyData() (Nodes.h:1408)
==28953==    by 0x4C01815: JSC::FunctionBodyNode::generateBytecode(JSC::ScopeChainNode*) (Nodes.cpp:2083)
==28953==    by 0x4BCD5C1: JSC::FunctionBodyNode::bytecode(JSC::ScopeChainNode*) (Nodes.h:1584)
==28953==    by 0x4C5DBB3: JSC::JSGlobalData::numericCompareFunction(JSC::ExecState*) (JSGlobalData.cpp:234)
==28953==    by 0x4B9C680: JSC::BytecodeGenerator::generate() (BytecodeGenerator.cpp:156)
==28953==    by 0x4C03829: JSC::ProgramNode::generateBytecode(JSC::ScopeChainNode*) (Nodes.cpp:1893)
==28953==    by 0x4BCEE61: JSC::ProgramNode::bytecode(JSC::ScopeChainNode*) (Nodes.h:1476)
==28953==    by 0x4BB9511: JSC::Interpreter::execute(JSC::ProgramNode*, JSC::ExecState*, JSC::ScopeChainNode*, JSC::JSObject*, JSC::JSValue*) (Interpreter.cpp:612)
==28953==    by 0x4C3F699: JSC::evaluate(JSC::ExecState*, JSC::ScopeChain&amp;, JSC::SourceCode const&amp;, JSC::JSValue) (Completion.cpp:67)
==28953==    by 0x4B5A2E8: JSEvaluateScript (JSBase.cpp:54)
==28953==    by 0x400EC5: main (jstest.c:71)
==28953==  Address 0x6c23e98 is 0 bytes inside a block of size 40 alloc&apos;d
==28953==    at 0x4A1A39B: malloc (vg_replace_malloc.c:207)
==28953==    by 0x4CA79FA: WTF::fastMalloc(unsigned long) (FastMalloc.cpp:225)
==28953==    by 0x4B59AA2: JSC::ParserArenaDeletable::operator new(unsigned long, JSC::JSGlobalData*) (NodeConstructors.h:32)
==28953==    by 0x4B44C58: makeSubNode(void*, JSC::ExpressionNode*, JSC::ExpressionNode*, bool) (Grammar.y:2045)
==28953==    by 0x4B48CEF: jscyyparse(void*) (Grammar.y:541)
==28953==    by 0x4C17ABC: JSC::Parser::parse(JSC::JSGlobalData*, int*, JSC::UString*) (Parser.cpp:58)
==28953==    by 0x4C17BD8: JSC::Parser::reparseInPlace(JSC::JSGlobalData*, JSC::FunctionBodyNode*) (Parser.cpp:76)
==28953==    by 0x4C01654: JSC::FunctionBodyNode::generateBytecode(JSC::ScopeChainNode*) (Nodes.cpp:2072)
==28953==    by 0x4BCD5C1: JSC::FunctionBodyNode::bytecode(JSC::ScopeChainNode*) (Nodes.h:1584)
==28953==    by 0x4C5DBB3: JSC::JSGlobalData::numericCompareFunction(JSC::ExecState*) (JSGlobalData.cpp:234)
==28953==    by 0x4B9C680: JSC::BytecodeGenerator::generate() (BytecodeGenerator.cpp:156)
==28953==    by 0x4C03829: JSC::ProgramNode::generateBytecode(JSC::ScopeChainNode*) (Nodes.cpp:1893)
==28953==    by 0x4BCEE61: JSC::ProgramNode::bytecode(JSC::ScopeChainNode*) (Nodes.h:1476)
==28953==    by 0x4BB9511: JSC::Interpreter::execute(JSC::ProgramNode*, JSC::ExecState*, JSC::ScopeChainNode*, JSC::JSObject*, JSC::JSValue*) (Interpreter.cpp:612)
==28953==    by 0x4C3F699: JSC::evaluate(JSC::ExecState*, JSC::ScopeChain&amp;, JSC::SourceCode const&amp;, JSC::JSValue) (Completion.cpp:67)
==28953==    by 0x4B5A2E8: JSEvaluateScript (JSBase.cpp:54)
==28953==    by 0x400EC5: main (jstest.c:71)

Problem lies in class ParserArenaDeletable, which has overloaded operator new, which uses fastMalloc, but does not have overloaded operator delete. Attached patch fixes this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129047</commentid>
    <comment_count>1</comment_count>
      <attachid>32057</attachid>
    <who name="Martin Zoubek">martin.zoubek</who>
    <bug_when>2009-06-30 05:54:55 -0700</bug_when>
    <thetext>Created attachment 32057
WebKit-r45357-ParserArenaDeletable-malloc-free-mismatch.diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129489</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Zoubek">martin.zoubek</who>
    <bug_when>2009-07-02 05:20:38 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of 26790 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32057</attachid>
            <date>2009-06-30 05:54:55 -0700</date>
            <delta_ts>2009-06-30 05:54:55 -0700</delta_ts>
            <desc>WebKit-r45357-ParserArenaDeletable-malloc-free-mismatch.diff</desc>
            <filename>WebKit-r45357-ParserArenaDeletable-malloc-free-mismatch.diff</filename>
            <type>text/plain</type>
            <size>1907</size>
            <attacher name="Martin Zoubek">martin.zoubek</attacher>
            
              <data encoding="base64">ZGlmZiAtTnJ1cCBXZWJLaXQtcjQ1MzU3LW9yaWcvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaCBXZWJLaXQtcjQ1MzU3L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKLS0tIFdlYktpdC1yNDUzNTctb3JpZy9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCTIwMDktMDYtMjUgMDk6MjI6NTYuMDAwMDAwMDAwICswMjAwCisr
KyBXZWJLaXQtcjQ1MzU3L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJ
MjAwOS0wNi0zMCAxNDoxMjo0MS4wMDAwMDAwMDAgKzAyMDAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA5IEFjaXNpb24gQlYuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzksNiArNDAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiBmYXN0TWFsbG9jKHNpemUpOwogICAgIH0KIAorICAgIGlubGluZSB2b2lk
IFBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBkZWxldGUodm9pZCogcCkKKyAgICB7CisJ
ZmFzdEZyZWUocCk7CisgICAgfQorCiAgICAgaW5saW5lIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6
UGFyc2VyQXJlbmFSZWZDb3VudGVkKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICB7CiAg
ICAgICAgIGdsb2JhbERhdGEtPnBhcnNlci0+YXJlbmEoKS5kZXJlZldpdGhBcmVuYShhZG9wdFJl
Zih0aGlzKSk7CmRpZmYgLU5ydXAgV2ViS2l0LXI0NTM1Ny1vcmlnL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oIFdlYktpdC1yNDUzNTcvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
LS0tIFdlYktpdC1yNDUzNTctb3JpZy9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkyMDA5
LTA2LTI1IDA5OjIyOjU2LjAwMDAwMDAwMCArMDIwMAorKysgV2ViS2l0LXI0NTM1Ny9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkyMDA5LTA2LTMwIDE0OjEyOjIyLjAwMDAwMDAwMCArMDIw
MApAQCAtNSw2ICs1LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNo
IChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9y
bG92aWNoCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEFjaXNpb24gQlYuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA5LDYgKzExMCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBPYmplY3RzIGNyZWF0ZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgbmV3
IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBhcmVuYSBpcyBkZWxldGVkLgogICAgICAgICAvLyBP
dGhlciBhcnJhbmdlbWVudHMgbXVzdCBiZSBtYWRlLgogICAgICAgICB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90KTsKKworICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKik7CiAgICAg
fTsKIAogICAgIGNsYXNzIFBhcnNlckFyZW5hUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVk
PFBhcnNlckFyZW5hUmVmQ291bnRlZD4gewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>