<?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>96932</bug_id>
          
          <creation_ts>2012-09-17 10:43:03 -0700</creation_ts>
          <short_desc>[GTK] [Stable] Infinite recursion in WebCore::AXObjectCache::getOrCreate</short_desc>
          <delta_ts>2012-09-21 12:40:01 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>722038</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-17 10:43:03 -0700</bug_when>
    <thetext>Here&apos;s the backtrace:


#98746 0x00007ffff5f0eb6e in WebCore::AccessibilityRenderObject::create(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98747 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98748 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98749 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98750 0x00007ffff5f10f43 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98751 0x00007ffff5f14dc0 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98752 0x00007ffff5efe022 in WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent(WebCore::AccessibilityRole) const () from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98753 0x00007ffff5efe0ac in WebCore::AccessibilityNodeObject::determineAriaRoleAttribute() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98754 0x00007ffff5f11dbc in WebCore::AccessibilityRenderObject::determineAccessibilityRole() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98755 0x00007ffff5efd98d in WebCore::AccessibilityNodeObject::init() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98756 0x00007ffff5f0eb6e in WebCore::AccessibilityRenderObject::create(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98757 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98758 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98759 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98760 0x00007ffff5f10f43 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98761 0x00007ffff5f14dc0 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98762 0x00007ffff5efe022 in WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent(WebCore::AccessibilityRole) const () from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98763 0x00007ffff5efe0ac in WebCore::AccessibilityNodeObject::determineAriaRoleAttribute() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98764 0x00007ffff5f11dbc in WebCore::AccessibilityRenderObject::determineAccessibilityRole() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98765 0x00007ffff5efd98d in WebCore::AccessibilityNodeObject::init() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98766 0x00007ffff5f0eb6e in WebCore::AccessibilityRenderObject::create(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98767 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98768 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98769 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()

#98773 0x00007ffff5efe0ac in WebCore::AccessibilityNodeObject::determineAriaRoleAttribute() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98774 0x00007ffff5f11dbc in WebCore::AccessibilityRenderObject::determineAccessibilityRole() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98775 0x00007ffff5efd98d in WebCore::AccessibilityNodeObject::init() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98776 0x00007ffff5f0eb6e in WebCore::AccessibilityRenderObject::create(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98777 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98778 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98779 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98780 0x00007ffff5f10f43 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98781 0x00007ffff5f14dc0 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98782 0x00007ffff5efe022 in WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent(WebCore::AccessibilityRole) const () from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98783 0x00007ffff5efe0ac in WebCore::AccessibilityNodeObject::determineAriaRoleAttribute() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98784 0x00007ffff5f11dbc in WebCore::AccessibilityRenderObject::determineAccessibilityRole() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98785 0x00007ffff5efd98d in WebCore::AccessibilityNodeObject::init() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98786 0x00007ffff5f0eb6e in WebCore::AccessibilityRenderObject::create(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98787 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98788 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98789 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98790 0x00007ffff5f10f43 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98791 0x00007ffff5f14dc0 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98792 0x00007ffff5efe022 in WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent(WebCore::AccessibilityRole) const () from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722060</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-17 10:59:26 -0700</bug_when>
    <thetext>Oops. Here&apos;s the bottom of the stack:

#98817 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98818 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98819 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98820 0x00007ffff5f10f43 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98821 0x00007ffff5f14dc0 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98822 0x00007ffff5efe022 in WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent(WebCore::AccessibilityRole) const () from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98823 0x00007ffff5efe0ac in WebCore::AccessibilityNodeObject::determineAriaRoleAttribute() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98824 0x00007ffff5f11dbc in WebCore::AccessibilityRenderObject::determineAccessibilityRole() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98825 0x00007ffff5efd98d in WebCore::AccessibilityNodeObject::init() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98826 0x00007ffff5f0eb6e in WebCore::AccessibilityRenderObject::create(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98827 0x00007ffff5f1c61c in WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98828 0x00007ffff5f02cbf in WebCore::AccessibilityObject::firstAnonymousBlockChild() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98829 0x00007ffff6e4f326 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98830 0x00007ffff5f10f43 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98831 0x00007ffff5f14dc0 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98832 0x00007ffff5f13d0b in WebCore::AccessibilityRenderObject::addChildren() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98833 0x00007ffff5f023cd in WebCore::AccessibilityObject::children() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98834 0x00007ffff5f13dba in WebCore::AccessibilityRenderObject::addChildren() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98835 0x00007ffff5f023cd in WebCore::AccessibilityObject::children() ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98836 0x00007ffff6e5b02c in webkitAccessibleGetNChildren(_AtkObject*) ()
   from /home/martin/work/gnome-shell/install/lib/libwebkitgtk-3.0.so.0
