<?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>64669</bug_id>
          
          <creation_ts>2011-07-17 06:30:17 -0700</creation_ts>
          <short_desc>[Gtk] [NRWT] Xvfb produces a lot of stderr output</short_desc>
          <delta_ts>2011-07-20 09:52:29 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438284</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2011-07-17 06:30:17 -0700</bug_when>
    <thetext>On Gtk port, when running tests, an Xvfb process is started. It produces a lot of unnecessary stderr output like this:

SCREEN: 0 objects of 176 bytes = 0 total bytes 0 private allocs
DEVICE: 4 objects of 48 bytes = 192 total bytes 0 private allocs
CLIENT: 0 objects of 184 bytes = 0 total bytes 0 private allocs
WINDOW: 0 objects of 48 bytes = 0 total bytes 0 private allocs
PIXMAP: 1 objects of 16 bytes = 16 total bytes 0 private allocs
GC: 0 objects of 56 bytes = 0 total bytes 0 private allocs
CURSOR: 0 objects of 8 bytes = 0 total bytes 0 private allocs
CURSOR_BITS: 0 objects of 8 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
TOTAL: 5 objects, 208 bytes, 0 allocs
4 DEVICEs still allocated at reset
DEVICE: 4 objects of 48 bytes = 192 total bytes 0 private allocs
CLIENT: 0 objects of 184 bytes = 0 total bytes 0 private allocs
WINDOW: 0 objects of 48 bytes = 0 total bytes 0 private allocs
PIXMAP: 1 objects of 16 bytes = 16 total bytes 0 private allocs
GC: 0 objects of 56 bytes = 0 total bytes 0 private allocs
CURSOR: 0 objects of 8 bytes = 0 total bytes 0 private allocs
CURSOR_BITS: 0 objects of 8 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
TOTAL: 5 objects, 208 bytes, 0 allocs
1 PIXMAPs still allocated at reset
PIXMAP: 1 objects of 16 bytes = 16 total bytes 0 private allocs
GC: 0 objects of 56 bytes = 0 total bytes 0 private allocs
CURSOR: 0 objects of 8 bytes = 0 total bytes 0 private allocs
CURSOR_BITS: 0 objects of 8 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
TOTAL: 1 objects, 16 bytes, 0 allocs
[dix] Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!

Such output will eventually grow when we move onto using multiple workers when testing unless suppressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438285</commentid>
    <comment_count>1</comment_count>
      <attachid>101116</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2011-07-17 06:45:34 -0700</bug_when>
    <thetext>Created attachment 101116
Redirect Xvfb stderr output to a subprocess PIPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438709</commentid>
    <comment_count>2</comment_count>
      <attachid>101116</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-07-18 14:14:42 -0700</bug_when>
    <thetext>Comment on attachment 101116
Redirect Xvfb stderr output to a subprocess PIPE

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:46
&gt; +        self._xvfb_process = subprocess.Popen(run_xvfb, stderr=subprocess.PIPE)

http://stackoverflow.com/questions/699325/suppress-output-in-python-calls-to-executables

recommends to open /dev/null instead.

Quoting the interesting comment:

&quot;&quot;&quot;
If your search engine lead you to this old question (like me), be aware that Manuel&apos;s solution (at this time the most valued), namely using PIPE can lead to deadlocks.

Indeed, because pipes are buffered, you can write a certain number of bytes in a pipe, even if no one read it. However the size of buffer is finite. And consequently if your program A has an output larger than the buffer, A will be blocked on writing, while the calling program B awaits the termination of A.
&quot;&quot;&quot;

So the preferred solution would be something like:

devnull = open(os.devnull, &apos;w&apos;)
self._xvfb_process = subprocess.Popen(run_xvfb, stderr=devnull)
devnull.close()

Can you please check this would work?
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439825</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2011-07-20 08:46:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; 
&gt; devnull = open(os.devnull, &apos;w&apos;)
&gt; self._xvfb_process = subprocess.Popen(run_xvfb, stderr=devnull)
&gt; devnull.close()
&gt; 
&gt; Can you please check this would work?
&gt; Thanks!

This works just as fine, will upload a patch in a moment.
Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439827</commentid>
    <comment_count>4</comment_count>
      <attachid>101476</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2011-07-20 08:47:51 -0700</bug_when>
    <thetext>Created attachment 101476
Redirect Xvfb stderr output to /dev/null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439831</commentid>
    <comment_count>5</comment_count>
      <attachid>101476</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-07-20 08:54:32 -0700</bug_when>
    <thetext>Comment on attachment 101476
Redirect Xvfb stderr output to /dev/null

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439840</commentid>
    <comment_count>6</comment_count>
      <attachid>101476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 09:33:41 -0700</bug_when>
    <thetext>Comment on attachment 101476
Redirect Xvfb stderr output to /dev/null

Clearing flags on attachment: 101476

Committed r91374: &lt;http://trac.webkit.org/changeset/91374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439841</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 09:33:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439851</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-20 09:52:29 -0700</bug_when>
    <thetext>Very nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101116</attachid>
            <date>2011-07-17 06:45:34 -0700</date>
            <delta_ts>2011-07-20 08:47:42 -0700</delta_ts>
            <desc>Redirect Xvfb stderr output to a subprocess PIPE</desc>
            <filename>bug-64669-20110717154532.patch</filename>
            <type>text/plain</type>
            <size>1601</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTExNjgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZDQzZjFlZGJkOWQzMDUxNmYxZWUzMDNkMzc4MzRhNmQ4
