<?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>106361</bug_id>
          
          <creation_ts>2013-01-08 11:58:07 -0800</creation_ts>
          <short_desc>[Mac] svg/custom/text-use-click-crash.xhtml added by r139029 hits assertion in enclosingTextFormControl</short_desc>
          <delta_ts>2013-01-23 12:37:33 -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>Forms</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>morrita</cc>
    
    <cc>rniwa</cc>
    
    <cc>shinyak</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>802463</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 11:58:07 -0800</bug_when>
    <thetext>http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r139078%20(4404)/results.html

Application Specific Information:
CRASHING TEST: svg/custom/text-use-click-crash.xhtml

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x00000001102263f6 WebCore::enclosingTextFormControl(WebCore::Position const&amp;) + 150 (HTMLTextFormControlElement.cpp:641)
1   com.apple.WebCore             	0x00000001100638f5 WebCore::FrameSelection::isInPasswordField() const + 37 (FrameSelection.cpp:1674)
2   com.apple.WebKit              	0x000000010f2e3190 isInPasswordField(WebCore::Frame*) + 48 (WebHTMLView.mm:3788)
3   com.apple.WebKit              	0x000000010f2ee353 -[WebHTMLView(WebNSTextInputSupport) _updateSecureInputState] + 275 (WebHTMLView.mm:6006)
4   com.apple.WebKit              	0x000000010f2ee552 -[WebHTMLView(WebNSTextInputSupport) _updateSelectionForInputManager] + 258 (WebHTMLView.mm:6040)
5   com.apple.WebKit              	0x000000010f2e973b -[WebHTMLView(WebInternal) _selectionChanged] + 43 (WebHTMLView.mm:5051)
6   com.apple.WebKit              	0x000000010f27f8d7 WebEditorClient::respondToChangedSelection(WebCore::Frame*) + 167 (WebEditorClient.mm:295)
7   com.apple.WebCore             	0x000000010ff06717 WebCore::Editor::notifyComponentsOnChangedSelection(WebCore::VisibleSelection const&amp;, unsigned int) + 87 (Editor.cpp:485)
8   com.apple.WebCore             	0x000000010ff13ab5 WebCore::Editor::respondToChangedSelection(WebCore::VisibleSelection const&amp;, unsigned int) + 2053 (Editor.cpp:2854)
9   com.apple.WebCore             	0x000000011005a6ad WebCore::FrameSelection::setSelection(WebCore::VisibleSelection const&amp;, unsigned int, WebCore::FrameSelection::CursorAlignOnScroll, WebCore::TextGranularity) + 909 (FrameSelection.cpp:314)
10  com.apple.WebCore             	0x0000000110064b60 WebCore::FrameSelection::setSelection(WebCore::VisibleSelection const&amp;, WebCore::TextGranularity) + 48 (FrameSelection.h:153)
11  com.apple.WebCore             	0x000000011005b421 WebCore::FrameSelection::setNonDirectionalSelectionIfNeeded(WebCore::VisibleSelection const&amp;, WebCore::TextGranularity, WebCore::FrameSelection::EndPointsAdjustmentMode) + 801 (FrameSelection.cpp:250)
12  com.apple.WebCore             	0x000000010ff5cb29 WebCore::EventHandler::updateSelectionForMouseDrag(WebCore::HitTestResult const&amp;) + 2137 (EventHandler.cpp:872)
13  com.apple.WebCore             	0x000000010ff5b7d0 WebCore::EventHandler::handleMouseDraggedEvent(WebCore::MouseEventWithHitTestResults const&amp;) + 704 (EventHandler.cpp:739)
14  com.apple.WebCore             	0x000000010ff614da WebCore::EventHandler::handleMouseMoveEvent(WebCore::PlatformMouseEvent const&amp;, WebCore::HitTestResult*, bool) + 2074 (EventHandler.cpp:1759)
15  com.apple.WebCore             	0x000000010ff70780 WebCore::EventHandler::mouseDragged(NSEvent*) + 128 (EventHandlerMac.mm:488)
16  com.apple.WebKit              	0x000000010f2e1fd0 -[WebHTMLView mouseDragged:] + 320 (WebHTMLView.mm:3627)
17  DumpRenderTree                	0x000000010df761b9 -[EventSendingController mouseMoveToX:Y:] + 1593 (EventSendingController.mm:487)
18  com.apple.CoreFoundation      	0x00007fff8f6e863c __invoking___ + 140
19  com.apple.CoreFoundation      	0x00007fff8f6e84d7 -[NSInvocation invoke] + 263
20  DumpRenderTree                	0x000000010df76993 +[EventSendingController replaySavedEvents] + 195 (EventSendingController.mm:579)
21  DumpRenderTree                	0x000000010df7562e -[EventSendingController mouseUp:withModifiers:] + 366 (EventSendingController.mm:404)
22  com.apple.CoreFoundation      	0x00007fff8f6e863c __invoking___ + 140
23  com.apple.CoreFoundation      	0x00007fff8f6e84d7 -[NSInvocation invoke] + 263
24  com.apple.WebCore             	0x0000000110b06b93 JSC::Bindings::ObjcInstance::invokeObjcMethod(JSC::ExecState*, JSC::Bindings::ObjcMethod*) + 1923 (objc_instance.mm:320)
25  com.apple.WebCore             	0x0000000110b063f0 JSC::Bindings::ObjcInstance::invokeMethod(JSC::ExecState*, JSC::RuntimeMethod*) + 304 (objc_instance.mm:232)
26  com.apple.WebCore             	0x0000000110ef57a2 JSC::callRuntimeMethod(JSC::ExecState*) + 530 (runtime_method.cpp:115)
27  com.apple.JavaScriptCore      	0x000000010e450779 JSC::LLInt::handleHostCall(JSC::ExecState*, JSC::Instruction*, JSC::JSValue, JSC::CodeSpecializationKind) + 329 (LLIntSlowPaths.cpp:1362)
28  com.apple.JavaScriptCore      	0x000000010e45169c JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) + 92 (LLIntSlowPaths.cpp:1406)
29  com.apple.JavaScriptCore      	0x000000010e451626 JSC::LLInt::genericCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind) + 246 (LLIntSlowPaths.cpp:1462)
30  com.apple.JavaScriptCore      	0x000000010e44e71c llint_slow_path_call + 60 (LLIntSlowPaths.cpp:1468)
31  com.apple.JavaScriptCore      	0x000000010e4573b1 llint_op_call + 184
32  com.apple.JavaScriptCore      	0x000000010e338cf4 JSC::JITCode::execute(JSC::JSStack*, JSC::ExecState*, JSC::JSGlobalData*) + 84 (JITCode.h:134)
33  com.apple.JavaScriptCore      	0x000000010e33577f JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) + 4735 (Interpreter.cpp:983)
34  com.apple.JavaScriptCore      	0x000000010e1b8903 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) + 483 (Completion.cpp:75)
35  com.apple.WebCore             	0x00000001106b3bb2 WebCore::JSMainThreadExecState::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) + 82 (JSMainThreadExecState.h:77)
36  com.apple.WebCore             	0x0000000110f10123 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld*) + 339 (ScriptController.cpp:141)
37  com.apple.WebCore             	0x0000000110f10264 WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) + 68 (ScriptController.cpp:158)
38  com.apple.WebCore             	0x0000000110f282ea WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&amp;) + 746 (ScriptElement.cpp:304)
39  com.apple.WebCore             	0x0000000110f2707d WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport) + 1693 (ScriptElement.cpp:242)
40  com.apple.WebCore             	0x00000001113b3845 WebCore::XMLDocumentParser::endElementNs() + 709 (XMLDocumentParserLibxml2.cpp:886)
41  com.apple.WebCore             	0x00000001113b4cb4 WebCore::endElementNsHandler(void*, unsigned char const*, unsigned char const*, unsigned char const*) + 68 (XMLDocumentParserLibxml2.cpp:1099)
42  libxml2.2.dylib               	0x00007fff8e5f885d xmlParseEndTag2 + 782
43  libxml2.2.dylib               	0x00007fff8e5fa760 xmlParseTryOrFinish + 2390
44  libxml2.2.dylib               	0x00007fff8e5f9b5a xmlParseChunk + 230
45  com.apple.WebCore             	0x00000001113b25eb WebCore::XMLDocumentParser::doWrite(WTF::String const&amp;) + 363 (XMLDocumentParserLibxml2.cpp:662)
46  com.apple.WebCore             	0x00000001113af90c WebCore::XMLDocumentParser::append(WebCore::SegmentedString const&amp;) + 188 (XMLDocumentParser.cpp:128)
47  com.apple.WebCore             	0x000000010fce5047 WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter*, char const*, unsigned long) + 199 (DecodedDataDocumentParser.cpp:50)
48  com.apple.WebCore             	0x000000010fda6693 WebCore::DocumentWriter::addData(char const*, unsigned long) + 259 (DocumentWriter.cpp:222)
49  com.apple.WebCore             	0x000000010fd70507 WebCore::DocumentLoader::commitData(char const*, unsigned long) + 583 (DocumentLoader.cpp:357)
50  com.apple.WebKit              	0x000000010f28d1d3 -[WebFrame(WebInternal) _commitData:] + 211 (WebFrame.mm:826)
51  com.apple.WebKit              	0x000000010f2cb420 -[WebHTMLRepresentation receivedData:withDataSource:] + 128 (WebHTMLRepresentation.mm:186)
52  com.apple.WebKit              	0x000000010f26bb1a -[WebDataSource(WebInternal) _receivedData:] + 90 (WebDataSource.mm:215)
53  com.apple.WebKit              	0x000000010f29b581 WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) + 129 (WebFrameLoaderClient.mm:846)
54  com.apple.WebCore             	0x000000010fd705e0 WebCore::DocumentLoader::commitLoad(char const*, int) + 208 (DocumentLoader.cpp:319)
55  com.apple.WebCore             	0x000000010fd70adb WebCore::DocumentLoader::receivedData(char const*, int) + 59 (DocumentLoader.cpp:388)
56  com.apple.WebCore             	0x0000000110a1d13f WebCore::MainResourceLoader::dataReceived(WebCore::CachedResource*, char const*, int) + 1167 (MainResourceLoader.cpp:499)
57  com.apple.WebCore             	0x000000010fa4e388 WebCore::CachedRawResource::data(WTF::PassRefPtr&lt;WebCore::ResourceBuffer&gt;, bool) + 600 (CachedRawResource.cpp:70)
58  com.apple.WebCore             	0x00000001111040d5 WebCore::SubresourceLoader::sendDataToResource(char const*, int) + 405 (SubresourceLoader.cpp:253)
59  com.apple.WebCore             	0x000000011110432b WebCore::SubresourceLoader::didReceiveData(char const*, int, long long, bool) + 395 (SubresourceLoader.cpp:226)
60  com.apple.WebCore             	0x0000000110ebd75f WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int) + 143 (ResourceLoader.cpp:452)
61  com.apple.WebCore             	0x0000000110eba12a -[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:] + 298 (ResourceHandleMac.mm:785)
62  com.apple.Foundation          	0x00007fff8c606f58 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke_0 + 28
63  com.apple.Foundation          	0x00007fff8c606e9c -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 227
64  com.apple.Foundation          	0x00007fff8c606d98 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 63
65  com.apple.Foundation          	0x00007fff8c60992b _NSURLConnectionDidReceiveData_LengthReceived + 86
66  com.apple.CFNetwork           	0x00007fff94f2b7b1 ___delegate_didReceiveDataArray_block_invoke_0 + 132
67  com.apple.CFNetwork           	0x00007fff94f1e753 ___withDelegateAsync_block_invoke_0 + 90
68  com.apple.CFNetwork           	0x00007fff94fad2ca __block_global_1 + 28
69  com.apple.CoreFoundation      	0x00007fff8f692724 CFArrayApplyFunction + 68
70  com.apple.CFNetwork           	0x00007fff94f0fa6c RunloopBlockContext::perform() + 126
71  com.apple.CFNetwork           	0x00007fff94f0f94b MultiplexerSource::perform() + 221
72  com.apple.CoreFoundation      	0x00007fff8f674101 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
73  com.apple.CoreFoundation      	0x00007fff8f673a25 __CFRunLoopDoSources0 + 245
74  com.apple.CoreFoundation      	0x00007fff8f696dc5 __CFRunLoopRun + 789
75  com.apple.CoreFoundation      	0x00007fff8f6966b2 CFRunLoopRunSpecific + 290
76  com.apple.Foundation          	0x00007fff8c68489e -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 268
77  DumpRenderTree                	0x000000010df69809 runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) + 5017 (DumpRenderTree.mm:1382)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802467</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 12:02:00 -0800</bug_when>
    <thetext>http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=svg%2Fcustom%2Ftext-use-click-crash.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802490</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 12:19:07 -0800</bug_when>
    <thetext>Added a test expectation in http://trac.webkit.org/changeset/139092.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803158</commentid>
    <comment_count>3</comment_count>
      <attachid>181879</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-09 02:00:57 -0800</bug_when>
    <thetext>Created attachment 181879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808668</commentid>
    <comment_count>4</comment_count>
      <attachid>181879</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-16 13:37:46 -0800</bug_when>
    <thetext>Comment on attachment 181879
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        In most case this assuption makes sense but it can be broken when isInPasswordField().