#98837 0x00007fffeef0c44c in append_children (traversal=0x6dd2c0, accessible=0x2b75770) at accessible-cache.c:235
#98838 add_pending_items (data=&lt;optimized out&gt;) at accessible-cache.c:291
#98839 0x00007ffff3c893e3 in g_main_dispatch (context=0x704d40) at gmain.c:2715
#98840 g_main_context_dispatch (context=0x704d40) at gmain.c:3219
#98841 0x00007ffff3c89730 in g_main_context_iterate (dispatch=1, block=&lt;optimized out&gt;, context=0x704d40, 
    self=&lt;optimized out&gt;) at gmain.c:3290
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
#98842 g_main_context_iterate (context=0x704d40, block=&lt;optimized out&gt;, dispatch=1, self=&lt;optimized out&gt;)
    at gmain.c:3227
#98843 0x00007ffff3c897f4 in g_main_context_iteration (context=0x704d40, may_block=1) at gmain.c:3351
#98844 0x00007ffff42538b4 in g_application_run (application=0x808000, argc=&lt;optimized out&gt;, argv=0x7fffffffd668)
    at gapplication.c:1607</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722074</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-17 11:07:04 -0700</bug_when>
    <thetext>This seems to be the crux of the problem:

WebCore::AccessibilityObject::firstAnonymousBlockChild calls
WebCore::AXObjectCache::getOrCreate calls
WebCore::AccessibilityRenderObject::create calls
WebCore::AccessibilityNodeObject::init calls
WebCore::AccessibilityRenderObject::determineAccessibilityRole calls
WebCore::AccessibilityNodeObject::determineAriaRoleAttribute calls
WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent calls
WebCore::AccessibilityRenderObject::accessibilityIsIgnored calls
WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase calls
WebCore::AccessibilityObject::accessibilityPlatformIncludesObject calls
WebCore::AccessibilityObject::firstAnonymousBlockChild</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722219</commentid>
    <comment_count>3</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2012-09-17 13:29:52 -0700</bug_when>
    <thetext>I&apos;m working on this.

Rather than merely back out the associated commit (which would result in needed objects getting ignored by the core a11y code), worst case scenario is that we always include objects of ParagraphRole and DivRole for now. That would eliminate the recursion and the price would not be too high: the occasional extra paragraph/div.