ZTMyOTcwLi5lMjgwZTAzN2MyZDhiYzY4NDkzZmVjYjI4ZmE3OGQ4MzhkZDg0NDgwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMDctMTcgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbR3RrXSBbTlJXVF0gWHZmYiBwcm9kdWNlcyBhIGxvdCBvZiBzdGRlcnIgb3V0cHV0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDY2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZGlyZWN0
IHRoZSBzdGRlcnIgb3V0cHV0IG9mIHRoZSBkcml2ZXIncyBYdmZiIHByb2Nlc3MgdG8KKyAgICAg
ICAgc3VicHJvY2Vzcy5QSVBFIHRvIHN1cHByZXNzIHVubmVlZGVkIG91dHB1dC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorCiAyMDExLTA3
LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICB0
ZXN0LXdlYmtpdHB5IGZhaWxpbmcgd2l0aCBQeXRob24gMi41CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4IGRiNGQyODUyZmJkNGM1YjA3
YTkwZDZlZDIzYTk1NjUxY2NkYjQ0MDIuLjg3MDI3YjU5ZjliMjUzNmQzMGRkMTVjMDA5ZTNhOTMy
MjU2ZTU1YzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ3RrLnB5CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEd0a0RyaXZlcih3ZWJraXQuV2ViS2l0
RHJpdmVyKToKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGRpc3BsYXlfaWQgPSBzZWxm
Ll93b3JrZXJfbnVtYmVyICsgMQogICAgICAgICBydW5feHZmYiA9IFsiWHZmYiIsICI6JWQiICUg
KGRpc3BsYXlfaWQpLCAiLXNjcmVlbiIsICAiMCIsICI4MDB4NjAweDI0IiwgIi1ub2xpc3RlbiIs
ICJ0Y3AiXQotICAgICAgICBzZWxmLl94dmZiX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHJ1
bl94dmZiKQorICAgICAgICBzZWxmLl94dmZiX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHJ1
bl94dmZiLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBlbnZpcm9ubWVudCA9IHNl
bGYuX3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKICAgICAgICAgIyBXZSBtdXN0IGRv
IHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBESVNQTEFZIG51bWJlciBkZXBlbmRzIG9uIF93b3JrZXJf
bnVtYmVyCiAgICAgICAgIGVudmlyb25tZW50WydESVNQTEFZJ10gPSAiOiVkIiAlIChkaXNwbGF5
X2lkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101476</attachid>
            <date>2011-07-20 08:47:51 -0700</date>
            <delta_ts>2011-07-20 09:33:41 -0700</delta_ts>
            <desc>Redirect Xvfb stderr output to /dev/null</desc>
            <filename>bug-64669-20110720174748.patch</filename>
            <type>text/plain</type>
            <size>1668</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzNTgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NWE0MzA1YTA5MzAzOTc5YjNhYmM3MzQwZTQxODg2OTBk
NGI2ZGYzLi4zMTIyNGYwZDc4ZjIxNzU4NzUyZjI0OWU1YmIzYmM0MTc2OWUxYTU5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMDctMjAgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbR3RrXSBbTlJXVF0gWHZmYiBwcm9kdWNlcyBhIGxvdCBvZiBzdGRlcnIgb3V0cHV0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDY2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZGlyZWN0
IHRoZSBzdGRlcnIgb3V0cHV0IG9mIHRoZSBkcml2ZXIncyBYdmZiIHByb2Nlc3MKKyAgICAgICAg
dG8gL2Rldi9udWxsIHRvIHN1cHByZXNzIHVubmVlZGVkIG91dHB1dC4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorCiAyMDExLTA3LTE5ICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBwYXJzZS1tYWxsb2MtaGlz
dG9yeSBhbHdheXMgZXhpdHMgMSwgY2F1c2luZyBOUldUIHRvIGZhaWwKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggNzZiM2UxOWYyZWU2
MzdiNzU1ZWZmYzI5YTFmMjNkOGFhMmI1YWNlMC4uMTk0ZDE0YWM4ODA5YTIxMWIxOTE2YzgyZDVm
ZmFlM2Y0M2YwNTZmOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9ndGsucHkKQEAgLTQzLDcgKzQzLDkgQEAgY2xhc3MgR3RrRHJpdmVyKHdlYmtpdC5X
ZWJLaXREcml2ZXIpOgogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgZGlzcGxheV9pZCA9
IHNlbGYuX3dvcmtlcl9udW1iZXIgKyAxCiAgICAgICAgIHJ1bl94dmZiID0gWyJYdmZiIiwgIjol
ZCIgJSAoZGlzcGxheV9pZCksICItc2NyZWVuIiwgICIwIiwgIjgwMHg2MDB4MjQiLCAiLW5vbGlz
dGVuIiwgInRjcCJdCi0gICAgICAgIHNlbGYuX3h2ZmJfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9w
ZW4ocnVuX3h2ZmIpCisgICAgICAgIGRldm51bGwgPSBvcGVuKG9zLmRldm51bGwsICd3JykKKyAg
ICAgICAgc2VsZi5feHZmYl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihydW5feHZmYiwgc3Rk
ZXJyPWRldm51bGwpCisgICAgICAgIGRldm51bGwuY2xvc2UoKQogICAgICAgICBzZXJ2ZXJfbmFt
ZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQogICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYu
X3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9uYW1lKQogICAgICAgICAjIFdl
IG11c3QgZG8gdGhpcyBoZXJlIGJlY2F1c2UgdGhlIERJU1BMQVkgbnVtYmVyIGRlcGVuZHMgb24g
X3dvcmtlcl9udW1iZXIK
</data>

          </attachment>
      

    </bug>

</bugzilla>