Typo: assuption

&gt; Source/WebCore/ChangeLog:10
&gt; +        This change checks precondiiton before invoking enclosingTextFormControl() there.

Typo: precondiiton

&gt; Source/WebCore/editing/FrameSelection.cpp:1676
&gt; +    if (!start().containerNode())
&gt; +        return false;
&gt;      HTMLTextFormControlElement* textControl = enclosingTextFormControl(start());

I think we should rethink and loosen the assertion in enclosingTextFormControl instead of doing this. The actual implementation of that function is perfectly fine, it’s just got an overzealous assertion in it.

I hate the idea of checking something here that’s also checked first thing in the enclosingTextFormControl function, just because the assertion in there is too strong.

Since Ryosuke wrote that assertion, I’d like him to comment on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808685</commentid>
    <comment_count>5</comment_count>
      <attachid>181879</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-16 13:52:13 -0800</bug_when>
    <thetext>Comment on attachment 181879
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        In most case this assuption makes sense but it can be broken when isInPasswordField().
&gt; 
&gt; Typo: assuption

When do we have such an exotic selection start? There lies a deeper problem. start() should never be a position before/after a node that doesn&apos;t have any parent.
We must be not updating selection properly somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809020</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-16 20:28:23 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 181879 [details])
&gt; When do we have such an exotic selection start? There lies a deeper problem. start() should never be a position before/after a node that doesn&apos;t have any parent.
&gt; We must be not updating selection properly somewhere.