In the meantime, if you can find the original test case for the purpose of a new Layout Test, that would be great as I have not encountered this crash and am not yet familiar with the ARIA code that is getting called enough to guess the exact scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724160</commentid>
    <comment_count>4</comment_count>
      <attachid>164839</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2012-09-19 22:31:06 -0700</bug_when>
    <thetext>Created attachment 164839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724162</commentid>
    <comment_count>5</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2012-09-19 22:34:04 -0700</bug_when>
    <thetext>Martin, sorry for the delay on this. The F18-related crashers and inability to run any WebKitGtk test wound up requiring downgrades, re-installations, etc. to F17 :(

Anyhoo, the attached patch solves the problem and includes a new test based on the Google+ crash. Thanks for that! Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724751</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-20 12:21:59 -0700</bug_when>
    <thetext>It&apos;s always good to make tests as simple and minimal as possible, so please consider this alternate test:

&lt;html&gt;
&lt;/body&gt;

&lt;div&gt;
    The presence of remapped ARIA objects should not crash the test harness.
    &lt;a role=&quot;option&quot;&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;script&gt;
    if (window.testRunner)
        window.testRunner.dumpAsText();
    document.body.focus();
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724752</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-20 12:22:19 -0700</bug_when>
    <thetext>By the way, thanks for fixing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724802</commentid>
    <comment_count>8</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2012-09-20 13:26:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; It&apos;s always good to make tests as simple and minimal as possible, so please consider this alternate test:
&gt; 
&gt; &lt;html&gt;
&gt; &lt;/body&gt;
&gt; 
&gt; &lt;div&gt;
&gt;     The presence of remapped ARIA objects should not crash the test harness.
&gt;     &lt;a role=&quot;option&quot;&gt;&lt;/a&gt;
&gt; &lt;/div&gt;
&gt; 
&gt; &lt;script&gt;
&gt;     if (window.testRunner)
&gt;         window.testRunner.dumpAsText();
&gt;     document.body.focus();
&gt; &lt;/script&gt;
&gt; 
&gt; &lt;/body&gt;
&gt; &lt;/html&gt;

Does that reliably crash for you? I tried all sorts of simple ways to make the crash occur 100% of the time, but could not:

* Just loading the test and giving the body focus
* Synthesizing a click on the various elements
* Directly accessing a specific accessible (and I tried them all)

The reason I went with a full hierarchy dump is that the one way I can reliably repro the crash outside of the test harness is to view the page and drill down the accessible tree in Accerciser. So that is what I did. For me the attached test is the ONLY thing which will crash 100% of the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724836</commentid>
    <comment_count>9</comment_count>
      <attachid>164839</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-20 14:02:25 -0700</bug_when>
    <thetext>Comment on attachment 164839
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=164839&amp;action=review

&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp:95
&gt; +        for (RenderObject* r = renderer()-&gt;firstChild(); r; r = r-&gt;nextSibling()) {
&gt; +            if (r-&gt;isAnonymousBlock())
&gt; +                return IncludeObject;

I notice here that the check for child-&gt;isLink() is gone now. Was it unimportant before or was it replaced by another check? I&apos;m also a bit confused by the change in logic. I&apos;m probably reading it incorrectly.

My understanding:
Before: If the child is a link or the first child isn&apos;t an anonymous block, include the object.
Now: If any child is an anonymous block, include the object.

Not sure I understand that fully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725085</commentid>
    <comment_count>10</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2012-09-20 19:12:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 164839 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164839&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp:95
&gt; &gt; +        for (RenderObject* r = renderer()-&gt;firstChild(); r; r = r-&gt;nextSibling()) {
&gt; &gt; +            if (r-&gt;isAnonymousBlock())
&gt; &gt; +                return IncludeObject;
&gt; 
&gt; I notice here that the check for child-&gt;isLink() is gone now. Was it unimportant before or was it replaced by another check? I&apos;m also a bit confused by the change in logic. I&apos;m probably reading it incorrectly.
&gt; 
&gt; My understanding:
&gt; Before: If the child is a link or the first child isn&apos;t an anonymous block, include the object.
&gt; Now: If any child is an anonymous block, include the object.
&gt; 
&gt; Not sure I understand that fully.

The whole Accessible Anonymous Block (is that an oxymoron?) situation makes my eyes cross. So I am sure I&apos;m doing a poor job of explaining.

The change in logic is admittedly trading a bit of certainty for probability in order to achieve stability. FWIW there are already regression tests which I added back when I was initially sorting all of this out to ensure the critical problems don&apos;t creep back in. I think we&apos;ll find a new edge case here and there, but we can deal with those when they arise. Besides I&apos;ll take hypothetical edge case over a very real crasher any day of the week. ;)

Anyhoo.... 

Given a Para/Div which has at least one anonymous block child, we want to include the Para/Div.
Exception 1: Nested anonymous blocks are a mess. Defer to WebCore.
Exception 2: The first child of the anonymous block is a link. In that case we also want to include the Para/Div because that Para/Div is the HTML element which contains the link.

The old/current/crashy logic was:
  * If none of Para/Div&apos;s children is an anonymous block: Defer to WebCore.
  * If the first child of the first anonymous block found is a link: include Para/Div.
  * If the first child of the first anonymous block has no anonymous block children, we are not in a nested anonymous block situation: Include Para/Div.
  * Otherwise fall back on the default WebCore behavior to sort out the nested anonymous block mess.

The new/proposed logic is:
  * If we&apos;re pretty confident [1] none of Para/Div&apos;s children is an anonymous block: Defer to WebCore.
  * If Para/Div&apos;s parent is an anonymous block we may [2] have a mess of nested anonymous blocks: Defer to WebCore.
  * We are not in a nested anonymous block situation. Thus if Para/Div has any anonymous block children: include Para/Div. [3]

[1] What really matters / has been problematic is Anonymous Blocks *which contain text* getting included at the expense of ignoring the parent Para/Div. If there is no text under the Para/Div element at all, there cannot be Anonymous Blocks with text as immediate children.

[2] Then again, we may not. There&apos;s a chance for an unaddressed edge case here. Haven&apos;t found it yet. And perhaps WebCore is just doing the RightThing(tm) for us in these cases.

[3] The Para/Div-&gt;Anon Block-&gt;Link case gets addressed here because we include all Para/Div-&gt;Anon Block cases as long as the parent of the Para/Div is not also an Anon Block. And perhaps we are missing another edge case here. But falling back to WebCore to sort out this mess is not, to me, a huge risk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725137</commentid>
    <comment_count>11</comment_count>
      <attachid>165043</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2012-09-20 21:21:49 -0700</bug_when>
    <thetext>Created attachment 165043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725715</commentid>
    <comment_count>12</comment_count>
      <attachid>165043</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 12:39:58 -0700</bug_when>
    <thetext>Comment on attachment 165043
Patch

Clearing flags on attachment: 165043

Committed r129246: &lt;http://trac.webkit.org/changeset/129246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725716</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 12:40:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164839</attachid>
            <date>2012-09-19 22:31:06 -0700</date>
            <delta_ts>2012-09-20 21:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96932-20120920013031.patch</filename>
            <type>text/plain</type>
            <size>6119</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk3NTk4MzIyNjQ3ZDk3
MDM5NmI1MzI1YTIzZTlkMzU3YjUwMGRkMC4uZGRiN2FkZTE0MzE3NzcxZTBhZGJjYWNlNTY2NzY4
M2I3NWIyOWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTE5ICBKb2Fu
bWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbU3RhYmxl
XSBJbmZpbml0ZSByZWN1cnNpb24gaW4gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVh
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0
aGUgZGVjaXNpb24gYmFzZWQgb24gUmVuZGVyT2JqZWN0cyByYXRoZXIgdGhhbiBBY2Nlc3NpYmls
aXR5T2JqZWN0cworICAgICAgICB0byBhdm9pZCB0aGUgaW5maW5pdGUgcmVjdXJzaW9uIHdoaWNo
IG9jY3VycyB3aGVuIHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudAorICAgICAgICBnZXRzIGNhbGxl
ZC4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9yZW1hcHBlZC1h
cmlhLWNyYXNoLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxp
dHlPYmplY3RBdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QpOgorCiAyMDEyLTA5LTE5ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIEFYOiBBIGZldyBj
b250cm9sIHR5cGVzIGFyZSByZXR1cm5pbmcgdGhlIHdyb25nIGFuc3dlciBmb3IgaXNSZWFkT25s
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJp
bGl0eU9iamVjdEF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0QXRrLmNwcAppbmRleCA0MmNmMDJlZDUzMmJlOGZkOWM5ZDQzYzc1MTNi
ZTYxOTYxOGM3MGQ5Li4wY2I3YTk2ZTc1YWYzNzllZmVjYTBhMDY5YzM2MTAzOGYwMjI3MGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0QXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0QXRrLmNwcApAQCAtODQsMTMgKzg0LDE2IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3Jt
SW5jbHVkZXNPCiAgICAgLy8gdXN1YWxseSBoYXZlIG5vIG5lZWQgZm9yIHRoZSBhbm9ueW1vdXMg
YmxvY2suIEFuZCB3aGVuIHRoZSB3cm9uZyBvYmplY3RzCiAgICAgLy8gZ2V0IGluY2x1ZGVkIG9y
IGlnbm9yZWQsIG5lZWRlZCBhY2Nlc3NpYmlsaXR5IHNpZ25hbHMgZG8gbm90IGdldCBlbWl0dGVk
LgogICAgIGlmIChyb2xlID09IFBhcmFncmFwaFJvbGUgfHwgcm9sZSA9PSBEaXZSb2xlKSB7Ci0g
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gZmlyc3RBbm9ueW1vdXNCbG9ja0No
aWxkKCk7Ci0gICAgICAgIGlmICghY2hpbGQpCisgICAgICAgIGlmICh0ZXh0VW5kZXJFbGVtZW50
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKIAotICAg
ICAgICBjaGlsZCA9IGNoaWxkLT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiAo
Y2hpbGQtPmlzTGluaygpIHx8ICFjaGlsZC0+Zmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkpKQot
ICAgICAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CisgICAgICAgIGlmICghcGFyZW50LT5y
ZW5kZXJlcigpIHx8IHBhcmVudC0+cmVuZGVyZXIoKS0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAg
ICAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKKworICAgICAgICBmb3IgKFJlbmRlck9i
amVjdCogciA9IHJlbmRlcmVyKCktPmZpcnN0Q2hpbGQoKTsgcjsgciA9IHItPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgICAgIGlmIChyLT5pc0Fub255bW91c0Jsb2NrKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBC
bG9jayBzcGFucyByZXN1bHQgaW4gb2JqZWN0cyBvZiBBVEtfUk9MRV9QQU5FTCB3aGljaCBhcmUg
YWxtb3N0IGFsd2F5cyB1bndhbnRlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MGIxOWM0NDdkNTZmZGNmNTc4MDVmNjRk
OGMwNDcyODA3MmJjYjM1Li45Y2EzNjA4YjAwOTAwYjc3NjY4OWYzZDlmYjg0MmRjNDJjODk3ZjUy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMTkgIEpvYW5tYXJpZSBEaWdncyAgPGpk
aWdnc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtTdGFibGVdIEluZmluaXRlIHJlY3Vy
c2lvbiBpbiBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY5MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IHdoaWNo
IHJlcGxpY2F0ZXMgdGhlIHJlY3Vyc2lvbiBhbmQgY3Jhc2guCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS9yZW1hcHBlZC1hcmlhLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvcmVtYXBwZWQtYXJpYS1j
cmFzaC5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0xOSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpv
bmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogQSBmZXcgY29udHJvbCB0eXBlcyBhcmUgcmV0
dXJuaW5nIHRoZSB3cm9uZyBhbnN3ZXIgZm9yIGlzUmVhZE9ubHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3JlbWFwcGVkLWFyaWEtY3Jhc2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvcmVtYXBw
ZWQtYXJpYS1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhiYTJlYTEzMDA0ZDA2NjAy
ZGI1MzY4NTYwMGM1YWFlMTE0Mjk4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3JlbWFwcGVkLWFyaWEtY3Jhc2gtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTYgQEAKK0NsaWNrIG1lCitFbmQgb2YgdGVzdAorTWFrZSBzdXJlIHRoZSBw
cmVzZW5jZSBvZiBhIHJlbWFwcGVkIEFSSUEgb2JqZWN0IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQVhSb2xlOiBkb2N1bWVudCBmcmFtZSAK
KyAgICBBWFJvbGU6IGxpc3QgCisgICAgICAgIEFYUm9sZTogbGlzdCBpdGVtIEFYVmFsdWU6IAor
ICAgICAgICBBWFJvbGU6IGxpc3QgaXRlbSAKKyAgICBBWFJvbGU6IHNlY3Rpb24gQVhWYWx1ZTog
RW5kIG9mIHRlc3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS9yZW1hcHBlZC1hcmlhLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNj
ZXNzaWJpbGl0eS9yZW1hcHBlZC1hcmlhLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRhNDgwYWYy
MGU5MTE2NDk2YzUzYjAyNDc5MmE0NWQ3NzE2NGQyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3JlbWFwcGVkLWFyaWEtY3Jhc2guaHRt
bApAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworICAgIGZ1bmN0aW9uIGJ1aWxk
QWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eU9iamVjdCwgaW5kZW50KSB7CisgICAgICAg
IHZhciBzdHIgPSAiIjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRlbnQ7IGkrKykK
KyAgICAgICAgICAgIHN0ciArPSAiICAgICI7CisgICAgICAgIHN0ciArPSBhY2Nlc3NpYmlsaXR5
T2JqZWN0LnJvbGU7CisgICAgICAgIHN0ciArPSAiICIgKyBhY2Nlc3NpYmlsaXR5T2JqZWN0LnN0
cmluZ1ZhbHVlOworICAgICAgICBzdHIgKz0gIlxuIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRyZWUiKS5pbm5lclRleHQgKz0gc3RyOworCisgICAgICAgIGlmIChhY2Nlc3Np
YmlsaXR5T2JqZWN0LnN0cmluZ1ZhbHVlLmluZGV4T2YoJ0VuZCBvZiB0ZXN0JykgPj0gMCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgY291bnQgPSBhY2Nlc3NpYmls
aXR5T2JqZWN0LmNoaWxkcmVuQ291bnQ7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgeworICAgICAgICAgICAgaWYgKCFidWlsZEFjY2Vzc2liaWxpdHlUcmVlKGFjY2Vz
c2liaWxpdHlPYmplY3QuY2hpbGRBdEluZGV4KGkpLCBpbmRlbnQgKyAxKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8ZGl2IHJvbGU9Imxp
c3Rib3giIHRhYmluZGV4PSItMSIgYXJpYS1sYWJlbD0iQXBwIFJpYmJvbiIgaWQ9ImRpdjAiPgor
PGRpdiBuYXZpZD0iMSIgaWQ9ImRpdjEiPgorICA8YSBocmVmPSJmb28iIGFzcmM9InJpYmJvbiIg
c3R5bGU9ImZsb2F0OmxlZnQ7IiB0YWJpbmRleD0iLTEiIHJvbGU9Im9wdGlvbiIgaWQ9Imxpbmsx
Ij48L2E+Cis8L2Rpdj4KKzxkaXY+Cis8YSBocmVmPSJmb28iIGFzcmM9InJpYmJvbiIgc3R5bGU9
ImZsb2F0OmxlZnQ7IiB0YWJpbmRleD0iLTEiIHJvbGU9Im9wdGlvbiIgaWQ9ImxpbmsyIj4KKyAg
PGRpdiBpZD0iZGl2MiI+Q2xpY2sgbWU8L2Rpdj4KKzwvYT4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2
PkVuZCBvZiB0ZXN0PC9kaXY+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxwcmUgaWQ9InRy
ZWUiPjwvcHJlPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2Ny
aXB0aW9uKCJNYWtlIHN1cmUgdGhlIHByZXNlbmNlIG9mIGEgcmVtYXBwZWQgQVJJQSBvYmplY3Qg
ZG9lc24ndCBjYXVzZSBhIGNyYXNoIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgeworICAgICAgICAvLyBCdWlsZCB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHVwIHVu
dGlsICdFbmQgb2YgdGVzdCcgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIGRvY3VtZW50LmJvZHku
Zm9jdXMoKTsKKyAgICAgICAgYnVpbGRBY2Nlc3NpYmlsaXR5VHJlZShhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudCwgMCk7CisgICAgfQorCis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165043</attachid>
            <date>2012-09-20 21:21:49 -0700</date>
            <delta_ts>2012-09-21 12:39:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96932-20120921002114.patch</filename>
            <type>text/plain</type>
            <size>5034</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk3NTk4MzIyNjQ3ZDk3
MDM5NmI1MzI1YTIzZTlkMzU3YjUwMGRkMC4uMDlmNWY4M2U3N2YwZTI3Y2ExYWViZmE1NDI3ODhl
ZWM0MTNhOTM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTIwICBKb2Fu
bWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbU3RhYmxl
XSBJbmZpbml0ZSByZWN1cnNpb24gaW4gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVh
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0
aGUgZGVjaXNpb24gYmFzZWQgb24gUmVuZGVyT2JqZWN0cyByYXRoZXIgdGhhbiBBY2Nlc3NpYmls
aXR5T2JqZWN0cworICAgICAgICB0byBhdm9pZCB0aGUgaW5maW5pdGUgcmVjdXJzaW9uIHdoaWNo
IG9jY3VycyB3aGVuIHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudAorICAgICAgICBnZXRzIGNhbGxl
ZC4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9yZW1hcHBlZC1h
cmlhLWNyYXNoLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxp
dHlPYmplY3RBdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QpOgorCiAyMDEyLTA5LTE5ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIEFYOiBBIGZldyBj
b250cm9sIHR5cGVzIGFyZSByZXR1cm5pbmcgdGhlIHdyb25nIGFuc3dlciBmb3IgaXNSZWFkT25s
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJp
bGl0eU9iamVjdEF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0QXRrLmNwcAppbmRleCA0MmNmMDJlZDUzMmJlOGZkOWM5ZDQzYzc1MTNi
ZTYxOTYxOGM3MGQ5Li4wY2I3YTk2ZTc1YWYzNzllZmVjYTBhMDY5YzM2MTAzOGYwMjI3MGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0QXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0QXRrLmNwcApAQCAtODQsMTMgKzg0LDE2IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3Jt
SW5jbHVkZXNPCiAgICAgLy8gdXN1YWxseSBoYXZlIG5vIG5lZWQgZm9yIHRoZSBhbm9ueW1vdXMg
YmxvY2suIEFuZCB3aGVuIHRoZSB3cm9uZyBvYmplY3RzCiAgICAgLy8gZ2V0IGluY2x1ZGVkIG9y
IGlnbm9yZWQsIG5lZWRlZCBhY2Nlc3NpYmlsaXR5IHNpZ25hbHMgZG8gbm90IGdldCBlbWl0dGVk
LgogICAgIGlmIChyb2xlID09IFBhcmFncmFwaFJvbGUgfHwgcm9sZSA9PSBEaXZSb2xlKSB7Ci0g
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gZmlyc3RBbm9ueW1vdXNCbG9ja0No
aWxkKCk7Ci0gICAgICAgIGlmICghY2hpbGQpCisgICAgICAgIGlmICh0ZXh0VW5kZXJFbGVtZW50
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKIAotICAg
ICAgICBjaGlsZCA9IGNoaWxkLT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiAo
Y2hpbGQtPmlzTGluaygpIHx8ICFjaGlsZC0+Zmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkpKQot
ICAgICAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CisgICAgICAgIGlmICghcGFyZW50LT5y
ZW5kZXJlcigpIHx8IHBhcmVudC0+cmVuZGVyZXIoKS0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAg
ICAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKKworICAgICAgICBmb3IgKFJlbmRlck9i
amVjdCogciA9IHJlbmRlcmVyKCktPmZpcnN0Q2hpbGQoKTsgcjsgciA9IHItPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgICAgIGlmIChyLT5pc0Fub255bW91c0Jsb2NrKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBC
bG9jayBzcGFucyByZXN1bHQgaW4gb2JqZWN0cyBvZiBBVEtfUk9MRV9QQU5FTCB3aGljaCBhcmUg
YWxtb3N0IGFsd2F5cyB1bndhbnRlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MGIxOWM0NDdkNTZmZGNmNTc4MDVmNjRk
OGMwNDcyODA3MmJjYjM1Li4wYWUxOThhYjE1MTJjZDgyMzk1NGRmZTI0YzAzMWU2NzE0ZTJjYjkz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjAgIEpvYW5tYXJpZSBEaWdncyAgPGpk
aWdnc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtTdGFibGVdIEluZmluaXRlIHJlY3Vy
c2lvbiBpbiBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY5MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IHdoaWNo
IHJlcGxpY2F0ZXMgdGhlIHJlY3Vyc2lvbiBhbmQgY3Jhc2guCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS9yZW1hcHBlZC1hcmlhLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvcmVtYXBwZWQtYXJpYS1j
cmFzaC5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0xOSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpv
bmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogQSBmZXcgY29udHJvbCB0eXBlcyBhcmUgcmV0
dXJuaW5nIHRoZSB3cm9uZyBhbnN3ZXIgZm9yIGlzUmVhZE9ubHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3JlbWFwcGVkLWFyaWEtY3Jhc2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvcmVtYXBw
ZWQtYXJpYS1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY0YzgxNWM0YjM4NDBmMDc1
NTkxNDQwMmIzMjJkNDAwZTM5MDY0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3JlbWFwcGVkLWFyaWEtY3Jhc2gtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsOSBAQAorVGVzdCB0byBlbnN1cmUgYSByZW1hcHBlZCBBUklBIHJvbGUgZG9l
cyBub3QgcHJvZHVjZSBhIGNyYXNoLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3JlbWFwcGVkLWFy
aWEtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3Jl
bWFwcGVkLWFyaWEtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGRlYmJlOTk2NDBiMTU0ODBjMDJm
YmRkOWFiYmQxNjczOWU3MmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvcmVtYXBwZWQtYXJpYS1jcmFzaC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2Pgor
ICAgIDxhIHJvbGU9Im9wdGlvbiI+PC9hPgorPC9kaXY+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdCB0byBlbnN1cmUgYSByZW1hcHBlZCBBUklBIHJvbGUgZG9lcyBub3QgcHJvZHVjZSBhIGNy
YXNoLiIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTsKKwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZnVuY3Rp
b24gdG91Y2hUaGVFbnRpcmVBY2Nlc3NpYmlsaXR5VHJlZShhY2Nlc3NpYmlsaXR5T2JqZWN0KSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjY2Vzc2liaWxpdHlPYmplY3QuY2hp
bGRyZW5Db3VudDsgKytpKQorICAgICAgICAgICAgICAgIHRvdWNoVGhlRW50aXJlQWNjZXNzaWJp
bGl0eVRyZWUoYWNjZXNzaWJpbGl0eU9iamVjdC5jaGlsZEF0SW5kZXgoaSkpOworICAgICAgICB9
CisgICAgICAgIHRvdWNoVGhlRW50aXJlQWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>