Bug 16918
| Summary: | ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Matt Lilek <dev+webkit> |
| Component: | Web Template Framework | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED DUPLICATE | ||
| Severity: | Normal | CC: | frances_c, john.ripley |
| Priority: | P2 | Keywords: | NeedsReduction |
| Version: | 528+ (Nightly build) | ||
| Hardware: | Mac | ||
| OS: | OS X 10.5 | ||
Matt Lilek
I've hit this assertion failure at least twice now using the inspector when switching to another resource in the sidebar.
ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
(/Users/matt/Code/WebKit/WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/HashTable.h:433 Value* WTF::HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::lookup(const T&) [with T = long long int, HashTranslator = WTF::IdentityHashTranslator<long long int, std::pair<long long int, int>, WTF::IntHash<long long unsigned int> >, Key = long long int, Value = std::pair<long long int, int>, Extractor = WTF::PairFirstExtractor<std::pair<long long int, int> >, HashFunctions = WTF::IntHash<long long unsigned int>, Traits = WTF::PairHashTraits<WTF::HashTraits<long long int>, WTF::HashTraits<int32_t> >, KeyTraits = WTF::HashTraits<long long int>])
Thread 0 Crashed:
0 com.apple.WebCore 0x01c99dd9 std::pair<long long, int>* WTF::HashTable<long long, std::pair<long long, int>, WTF::PairFirstExtractor<std::pair<long long, int> >, WTF::IntHash<unsigned long long>, WTF::PairHashTraits<WTF::HashTraits<long long>, WTF::HashTraits<int> >, WTF::HashTraits<long long> >::lookup<long long, WTF::IdentityHashTranslator<long long, std::pair<long long, int>, WTF::IntHash<unsigned long long> > >(long long const&) + 155 (HashTable.h:433)
1 com.apple.WebCore 0x01c99efa WTF::HashTable<long long, std::pair<long long, int>, WTF::PairFirstExtractor<std::pair<long long, int> >, WTF::IntHash<unsigned long long>, WTF::PairHashTraits<WTF::HashTraits<long long>, WTF::HashTraits<int> >, WTF::HashTraits<long long> >::lookup(long long const&) + 24 (HashTable.h:331)
2 com.apple.WebCore 0x01c99f33 WTF::HashMap<long long, WTF::RefPtr<WebCore::InspectorResource>, WTF::IntHash<unsigned long long>, WTF::HashTraits<long long>, WTF::HashTraits<WTF::RefPtr<WebCore::InspectorResource> > >::get(long long const&) const + 55 (HashMap.h:298)
3 com.apple.WebCore 0x01c96abe WebCore::addSourceToFrame(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) + 304 (InspectorController.cpp:260)
4 com.apple.JavaScriptCore 0x0049889f KJS::JSCallbackFunction::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 241 (JSCallbackFunction.cpp:65)
5 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
6 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
7 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
8 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
9 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
10 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
11 com.apple.JavaScriptCore 0x0044bcbf KJS::IfNode::execute(KJS::ExecState*) + 113 (nodes.cpp:3677)
12 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
13 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
14 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
15 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
16 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
17 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
18 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
19 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
20 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
21 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
22 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
23 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
24 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
25 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
26 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
27 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
28 com.apple.JavaScriptCore 0x0044bcbf KJS::IfNode::execute(KJS::ExecState*) + 113 (nodes.cpp:3677)
29 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
30 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
31 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
32 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
33 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
34 com.apple.JavaScriptCore 0x0043e12d KJS::JSObject::put(KJS::ExecState*, KJS::Identifier const&, KJS::JSValue*, int) + 565 (object.cpp:265)
35 com.apple.JavaScriptCore 0x0044c641 KJS::AssignDotNode::evaluate(KJS::ExecState*) + 225 (nodes.cpp:3314)
36 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
37 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
38 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
39 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
40 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
41 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
42 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
43 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
44 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
45 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
46 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
47 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
48 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
49 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
50 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
51 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
52 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
53 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
54 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
55 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
56 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
57 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
58 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
59 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
60 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
61 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
62 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
63 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
64 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
65 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
66 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
67 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
68 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
69 com.apple.JavaScriptCore 0x0044bcbf KJS::IfNode::execute(KJS::ExecState*) + 113 (nodes.cpp:3677)
70 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
71 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
72 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
73 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
74 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
75 com.apple.JavaScriptCore 0x00496c9e KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 776 (nodes.cpp:1223)
76 com.apple.JavaScriptCore 0x004598d0 KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1229)
77 com.apple.JavaScriptCore 0x0044bd69 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3640)
78 com.apple.JavaScriptCore 0x0044bcbf KJS::IfNode::execute(KJS::ExecState*) + 113 (nodes.cpp:3677)
79 com.apple.JavaScriptCore 0x0042cfd7 KJS::statementListExecute(WTF::Vector<WTF::RefPtr<KJS::StatementNode>, 0ul>&, KJS::ExecState*) + 85 (nodes.cpp:3593)
80 com.apple.JavaScriptCore 0x0042d064 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3619)
81 com.apple.JavaScriptCore 0x00449476 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4520)
82 com.apple.JavaScriptCore 0x00438410 KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 116 (function.cpp:76)
83 com.apple.JavaScriptCore 0x0043dc3c KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 222 (object.cpp:96)
84 com.apple.WebCore 0x02006abc WebCore::JSAbstractEventListener::handleEvent(WebCore::Event*, bool) + 608 (kjs_events.cpp:114)
85 com.apple.WebCore 0x01b9ceeb WebCore::EventTarget::handleLocalEvents(WebCore::EventTargetNode*, WebCore::Event*, bool) + 385 (EventTarget.cpp:305)
86 com.apple.WebCore 0x01b9d614 WebCore::EventTargetNode::handleLocalEvents(WebCore::Event*, bool) + 118 (EventTargetNode.cpp:100)
87 com.apple.WebCore 0x01b9c94a WebCore::EventTarget::dispatchGenericEvent(WebCore::EventTargetNode*, WTF::PassRefPtr<WebCore::Event>, int&, bool) + 1260 (EventTarget.cpp:225)
88 com.apple.WebCore 0x01b9dc32 WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, int&, bool) + 364 (EventTargetNode.cpp:115)
89 com.apple.WebCore 0x01b9e925 WebCore::EventTargetNode::dispatchMouseEvent(WebCore::AtomicString const&, int, int, int, int, int, int, bool, bool, bool, bool, bool, WebCore::Node*, WTF::PassRefPtr<WebCore::Event>) + 697 (EventTargetNode.cpp:289)
90 com.apple.WebCore 0x01b9f079 WebCore::EventTargetNode::dispatchMouseEvent(WebCore::PlatformMouseEvent const&, WebCore::AtomicString const&, int, WebCore::Node*) + 497 (EventTargetNode.cpp:206)
91 com.apple.WebCore 0x01b949fe WebCore::EventHandler::dispatchMouseEvent(WebCore::AtomicString const&, WebCore::Node*, bool, int, WebCore::PlatformMouseEvent const&, bool) + 148 (EventHandler.cpp:1276)
92 com.apple.WebCore 0x01b9615d WebCore::EventHandler::handleMousePressEvent(WebCore::PlatformMouseEvent const&) + 975 (EventHandler.cpp:877)
93 com.apple.WebCore 0x01b9a78a WebCore::EventHandler::mouseDown(NSEvent*) + 554 (EventHandlerMac.mm:480)
94 com.apple.WebKit 0x001d105f -[WebHTMLView mouseDown:] + 499 (WebHTMLView.mm:2982)
95 com.apple.AppKit 0x9294cd9b -[NSWindow sendEvent:] + 5362
96 com.apple.AppKit 0x92919a2c -[NSApplication sendEvent:] + 2766
97 com.apple.Safari 0x000324a8 0x1000 + 201896
98 com.apple.AppKit 0x92877705 -[NSApplication run] + 847
99 com.apple.AppKit 0x928449ba NSApplicationMain + 574
100 com.apple.Safari 0x00002876 0x1000 + 6262
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
John Ripley
I'm having the same assertion, in a different place. This is due to HashMap/HashTable not allowing key values 0 or -1 for integer->* maps. They are reserved as the "empty" and "deleted" bin values.
In my case, NPN_GetIntIdentifier uses HashMap<int32, NPIdentifier> to associate integer keys with unique NPIdentifiers (actually PrivateIdentifier*). When a plugin asks for an NPIdentifier associated with 0 or -1, it will assert. I'm currently working around this by remapping the incoming int32 values to uint64 and setting bit 32, thus avoiding values 0 or -1.
It's a silly workaround. Can we make HashMap stop using special values for integer keys?
John Ripley
(In reply to comment #1)
> I'm having the same assertion, in a different place. This is due to
> HashMap/HashTable not allowing key values 0 or -1 for integer->* maps. They are
> reserved as the "empty" and "deleted" bin values.
Scratch that - it's unrelated. I'll file a separate bug.
Matt Lilek
I've been hitting this more and more lately, especially since the improved inspector console landed. Always happens when I'm clicking a url in a console message.
Frances Cornwall
The bug is a resolved duplicate of: https://bugs.webkit.org/show_bug.cgi?id=56376.
Frances Cornwall
*** This bug has been marked as a duplicate of bug 56376 ***