I need to investigate further.
The outline here is that changing @requestedFeatures causes re-attach(),
which causes SVG shadow tree reconstruction.
The selection was in the shadow tree and it looks that it&apos;s been staying there even after the reconstruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809023</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-16 20:30:24 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 181879 [details] [details])
&gt; &gt; When do we have such an exotic selection start? There lies a deeper problem. start() should never be a position before/after a node that doesn&apos;t have any parent.
&gt; &gt; We must be not updating selection properly somewhere.
&gt; 
&gt; I need to investigate further.
&gt; The outline here is that changing @requestedFeatures causes re-attach(),
&gt; which causes SVG shadow tree reconstruction.
&gt; The selection was in the shadow tree and it looks that it&apos;s been staying there even after the reconstruction.

That sounds like a problem shinyak in fixed in http://trac.webkit.org/changeset/139401. Maybe you guys can talk about it in person?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809067</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-16 22:00:54 -0800</bug_when>
    <thetext>&gt; 
&gt; That sounds like a problem shinyak in fixed in http://trac.webkit.org/changeset/139401. Maybe you guys can talk about it in person?

I tried with the latest build but it still crashes. 
Well, shinyak might be a better person to attack this :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809082</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-16 22:17:10 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; 
&gt; &gt; That sounds like a problem shinyak in fixed in http://trac.webkit.org/changeset/139401. Maybe you guys can talk about it in person?
&gt; 
&gt; I tried with the latest build but it still crashes. 
&gt; Well, shinyak might be a better person to attack this :-/

