<?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>164517</bug_id>
          
          <creation_ts>2016-11-08 09:06:51 -0800</creation_ts>
          <short_desc>[GTK] Allow to use WebMemorySampler feature.</short_desc>
          <delta_ts>2017-08-30 06:03:22 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=91214</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=176099</see_also>
          <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="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Carlos Alberto Lopez Perez">clopez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249051</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-11-08 09:06:51 -0800</bug_when>
    <thetext>The WebMemorySampler records memory usage of  WebProcess and UI Process. It also includes stats about JIT, JS heap, fastmalloc stats and application memory info from /proc/process_id/statm.

This feature was added on r127195 &lt;https://trac.webkit.org/r127195&gt; for the EFL port.

I would like to have this also on the GTK+ port, as I think its useful when debugging memory issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249057</commentid>
    <comment_count>1</comment_count>
      <attachid>294163</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-11-08 09:14:50 -0800</bug_when>
    <thetext>Created attachment 294163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249060</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-08 09:17:46 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249061</commentid>
    <comment_count>3</comment_count>
      <attachid>294163</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-08 09:21:16 -0800</bug_when>
    <thetext>Comment on attachment 294163
Patch

Could this feature be used to create an about://memory page for Epiphany, or is it only a debug tool?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249065</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-11-08 09:26:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 294163 [details]
&gt; Patch
&gt; 
&gt; Could this feature be used to create an about://memory page for Epiphany, or
&gt; is it only a debug tool?

Right now, is only used as a debug tool.

It prints the stats of each process on a separate file at /tmp. I watch it with a simple &quot;tail -f /tmp/file&quot;

But I guess it can be used as basis for something like that. In an about://memory page you have to take the info from all the webkit related process and summarize or present that information in a more user friendly way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249251</commentid>
    <comment_count>5</comment_count>
      <attachid>294163</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-09 00:34:23 -0800</bug_when>
    <thetext>Comment on attachment 294163
Patch

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

Please don&apos;t land this, see my comments.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:284
&gt; +    static bool initializeMemorySampler = false;

This should be initializedMemorySampler or it should be true initially. But anyway, if the memory sampler can be started/stopped per context, why are we enabling it based on a static variable? This means that it will be enable only for the first context created.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:285
&gt; +    static const char environmentVariable[] = &quot;SAMPLE_MEMORY&quot;;

I don&apos;t think we need this static variable just to use the literal that is only used here. And the value should be something like WEBKIT_SAMPLE_MEMORY or something like that. I&apos;m not sure an env var is the best way to expose this feature though, because it&apos;s also possible to stop the memory sampler, but we can&apos;t do that with env vars. I think this feature should be in the inspector, so that you can start/stop the memory sampler at any time.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:288
&gt; +        WKContextStartMemorySampler(toAPI(webkitWebContextGetProcessPool(webContext)), adoptWK(WKDoubleCreate(0.0)).get());

Do not use the C API, we already have priv-&gt;processPool here, you can do priv-&gt;processPool-&gt;startMemorySampler(0); and avoid all the C API mess here. If we keep the env vars model, we could pass in the variable the interval, that way it will sample the memory every second and stop after that interval, passing 0 would be infinite like this patch does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249561</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-11-09 16:15:31 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 294163 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=294163&amp;action=review
&gt; 
&gt; Please don&apos;t land this, see my comments.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:284
&gt; &gt; +    static bool initializeMemorySampler = false;
&gt; 
&gt; This should be initializedMemorySampler or it should be true initially. But
&gt; anyway, if the memory sampler can be started/stopped per context, why are we
&gt; enabling it based on a static variable? This means that it will be enable
&gt; only for the first context created.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:285
&gt; &gt; +    static const char environmentVariable[] = &quot;SAMPLE_MEMORY&quot;;
&gt; 
&gt; I don&apos;t think we need this static variable just to use the literal that is
&gt; only used here. And the value should be something like WEBKIT_SAMPLE_MEMORY
&gt; or something like that. I&apos;m not sure an env var is the best way to expose
&gt; this feature though, because it&apos;s also possible to stop the memory sampler,
&gt; but we can&apos;t do that with env vars. I think this feature should be in the
&gt; inspector, so that you can start/stop the memory sampler at any time.
&gt; 

I don&apos;t see how this feature would be useful or desired on the inspector.

This is a very low-level debug feature for webkit developers, its not really intended for users or web developers as it is. 

