<?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>40390</bug_id>
          
          <creation_ts>2010-06-09 14:39:35 -0700</creation_ts>
          <short_desc>Destroyed popup menu gets called during AutoFill thus crashing the tab.</short_desc>
          <delta_ts>2010-06-11 10:58:35 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>40459</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="George Yakovlev">georgey</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jhawkins</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236016</commentid>
    <comment_count>0</comment_count>
    <who name="George Yakovlev">georgey</who>
    <bug_when>2010-06-09 14:39:35 -0700</bug_when>
    <thetext>This verified using chromium.

1. Have two autofill profiles, one with name only. 
2. Go to https://scgi.ebay.com/ws/eBayISAPI.dll?RegisterEnterInfo works.
3. Autofill by clicking on first name and selecting name-only profile.
4. Click on the field again to re-select profiles

list of profiles should appear. Instead tab crashes.

Call stack:
 	chrome.dll!WebKit::WebPopupMenuImpl::client()  Line 80 + 0x11 bytes	C++
	chrome.dll!WebKit::WebViewImpl::refreshSuggestionsPopup()  Line 2105 + 0x14 bytes	C++
 	chrome.dll!WebKit::WebViewImpl::applyAutoFillSuggestions(const WebKit::WebNode &amp; node={...}, const WebKit::WebVector&lt;WebKit::WebString&gt; &amp; names={...}, const WebKit::WebVector&lt;WebKit::WebString&gt; &amp; labels={...}, int defaultSuggestionIndex=-1)  Line 1836	C++
 	chrome.dll!RenderView::OnAutoFillSuggestionsReturned(int query_id=1, const std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; &amp; values=[1](&quot;a56757576576&quot;), const std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; &amp; labels=[1](&quot;#2&quot;), int default_suggestion_index=-1)  Line 1486 + 0x4b bytes	C++
 	chrome.dll!DispatchToMethod&lt;RenderView,void (__thiscall RenderView::*)(int,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; const &amp;,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; const &amp;,int),int,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt;,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt;,int&gt;(RenderView * obj=0x05550400, void (int, const std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; &amp;, const std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; &amp;, int)* method=0x5a1f6600, const Tuple4&lt;int,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt;,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt;,int&gt; &amp; arg={...})  Line 441 + 0x36 bytes	C++
 	chrome.dll!IPC::MessageWithTuple&lt;Tuple4&lt;int,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt;,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt;,int&gt; &gt;::Dispatch&lt;RenderView,void (__thiscall RenderView::*)(int,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; const &amp;,std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; const &amp;,int)&gt;(const IPC::Message * msg=0x064ce5a8, RenderView * obj=0x05550400, void (int, const std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; &amp;, const std::vector&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::allocator&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt; &gt; &amp;, int)* func=0x5a1f6600)  Line 1020 + 0x23 bytes	C++
 	chrome.dll!RenderView::OnMessageReceived(const IPC::Message &amp; message={...})  Line 653 + 0x4a bytes	C++
 	chrome.dll!MessageRouter::RouteMessage(const IPC::Message &amp; msg={...})  Line 40 + 0x13 bytes	C++
 	chrome.dll!MessageRouter::OnMessageReceived(const IPC::Message &amp; msg={...})  Line 31 + 0x13 bytes	C++

cause:
in WebViewImpl::refreshSuggestionsPopup()
        WebPopupMenuImpl* popupMenu =
            static_cast&lt;WebPopupMenuImpl*&gt;(m_suggestionsPopup-&gt;client());
returns NULL, and crashes next line.
        popupMenu-&gt;client()-&gt;setWindowRect(newBounds);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236900</commentid>
    <comment_count>1</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-06-11 10:45:01 -0700</bug_when>
    <thetext>I took a look at this George, and the proposed solution (offline) is actually not correct.  The problem is that the AutoFillPopupMenuClient is not notifying the WebView when the popup hides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236901</commentid>
    <comment_count>2</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-06-11 10:45:44 -0700</bug_when>
    <thetext>So this bug should probably be closed in favor of https://bugs.webkit.org/show_bug.cgi?id=40459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236909</commentid>
    <comment_count>3</comment_count>
    <who name="George Yakovlev">georgey</who>
    <bug_when>2010-06-11 10:58:35 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 40459 ***</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>