mmm. I&apos;ll take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809091</commentid>
    <comment_count>10</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-16 22:41:18 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=106533
https://bugs.webkit.org/show_bug.cgi?id=107089

This anticipation is realized...? I&apos;m not sure yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809163</commentid>
    <comment_count>11</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-17 00:58:09 -0800</bug_when>
    <thetext>My investigation is...

When ASSERT hits, position.anchorNode() is /use/shadow-root/text#target, and anchorType is PositionIsBeforeAnchor.
Since SHADOW_DOM flag is not enabled in mac ports, position.containerNode() cannot be ShadowRoot. Instead, position.containerNode() returns null.

If I allowed Position to have ShadowRoot, this ASSERT was not triggered. So I believe this investigation is correct.

Here we have two options:
1) Allows Position to have ShadowRoot as container node.
2) Loose ASSERT condition in enclosingTextFormControl.

(1) will affect a lot of code, I would like to choose (2) this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809196</commentid>
    <comment_count>12</comment_count>
      <attachid>183148</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-17 01:52:51 -0800</bug_when>
    <thetext>Created attachment 183148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809486</commentid>
    <comment_count>13</comment_count>
      <attachid>183148</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 10:54:23 -0800</bug_when>
    <thetext>Comment on attachment 183148
Patch

Clearing flags on attachment: 183148