The stats are printed on a file on the /tmp directory, and the most sane way to check them is with a terminal and a tail -f. So it just feels like an undesired overhead to have to deal with the webinspector to activate this.
Probably when you want to use this you are on a remote session via SSH and you don&apos;t have an easy way to send input events to the browser. And activating the remote inspector just for this would be extra overhead.

So I find way easier and more practical an environment variable.

Also, I don&apos;t find useful the possibility of starting/stopping on demand the sampler, or running it for a determined interval of time. What is the purpose of doing that?

The only useful usage I find for this feature is the one I wanted to implement.

Just start the browser with a magic environment variable, and get all the memory stats dumped to a temporally file on /tmp each second until you close the browser. Watch that file with a tail -f. And that&apos;s it.

What I would find useful is an about:memory page that allows the user to capture and show the memory stats in an user-friendly way. But that its a different history.

First, I would like to have this small patch to dump the stats to /tmp to help myself (and I guess any other webkitgtk+ dev) when debugging a memory issue on webkit.


&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:288
&gt; &gt; +        WKContextStartMemorySampler(toAPI(webkitWebContextGetProcessPool(webContext)), adoptWK(WKDoubleCreate(0.0)).get());
&gt; 
&gt; Do not use the C API, we already have priv-&gt;processPool here, you can do
&gt; priv-&gt;processPool-&gt;startMemorySampler(0); and avoid all the C API mess here.
&gt; If we keep the env vars model, we could pass in the variable the interval,
&gt; that way it will sample the memory every second and stop after that
&gt; interval, passing 0 would be infinite like this patch does.

As explained before, passing 0 its done on purpose.
What is the use case of only running the sampler for X seconds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249567</commentid>
    <comment_count>7</comment_count>
      <attachid>294304</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-11-09 16:26:27 -0800</bug_when>
    <thetext>Created attachment 294304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249709</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-10 00:24:40 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 294163 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=294163&amp;action=review
&gt; &gt; 
&gt; &gt; Please don&apos;t land this, see my comments.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:284
&gt; &gt; &gt; +    static bool initializeMemorySampler = false;
&gt; &gt; 
&gt; &gt; This should be initializedMemorySampler or it should be true initially. But
&gt; &gt; anyway, if the memory sampler can be started/stopped per context, why are we
&gt; &gt; enabling it based on a static variable? This means that it will be enable
&gt; &gt; only for the first context created.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:285
&gt; &gt; &gt; +    static const char environmentVariable[] = &quot;SAMPLE_MEMORY&quot;;
&gt; &gt; 
&gt; &gt; I don&apos;t think we need this static variable just to use the literal that is
&gt; &gt; only used here. And the value should be something like WEBKIT_SAMPLE_MEMORY
&gt; &gt; or something like that. I&apos;m not sure an env var is the best way to expose
&gt; &gt; this feature though, because it&apos;s also possible to stop the memory sampler,
&gt; &gt; but we can&apos;t do that with env vars. I think this feature should be in the
&gt; &gt; inspector, so that you can start/stop the memory sampler at any time.
&gt; &gt; 
&gt; 
&gt; I don&apos;t see how this feature would be useful or desired on the inspector.

I agree, the inspector already has a memory profiling tool to check the web sites memory.

&gt; This is a very low-level debug feature for webkit developers, its not really
&gt; intended for users or web developers as it is. 
&gt; 
&gt; The stats are printed on a file on the /tmp directory, and the most sane way
&gt; to check them is with a terminal and a tail -f. So it just feels like an
&gt; undesired overhead to have to deal with the webinspector to activate this.
&gt; Probably when you want to use this you are on a remote session via SSH and
&gt; you don&apos;t have an easy way to send input events to the browser. And
&gt; activating the remote inspector just for this would be extra overhead.

Fair enough.

&gt; So I find way easier and more practical an environment variable.
&gt; 
&gt; Also, I don&apos;t find useful the possibility of starting/stopping on demand the
&gt; sampler, or running it for a determined interval of time. What is the
&gt; purpose of doing that?

You wouldn&apos;t need to stop your browser and start it again, and them stop again. I think Safari has a start/stop memory sampler option in the debug menu. Amnd for the interval, imagine you want to measure the memory used by ephy at start up, you run it for 30 seconds, for example, and then you don&apos;t want to continue measuring, or having to close ephy again to continue using it. I tend to think that when there&apos;s an option to pass an interval, and an option to stop the memory sampler they were added for a reason.

