<?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>140868</bug_id>
          
          <creation_ts>2015-01-25 11:16:09 -0800</creation_ts>
          <short_desc>[Win] Assertion trying to add notification listener</short_desc>
          <delta_ts>2015-01-25 11:16:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <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>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064015</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-25 11:16:09 -0800</bug_when>
    <thetext>The following layout tests crash in debug mode when trying to add a notification listener:

accessibility/notification-listeners.html
accessibility/combo-box-collapsed-selection-changed.html

The crash trace looks like the following:

&gt;	WTF.dll!WTFCrash() Line 321	C++
 	DumpRenderTree.dll!COMPtr&lt;IAccessible&gt;::operator&amp;() Line 76	C++
 	DumpRenderTree.dll!WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;::constructDeletedValue(COMPtr&lt;IAccessible&gt; &amp; slot) Line 228	C++
 	DumpRenderTree.dll!WTF::KeyValuePairHashTraits&lt;WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::constructDeletedValue(WTF::KeyValuePair&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *&gt; &amp; slot) Line 217	C++
 	DumpRenderTree.dll!WTF::HashTable&lt;COMPtr&lt;IAccessible&gt;,WTF::KeyValuePair&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *&gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *&gt; &gt;,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashMap&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::KeyValuePairTraits,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt; &gt;::checkKey&lt;WTF::HashMapTranslator&lt;WTF::HashMap&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::KeyValuePairTraits,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt; &gt;,COMPtr&lt;IAccessible&gt; &gt;(const COMPtr&lt;IAccessible&gt; &amp; key) Line 580	C++
 	DumpRenderTree.dll!WTF::HashTable&lt;COMPtr&lt;IAccessible&gt;,WTF::KeyValuePair&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *&gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *&gt; &gt;,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashMap&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::KeyValuePairTraits,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt; &gt;::add&lt;WTF::HashMapTranslator&lt;WTF::HashMap&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::KeyValuePairTraits,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt; &gt;,COMPtr&lt;IAccessible&gt; const &amp;,OpaqueJSValue * &amp;&gt;(const COMPtr&lt;IAccessible&gt; &amp; key, OpaqueJSValue * &amp; extra) Line 795	C++
 	DumpRenderTree.dll!WTF::HashMap&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::inlineAdd&lt;COMPtr&lt;IAccessible&gt; const &amp;,OpaqueJSValue * &amp;&gt;(const COMPtr&lt;IAccessible&gt; &amp; key, OpaqueJSValue * &amp; value) Line 296	C++
 	DumpRenderTree.dll!WTF::HashMap&lt;COMPtr&lt;IAccessible&gt;,OpaqueJSValue *,WTF::PtrHash&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;COMPtr&lt;IAccessible&gt; &gt;,WTF::HashTraits&lt;OpaqueJSValue *&gt; &gt;::add&lt;OpaqueJSValue * &amp;&gt;(const COMPtr&lt;IAccessible&gt; &amp; key, OpaqueJSValue * &amp; mapped) Line 324	C++
 	DumpRenderTree.dll!AccessibilityController::winAddNotificationListener(COMPtr&lt;IAccessible&gt; element, OpaqueJSValue * functionCallback) Line 374	C++
 	DumpRenderTree.dll!AccessibilityUIElement::addNotificationListener(OpaqueJSValue * functionCallback) Line 817	C++
 	DumpRenderTree.dll!addNotificationListenerCallback(const OpaqueJSContext * context, OpaqueJSValue * function, OpaqueJSValue * thisObject, unsigned int argumentCount, const OpaqueJSValue * const * arguments, const OpaqueJSValue * * exception) Line 1188	C++
 	JavaScriptCore.dll!JSC::APICallbackFunction::call&lt;JSC::JSCallbackFunction&gt;(JSC::ExecState * exec) Line 61	C++
 	JavaScriptCore.dll!JSC::LLInt::handleHostCall(JSC::ExecState * execCallee, JSC::Instruction * pc, JSC::JSValue callee, JSC::CodeSpecializationKind kind) Line 1051	C++
 	JavaScriptCore.dll!JSC::LLInt::setUpCall(JSC::ExecState * execCallee, JSC::Instruction * pc, JSC::CodeSpecializationKind kind, JSC::JSValue calleeAsValue, JSC::LLIntCallLinkInfo * callLinkInfo) Line 1097	C++
 	JavaScriptCore.dll!JSC::LLInt::genericCall(JSC::ExecState * exec, JSC::Instruction * pc, JSC::CodeSpecializationKind kind) Line 1159	C++
 	JavaScriptCore.dll!llint_slow_path_call(JSC::ExecState * exec, JSC::Instruction * pc) Line 1165	C++
 	JavaScriptCore.dll!llint_entry() Line 7201	Unknown
 	JavaScriptCore.dll!vmEntryToJavaScript() Line 110	Unknown
 	JavaScriptCore.dll!JSC::JITCode::execute(JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) Line 77	C++
 	JavaScriptCore.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program, JSC::ExecState * callFrame, JSC::JSObject * thisObj) Line 914	C++
 	JavaScriptCore.dll!JSC::evaluate(JSC::ExecState * exec, const JSC::SourceCode &amp; source, JSC::JSValue thisValue, JSC::JSValue * returnedException) Line 83	C++
 	WebKit.dll!WebCore::JSMainThreadExecState::evaluate(JSC::ExecState * exec, const JSC::SourceCode &amp; source, JSC::JSValue thisValue, JSC::JSValue * exception) Line 62	C++
 	WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode &amp; sourceCode, WebCore::DOMWrapperWorld &amp; world) Line 151	C++
 	WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode &amp; sourceCode) Line 167	C++
 	WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode &amp; sourceCode) Line 301	C++
 	WebKit.dll!WebCore::ScriptElement::prepareScript(const WTF::TextPosition &amp; scriptStartPosition, WebCore::ScriptElement::LegacyTypeSupport supportLegacyTypes) Line 237	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::runScript(WebCore::Element * script, const WTF::TextPosition &amp; scriptStartPosition) Line 304	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt; scriptElement, const WTF::TextPosition &amp; scriptStartPosition) Line 177	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() Line 197	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode mode, WebCore::PumpSession &amp; session) Line 214	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode mode) Line 259	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode mode) Line 167	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution() Line 497	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource * cachedResource) Line 537	C++
 	WebKit.dll!WebCore::CachedResource::checkNotify() Line 296	C++
 	WebKit.dll!WebCore::CachedResource::finishLoading(WebCore::SharedBuffer * __formal) Line 313	C++
 	WebKit.dll!WebCore::CachedScript::finishLoading(WebCore::SharedBuffer * data) Line 87	C++
 	WebKit.dll!WebCore::SubresourceLoader::didFinishLoading(double finishTime) Line 366	C++
 	WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal, double finishTime) Line 503	C++
 	WebKit.dll!WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading() Line 181	C++
 	WebKit.dll!WebCore::ResourceHandleCFURLConnectionDelegate::didFinishLoadingCallback(_CFURLConnection * __formal, const void * clientInfo) Line 88	C++
 	CFNetwork.dll!URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue * preQ) Line 1739	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e, long count) Line 2256	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e, long count) Line 2328	C++
 	CFNetwork.dll!XConnectionEventQueue&lt;enum XClientEvent,XClientEventParams&gt;::processAllEvents() Line 231	C++
 	CFNetwork.dll!URLConnectionClient::processEvents() Line 362	C++
 	CFNetwork.dll!MultiplexerSource::perform() Line 229	C++
 	CoreFoundation.dll!__CFRunLoopDoSources0(__CFRunLoop * rl, __CFRunLoopMode * rlm, unsigned char stopAfterHandle) Line 41844	C++
 	CoreFoundation.dll!__CFRunLoopRun(__CFRunLoop * rl, __CFRunLoopMode * rlm, double seconds, unsigned char stopAfterHandle, __CFRunLoopMode * previousMode) Line 42281	C++
 	CoreFoundation.dll!CFRunLoopRunSpecific(__CFRunLoop * rl, const __CFString * modeName, double seconds, unsigned char returnAfterSourceHandled) Line 42477	C++
 	CoreFoundation.dll!CFRunLoopRunInMode(const __CFString * modeName, double seconds, unsigned char returnAfterSourceHandled) Line 42511	C++
 	DumpRenderTree.dll!runTest(const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; inputLine) Line 1129	C++
 	DumpRenderTree.dll!main(int argc, const char * * argv) Line 1484	C++
 	DumpRenderTree.dll!dllLauncherEntryPoint(int argc, const char * * argv) Line 1514	C++
 	DumpRenderTree.exe!main(int argc, const char * * argv) Line 239	C++
 	[External Code]	

The failing assertion is:

    T** operator&amp;() { ASSERT(!m_ptr); return &amp;m_ptr; }</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>