Committed r139999: &lt;http://trac.webkit.org/changeset/139999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809488</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 10:54:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814513</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-23 12:37:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/12975228&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181879</attachid>
            <date>2013-01-09 02:00:57 -0800</date>
            <delta_ts>2013-01-17 01:52:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106361-20130109185800.patch</filename>
            <type>text/plain</type>
            <size>3192</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJkNTY1ZGJkMjc4N2Y5
NDFkMmM5YjQzNzA2Yzg2Njk5YWM1ZGYwYS4uM2UwMjgzNWQwMTBkZDg3OTJjYTA1NWI2NTM5ODY2
MGI4NmU4ODMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTA5ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbTWFjXSBzdmcvY3Vz
dG9tL3RleHQtdXNlLWNsaWNrLWNyYXNoLnhodG1sIGFkZGVkIGJ5IHIxMzkwMjkgaGl0cyBhc3Nl
cnRpb24gaW4gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYzNjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woKSBhc3N1
bWVzIHRoYXQgdGhlIGdpdmVuIHBvc2l0aW9uIHBvaW50cyBpbi1kb2N1bWVudCBub2RlLgorICAg
ICAgICBJbiBtb3N0IGNhc2UgdGhpcyBhc3N1cHRpb24gbWFrZXMgc2Vuc2UgYnV0IGl0IGNhbiBi
ZSBicm9rZW4gd2hlbiBpc0luUGFzc3dvcmRGaWVsZCgpLgorICAgICAgICBUaGlzIGNoYW5nZSBj
aGVja3MgcHJlY29uZGlpdG9uIGJlZm9yZSBpbnZva2luZyBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRy
b2woKSB0aGVyZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIEZpeGluZyBhbiBleGlzdGluZyB0
ZXN0LgorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6aXNJblBhc3N3b3JkRmllbGQpOgorCiAyMDEzLTAxLTA4
ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IGRlcGVuZGVuY3kgb24gRG9jdW1lbnQgZnJvbSBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5RdWly
a3NNb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXgg
YmEyYTIwYmJhNWEwMjZhYWM0ZGU4YjI4ZWNhZWVlZDhhYjg1ODZmNS4uYjgxZDQxMjVhYzMyOGZl
ZDgxYjNkNzNhM2NhODYzYmU2MDlhMTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKQEAgLTE2NzEsNiArMTY3MSw4IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wg
Y2xvCiAKIGJvb2wgRnJhbWVTZWxlY3Rpb246OmlzSW5QYXNzd29yZEZpZWxkKCkgY29uc3QKIHsK
KyAgICBpZiAoIXN0YXJ0KCkuY29udGFpbmVyTm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRDb250cm9sID0gZW5jbG9zaW5n
VGV4dEZvcm1Db250cm9sKHN0YXJ0KCkpOwogICAgIHJldHVybiB0ZXh0Q29udHJvbCAmJiB0ZXh0
Q29udHJvbC0+aGFzVGFnTmFtZShpbnB1dFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KHRleHRDb250cm9sKS0+aXNQYXNzd29yZEZpZWxkKCk7CiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTYyMjc0
Y2NlOTY4NWZmZjIyMjRjN2JlMzQzOTZkZjQ4NDZlNzg5Mi4uNTFiZGQwY2M2ZDVhMWE2OTk4Njll
Yzg2OGE0MjBiYjVmMmQyOTc1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTA5ICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbTWFjXSBzdmcv
Y3VzdG9tL3RleHQtdXNlLWNsaWNrLWNyYXNoLnhodG1sIGFkZGVkIGJ5IHIxMzkwMjkgaGl0cyBh
c3NlcnRpb24gaW4gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYzNjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnNraXBwZWQgYSBmaXhlZCB0ZXN0LgorCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMDggIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgc3VwcG9ydCBmb3Igc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ZGI5
MTJhYjE2ZjBiMTZjODlkNTdkNzA5MGM3YWYxOGNiYThkNDJmLi5kMmI0ZmQ1MjhkZDAzNzhkZjU4
Nzk5MjkzZjRhZWI3MDRiNGIxZGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTI2OSw2ICsxMjY5LDQgQEAgd2Via2l0Lm9yZy9iLzEwNjE1MSBbIExp
b24gXSBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBQYXMK
IAogd2Via2l0Lm9yZy9iLzEwNjE4NSBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0
dGVuaW5nLWZpeGVkLWhlaWdodC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9i
LzEwNjM2MSBbIERlYnVnIF0gc3ZnL2N1c3RvbS90ZXh0LXVzZS1jbGljay1jcmFzaC54aHRtbCBb
IENyYXNoIF0KLQogd2Via2l0Lm9yZy9iLzEwNjMxOCBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9w
LWF1dG9zY3JvbGwuaHRtbCBbIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183148</attachid>
            <date>2013-01-17 01:52:51 -0800</date>
            <delta_ts>2013-01-17 10:54:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106361-20130117184952.patch</filename>
            <type>text/plain</type>
            <size>3889</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBkMjI1NTkwMTJjZTkw