&gt; The only useful usage I find for this feature is the one I wanted to
&gt; implement.
&gt; 
&gt; Just start the browser with a magic environment variable, and get all the
&gt; memory stats dumped to a temporally file on /tmp each second until you close
&gt; the browser. Watch that file with a tail -f. And that&apos;s it.

Yes, that&apos;s a simple use case.

&gt; What I would find useful is an about:memory page that allows the user to
&gt; capture and show the memory stats in an user-friendly way. But that its a
&gt; different history.

Yes, that&apos;s different thing.

&gt; First, I would like to have this small patch to dump the stats to /tmp to
&gt; help myself (and I guess any other webkitgtk+ dev) when debugging a memory
&gt; issue on webkit.
&gt; 
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:288
&gt; &gt; &gt; +        WKContextStartMemorySampler(toAPI(webkitWebContextGetProcessPool(webContext)), adoptWK(WKDoubleCreate(0.0)).get());
&gt; &gt; 
&gt; &gt; Do not use the C API, we already have priv-&gt;processPool here, you can do
&gt; &gt; priv-&gt;processPool-&gt;startMemorySampler(0); and avoid all the C API mess here.
&gt; &gt; If we keep the env vars model, we could pass in the variable the interval,
&gt; &gt; that way it will sample the memory every second and stop after that
&gt; &gt; interval, passing 0 would be infinite like this patch does.
&gt; 
&gt; As explained before, passing 0 its done on purpose.
&gt; What is the use case of only running the sampler for X seconds?

I explained it above. In any case none of these things were the reason for the r-, my main concern was the fact that we were enabling it only for the first web context created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249710</commentid>
    <comment_count>9</comment_count>
      <attachid>294304</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-10 00:25:17 -0800</bug_when>
    <thetext>Comment on attachment 294304
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:286
&gt; +#if ENABLE(MEMORY_SAMPLER)
&gt; +    if (getenv(&quot;WEBKIT_SAMPLE_MEMORY&quot;))
&gt; +        priv-&gt;processPool-&gt;startMemorySampler(0);
&gt; +#endif

A lot simpler, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249717</commentid>
    <comment_count>10</comment_count>
      <attachid>294304</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 00:49:17 -0800</bug_when>
    <thetext>Comment on attachment 294304
Patch

Clearing flags on attachment: 294304

Committed r208529: &lt;http://trac.webkit.org/changeset/208529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249718</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 00:49:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249749</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-11-10 03:28:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; So I find way easier and more practical an environment variable.
&gt; &gt; 
&gt; &gt; Also, I don&apos;t find useful the possibility of starting/stopping on demand the
&gt; &gt; sampler, or running it for a determined interval of time. What is the
&gt; &gt; purpose of doing that?
&gt; 
&gt; You wouldn&apos;t need to stop your browser and start it again, and them stop
&gt; again. I think Safari has a start/stop memory sampler option in the debug
&gt; menu. Amnd for the interval, imagine you want to measure the memory used by
&gt; ephy at start up, you run it for 30 seconds, for example, and then you don&apos;t
&gt; want to continue measuring, or having to close ephy again to continue using
&gt; it. I tend to think that when there&apos;s an option to pass an interval, and an
&gt; option to stop the memory sampler they were added for a reason.
&gt; 
&gt; &gt; The only useful usage I find for this feature is the one I wanted to

Yes. The feature can be stopped and started on demand, and also can be set to run for each X seconds. 

Probably safari has such debug menu that makes using this feature on demand useful.

In the webkitgtk+ case, I don&apos;t see how we could use the memory sampler in that way from a webkitgtk+ application without adding extra API to allow starting/stopping on demand.

And I don&apos;t think this feature is interesting enough for webkitgtk+ applications to make it part of our API.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294163</attachid>
            <date>2016-11-08 09:14:50 -0800</date>
            <delta_ts>2016-11-09 16:24:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164517-20161108181040.patch</filename>
            <type>text/plain</type>
            <size>2073</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDYyZDk3OGE3YWNiZjRl
NDAzMzhjZjRiMWJhOTVkMzlmYzdlMWU3Yi4uOTgzNGVmMDQyNjIxMjRlZWI1MWEwYWUxYTQwYTQ3
MGYwNzk3ZTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTExLTA4ICBDYXJs
b3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIEFsbG93IHRvIHVzZSBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgdGhlIFdlYk1lbW9yeVNh
bXBsZXIgd2l0aCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgU0FNUExFX01FTU9S
WSAoc2FtZSBuYW1lIHRoYW4gdGhlIG9uZSB1c2VkIGJ5IHRoZSBFRkwgcG9ydCkuCisKKyAgICAg
ICAgV2hlbiBlbmFibGVkLCBpdCB3aWxsIGR1bXAgdGhlIHN0YXRzIHRvIC90bXAgZWFjaCBzZWNv
bmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisKIDIwMTYtMTEtMDUgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQ
XSBMYXlvdXQgdGVzdCBodHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9h
dXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3JpZ2luLXdpdGgtbG9jYXRpb24t
Y3JlZGVudGlhbHMuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBmMDc3YjBjZDhiNjk2NDRkYzkz
MzVlMDllOWJiNWRmOGRhYWU0ZWRmLi5jMWY2OTFjM2U2Y2U3MTFlOGJiY2M2MGY2ZGM3OTY0NjVk
MmE2M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMjgwLDYgKzI4MCwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIHByaXYtPnRsc0Vy
cm9yc1BvbGljeSA9IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwogICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRJZ25vcmVUTFNFcnJvcnMoZmFsc2UpOwogCisjaWYgRU5BQkxFKE1FTU9S
WV9TQU1QTEVSKQorICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVNZW1vcnlTYW1wbGVyID0gZmFs
c2U7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52aXJvbm1lbnRWYXJpYWJsZVtdID0gIlNBTVBM
RV9NRU1PUlkiOworCisgICAgaWYgKCFpbml0aWFsaXplTWVtb3J5U2FtcGxlciAmJiBnZXRlbnYo
ZW52aXJvbm1lbnRWYXJpYWJsZSkpIHsKKyAgICAgICAgV0tDb250ZXh0U3RhcnRNZW1vcnlTYW1w
bGVyKHRvQVBJKHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KSksIGFk
b3B0V0soV0tEb3VibGVDcmVhdGUoMC4wKSkuZ2V0KCkpOworICAgICAgICBpbml0aWFsaXplTWVt
b3J5U2FtcGxlciA9IHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBhdHRhY2hJbmplY3RlZEJ1
bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVudFRv
Q29udGV4dCh3ZWJDb250ZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294304</attachid>
            <date>2016-11-09 16:26:27 -0800</date>
            <delta_ts>2016-11-10 00:49:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164517-20161110012215.patch</filename>
            <type>text/plain</type>
            <size>1694</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzU5YTc2MDk5NzQ1ZTcy
MWE1Y2UyMzI5NjVhYTYxYTU4MWU0NjY0Mi4uYzE2ZTQwNWI4OTcyZDU1ZGVkNmIxNTI2NDdlMTA4
YjU0OTAwM2Q3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTExLTEwICBDYXJs
b3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIEFsbG93IHRvIHVzZSBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgdGhlIFdlYk1lbW9yeVNh
bXBsZXIgd2l0aCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgV0VCS0lUX1NBTVBMRV9NRU1PUlku
CisKKyAgICAgICAgV2hlbiBlbmFibGVkLCBpdCB3aWxsIGR1bXAgdGhlIHN0YXRzIHRvIC90bXAg
ZWFjaCBzZWNvbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisKIDIwMTYt
MTEtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IHZpc3VhbC12aWV3cG9ydCBiYXNlZCBwb3NpdGlvbjpmaXhlZCBoYW5kbGluZyBm
b3IgTWFjIGFzeW5jIHNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBmMDc3YjBjZDhiNjk2NDRkYzkz
MzVlMDllOWJiNWRmOGRhYWU0ZWRmLi44MmJiNmNmZDZhNWQ4ZDFhMTE4OTRiYTBhMWE4MTRhYzU3
ZjIxZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMjgwLDYgKzI4MCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIHByaXYtPnRsc0Vy
cm9yc1BvbGljeSA9IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwogICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRJZ25vcmVUTFNFcnJvcnMoZmFsc2UpOwogCisjaWYgRU5BQkxFKE1FTU9S
WV9TQU1QTEVSKQorICAgIGlmIChnZXRlbnYoIldFQktJVF9TQU1QTEVfTUVNT1JZIikpCisgICAg
ICAgIHByaXYtPnByb2Nlc3NQb29sLT5zdGFydE1lbW9yeVNhbXBsZXIoMCk7CisjZW5kaWYKKwog
ICAgIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogICAg
IGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogICAgIGF0dGFjaFJl
cXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>