YWMyMzc4MmQxN2IxNjEwYmZjM2NjZjIwMy4uNWNiMzAzODY3OTA1MWE4NmZmOTU3ZjNlMWIyNzA4
ZGNlMmVhMzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAxLTE3ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbTWFjXSBzdmcv
Y3VzdG9tL3RleHQtdXNlLWNsaWNrLWNyYXNoLnhodG1sIGFkZGVkIGJ5IHIxMzkwMjkgaGl0cyBh
c3NlcnRpb24gaW4gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYzNjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIEFTU0VSVCBoaXQgaW4gZW5jbG9zaW5n
VGV4dEZvcm1Db250cm9sKFBvc2l0aW9uKSwgcG9zaXRpb24uYW5jaG9yTm9kZSgpIHdhcyAvdXNl
L3NoYWRvdy1yb290L3RleHQsCisgICAgICAgIGFuZCBwb3NpdGlvbi5hbmNob3JUeXBlKCkgd2Fz
IFBvc2l0aW9uSXNCZWZvcmVBbmNob3IuIEluIHRoaXMgY2FzZSwgcG9zaXRpb24uY29udGFpbmVy
Tm9kZSgpIHNob3VsZCBiZQorICAgICAgICBTaGFkb3dSb290IGlmIFNIQURPV19ET00gZmxhZyBp
cyBlbmFibGVkLiBIb3dldmVyLCBTSEFET1dfRE9NIGZsYWcgaXMgbm90IGVuYWJsZWQgaW4gbWFj
IHBvcnQsCisgICAgICAgIHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSByZXR1cm5zIDAuIFRoaXMg
aGl0cyBBU1NFUlQuCisKKyAgICAgICAgV2UgaGF2ZSB0d28gb3B0aW9ucyB0byBzb2x2ZSB0aGlz
IHByb2JsZW0uICgxKSBpcyB0byBhbGxvdyBQb3NpdGlvbiB0byBoYXZlIFNoYWRvd1Jvb3QgYXMg
YSBjb250YWluZXIgbm9kZSwKKyAgICAgICAgYnV0IHRoaXMgd2lsbCBhZmZlY3QgYSBsb3Qgb2Yg
Y29kZS4gKDIpIGlzIHRvIGxvb3NlbiBBU1NFUlQgY29uZGl0aW9uLgorCisgICAgICAgIEkndmUg
Y2hvc2VuICgyKSBvcHRpb24gaW4gdGhpcyBwYXRjaC4KKworICAgICAgICBUZXN0OiBzdmcvY3Vz
dG9tL3RleHQtdXNlLWNsaWNrLWNyYXNoLnhodG1sIHNob3VsZCBjb3ZlciB0aGlzLgorCisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjplbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wpOgorCiAyMDEzLTAxLTE2ICBIYWppbWUgTW9y
cml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24gaW4gQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4gaXMgdG9vIHN0cmljdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCA4ODExNmE4YjE3NzcwZDUyNTgzZDliM2IxN2JjY2QxZWQzZmJhZTM0Li5hYzNjOTU0NWIx
YTE3MTRlNzA0NTAyNmFhM2E5MjMzYTA3Y2M3ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNjM5LDcgKzYzOSw5IEBA
IFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmFsdWVXaXRoSGFyZExpbmVCcmVh
a3MoKSBjb25zdAogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3Jt
Q29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9u
LmlzTnVsbCgpIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25J
c09mZnNldEluQW5jaG9yCi0gICAgICAgIHx8IHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSB8fCAh
cG9zaXRpb24uYW5jaG9yTm9kZSgpLT5zaGFkb3dIb3N0KCkpOworICAgICAgICB8fCBwb3NpdGlv
bi5jb250YWluZXJOb2RlKCkgfHwgIXBvc2l0aW9uLmFuY2hvck5vZGUoKS0+c2hhZG93SG9zdCgp
CisgICAgICAgIHx8IChwb3NpdGlvbi5hbmNob3JOb2RlKCktPnBhcmVudE5vZGUoKSAmJiBwb3Np
dGlvbi5hbmNob3JOb2RlKCktPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpKTsKKyAgICAg
ICAgCiAgICAgTm9kZSogY29udGFpbmVyID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwogICAg
IGlmICghY29udGFpbmVyKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzkyZTRiMWM3ZTY1
M2FlZjRhMzUyOWM5NGFhMTkyOGM1MGJiMGMxLi44YTI1NDlhMTZjMzRmMzdjMDIwZjU2MWE0ZGYw
NGY0MmZhOGE4YTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMTcgIFNoaW55YSBL
YXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtNYWNdIHN2Zy9jdXN0
b20vdGV4dC11c2UtY2xpY2stY3Jhc2gueGh0bWwgYWRkZWQgYnkgcjEzOTAyOSBoaXRzIGFzc2Vy
dGlvbiBpbiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjM2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY3Jhc2ggdGVzdCBleHBlY3RhdGlvbi4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAxLTE2
ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb24gaW4gQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4gaXMgdG9v
IHN0cmljdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4
YzJhYjc2NmUwZjA3ZDJjODQzMTlhMjdjYmMwMDEzZWI4ZjBmYzUzLi43YTBmN2FlNTk0ZWRlNjRm
OWIyMmU1NzM1MGJhYWI2MjY3NTVmYzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTI2Niw4ICsxMjY2LDYgQEAgd2Via2l0Lm9yZy9iLzEwNjE1MSBb
IExpb24gXSBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBQ
YXMKIAogd2Via2l0Lm9yZy9iLzEwNjE4NSBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1m
bGF0dGVuaW5nLWZpeGVkLWhlaWdodC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9y
Zy9iLzEwNjM2MSBbIERlYnVnIF0gc3ZnL2N1c3RvbS90ZXh0LXVzZS1jbGljay1jcmFzaC54aHRt
bCBbIENyYXNoIF0KLQogd2Via2l0Lm9yZy9iLzEwNjMxOCBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLWF1dG9zY3JvbGwuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTA2NDEyIFsg
RGVidWcgXSBlZGl0aW5nL3N0eWxlL2p1c3RpZnktd2l0aG91dC1lbmNsb3NpbmctYmxvY2sueGh0
bWwgWyBDcmFzaCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>