<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>10785</bug_id>
          
          <creation_ts>2016-12-12 02:34:16 +0000</creation_ts>
          <short_desc>shell logging function appears to break task output</short_desc>
          <delta_ts>2017-07-19 17:01:19 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>BitBake</product>
          <component>bitbake</component>
          <version>2.2</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>2.4 M2</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Paul Eggleton">bluelightning</reporter>
          <assigned_to name="Juro Bystricky">juro.bystricky</assigned_to>
          <cc>poky.bs.watcher</cc>
    
    <cc>poky.watcher</cc>
    
    <cc>randy.macleod</cc>
    
    <cc>ross.burton</cc>
    
    <cc>sgw</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69025</commentid>
    <comment_count>0</comment_count>
    <who name="Paul Eggleton">bluelightning</who>
    <bug_when>2016-12-12 02:34:16 +0000</bug_when>
    <thetext>I&apos;ve just noticed some bizarre behaviour with the shell logging functions i.e. bbwarn/bbdebug/bberror. If you add the following to a recipe:

--------------- snip ---------------
addtask test1
do_test1[nostamp] = &quot;1&quot;

do_test1() {
    bbdebug 1 &quot;breakage&quot;
    echo &quot;this will not be printed&quot;
    printf &quot;nor this\n&quot;
}
--------------- snip ---------------

Then run bitbake -c test1 recipename, the task log contains this:

--------------- snip ---------------
DEBUG: Executing shell function do_test1
DEBUG: breakage
DEBUG: Shell function do_test1 finished
--------------- snip ---------------

i.e. for some reason the echo and printf lines don&apos;t make it to the log. If you try one of: commenting out the bbdebug line, adding &quot;ls -l&quot; or even &quot;ls -l &gt; /dev/null&quot; at the end, or commenting out the bb.debug() call in readfifo() in lib/bb/build.py then the echo/printf lines do get printed. However no amount of additional echo lines appear to make a difference. An &quot;echo something &gt; /tmp/testfile&quot; added to the end does actually create a /tmp/testfile with &quot;something&quot; in it, so the subsequent commands are being executed, it&apos;s just that the console output is apparently broken.

(I found this issue on master, but krogoth seems similarly afflicted.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69026</commentid>
    <comment_count>1</comment_count>
    <who name="Paul Eggleton">bluelightning</who>
    <bug_when>2016-12-12 02:50:08 +0000</bug_when>
    <thetext>In fact it looks like this has been broken since jethro, which probably means since the fix to pipe shell logging messages to the console was implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69305</commentid>
    <comment_count>2</comment_count>
    <who name="Paul Eggleton">bluelightning</who>
    <bug_when>2016-12-22 03:42:48 +0000</bug_when>
    <thetext>Perhaps this is output not being flushed before the task log is closed - though why using the python output function would trigger that I&apos;m not sure. (When I tried bitbake -v I saw the same sort of behaviour, so it&apos;s not just the log file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73733</commentid>
    <comment_count>3</comment_count>
    <who name="Paul Eggleton">bluelightning</who>
    <bug_when>2017-06-06 11:15:08 +0000</bug_when>
    <thetext>Juro - I&apos;m a bit stumped by this - could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73753</commentid>
    <comment_count>4</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-06 15:44:52 +0000</bug_when>
    <thetext>(In reply to comment #3)
&gt; Juro - I&apos;m a bit stumped by this - could you take a look?

Hi Paul, nice mystery. Good thing it is reproducible (unlike some other log-related bugs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73769</commentid>
    <comment_count>5</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-06 17:43:27 +0000</bug_when>
    <thetext>This is my observation with the master:
meta-yocto-bsp    = &quot;HEAD:02417b149623c3042c257d1c1074f915dc02b7c7&quot;


$ bitbake &lt;recipe&gt; -cdo_test1

sometimes I get the log busted as advertised:
DEBUG: SITE files [&apos;endian-little&apos;, &apos;bit-32&apos;, &apos;ix86-common&apos;, &apos;common-linux&apos;, &apos;common-glibc&apos;, &apos;i586-linux&apos;, &apos;common&apos;]
DEBUG: Executing shell function do_test1
DEBUG: breakage
DEBUG: Shell function do_test1 finished

but most of the time the log is correct:

DEBUG: SITE files [&apos;endian-little&apos;, &apos;bit-32&apos;, &apos;ix86-common&apos;, &apos;common-linux&apos;, &apos;common-glibc&apos;, &apos;i586-linux&apos;, &apos;common&apos;]
DEBUG: Executing shell function do_test1
DEBUG: breakage
this will not be printed
nor this
DEBUG: Shell function do_test1 finished</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73772</commentid>
    <comment_count>6</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-06 20:07:13 +0000</bug_when>
    <thetext>More observations:
The following task:

do_test3() {
    bbdebug 1 &quot;breakage1&quot;
    echo &quot;this will not be printed&quot;
    printf &quot;nor this\n&quot;
    bbdebug 1 &quot;breakage2&quot;
}

Generates the output:

...
DEBUG: Executing shell function do_test3
DEBUG: breakage1
DEBUG: breakage2
this will not be printed
nor this
DEBUG: Shell function do_test3 finished


Note the messages are all there but in wrong order. This, I believe is 100% reproducible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73777</commentid>
    <comment_count>7</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-06 23:39:38 +0000</bug_when>
    <thetext>So this patch fixes the out-of-order-messages and possibly the original bug as well. (I guess I will need to write/run some kind of test program)

diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 0d0100a..d3bf2d5 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -426,6 +426,7 @@ exit $ret
                     bb.debug(level, value)
                 else:
                     bb.warn(&quot;Unrecognised command &apos;%s&apos; on FIFO&quot; % cmd)
+                logfile.flush()
                 fifobuffer = nextmsg
             else:
                 break
@@ -435,13 +436,14 @@ exit $ret
     if os.path.exists(fifopath):
         os.unlink(fifopath)
     os.mkfifo(fifopath)
+    from subprocess import PIPE
     with open(fifopath, &apos;r+b&apos;, buffering=0) as fifo:
         try:
             bb.debug(2, &quot;Executing shell function %s&quot; % func)
 
             try:
                 with open(os.devnull, &apos;r+&apos;) as stdin:
-                    bb.process.run(cmd, shell=False, stdin=stdin, log=logfile, extrafiles=[(fifo,readfifo)])
+                    bb.process.run(cmd, shell=False, stdin=stdin, stdout=PIPE, log=logfile, extrafiles=[(fifo,readfifo)])
             except bb.process.CmdError:
                 logfn = d.getVar(&apos;BB_LOGFILE&apos;)
                 raise FuncFailed(func, logfn)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73830</commentid>
    <comment_count>8</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-07 17:24:59 +0000</bug_when>
    <thetext>Spoke too soon.
A repeated test program still detects both missing log entries and entries in incorrect order. So back to the drawing board.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73853</commentid>
    <comment_count>9</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-08 01:11:25 +0000</bug_when>
    <thetext>OK, so I think I got it right this time. I will test it overnight, testing various combinations of shell outputs/fifo log writes for completeness and correct order. So far so good.

diff --git a/bitbake/lib/bb/process.py b/bitbake/lib/bb/process.py
index a4a5599..138f908 100644
--- a/bitbake/lib/bb/process.py
+++ b/bitbake/lib/bb/process.py
@@ -81,7 +81,6 @@ def _logged_communicate(pipe, log, input, extrafiles):
         rin.append(pipe.stderr)
     for fobj, _ in extrafiles:
         bb.utils.nonblockingfd(fobj.fileno())
-        rin.append(fobj)
 
     def readextras(selected):
         for fobj, func in extrafiles:
@@ -105,6 +104,8 @@ def _logged_communicate(pipe, log, input, extrafiles):
                 if e.errno != errno.EINTR:
                     raise
 
+            readextras([fobj for fobj, _ in extrafiles])
+
             if pipe.stdout in r:
                 data = stdoutbuf + pipe.stdout.read()
                 if data is not None and len(data) &gt; 0:
@@ -126,13 +127,9 @@ def _logged_communicate(pipe, log, input, extrafiles):
                         stderrbuf = b&quot;&quot;
                     except UnicodeDecodeError:
                         stderrbuf = data
-
-            readextras(r)
-
+            log.flush()
     finally:    
-        log.flush()
-
-    readextras([fobj for fobj, _ in extrafiles])
+        pass
 
     if pipe.stdout is not None:
         pipe.stdout.close()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73907</commentid>
    <comment_count>10</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-08 15:40:42 +0000</bug_when>
    <thetext>Extended testing passed. I tested these cases:

do_test1() {
    bbdebug 1 &quot;breakage&quot;
    echo &quot;this will not be printed&quot;
    printf &quot;nor this\n&quot;
}


do_test2() {
    echo &quot;this will not be printed&quot;
    bbdebug 1 &quot;breakage&quot;
    printf &quot;nor this\n&quot;
}


do_test3() {
    echo &quot;line1&quot;
    bbdebug 1 &quot;breakage1 line2&quot;
    echo &quot;this will not be printed (line3)&quot;
    printf &quot;nor this (line4)\n&quot;
    bbdebug 1 &quot;breakage2 line5&quot;
}


do_test4() {
    bbdebug 1 &quot;breakage1 line2&quot;
    bbdebug 1 &quot;breakage2 line2&quot;
}

Although all the tests passed, by looking a the logging code, I am not sure we can guarantee a &quot;correct&quot; order of log entries. There is a round-robin loop for merging stdout, fifo (bbdebug uses fifo) and stderr messages into the log file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73909</commentid>
    <comment_count>11</comment_count>
    <who name="Paul Eggleton">bluelightning</who>
    <bug_when>2017-06-08 15:44:24 +0000</bug_when>
    <thetext>Great work! Personally potential ordering anomalies don&apos;t bother me nearly as much as losing entire messages, so if that&apos;s the only remaining issue I&apos;d say it&apos;s good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73929</commentid>
    <comment_count>12</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-08 23:37:41 +0000</bug_when>
    <thetext>(In reply to comment #11)
&gt; Great work! Personally potential ordering anomalies don&apos;t bother me nearly
&gt; as much as losing entire messages, so if that&apos;s the only remaining issue I&apos;d
&gt; say it&apos;s good enough.

Well, apparently third time is the charm. I can actually explain what went wrong.
Basically we have this code (proccess.py):

def _logged_communicate(pipe, log, input, extrafiles):
   &lt;do_some_stuff&gt;
   while ProcessOpen
       log fifo(s)
       log stdout 
       log stderr

   log_fifo(s)

(Note after Process is closed we make effort to drain/log fifos but not stdout/stderr)

What can happen is that Process is closed before the code reaches 
the &quot;while&quot; loop and hence the pipes do not get a chance to be logged/drained. 
Or (most likely) the process is closed somewhere in the loop and some of the pipes may have still data in them.

So the fix is this:

   while ProcessOpen
       log fifo(s)
       log stdout 
       log stderr

   # Drain ALL pipes after process closed
   log_fifo()
   log stdout
   log stderr

Which can be reformatted as:

    def read_all_pipes:
       log fifo(s)
       log stdout 
       log stderr

    while ProcessOpen
       read_all_pipes

   # Drain ALL pipes after process closed
   read_all_pipes
    
The previous patch worked very well in tests, but did not address the root cause of the problem. 
So I am testing the v3 of the patch, with additional tests. I&apos;ll let it run overnight and if there are no problems I&apos;ll send the patch to the mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73967</commentid>
    <comment_count>13</comment_count>
      <attachid>3809</attachid>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-06-09 23:16:32 +0000</bug_when>
    <thetext>Created attachment 3809
patch that passes all the tests....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75141</commentid>
    <comment_count>14</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2017-07-19 17:01:19 +0000</bug_when>
    <thetext>merged:
http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=06e9b44f97a4ba5552d2b2ad1d10acd1871ac1ce</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3809</attachid>
            <date>2017-06-09 23:16:32 +0000</date>
            <delta_ts>2017-06-09 23:16:32 +0000</delta_ts>
            <desc>patch that passes all the tests....</desc>
            <filename>bug-10785.diff</filename>
            <type>text/plain</type>
            <size>3120</size>
            <attacher name="Juro Bystricky">juro.bystricky</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2JpdGJha2UvbGliL2JiL3Byb2Nlc3MucHkgYi9iaXRiYWtlL2xpYi9iYi9w
cm9jZXNzLnB5CmluZGV4IGE0YTU1OTkuLjkzMTQ5YzAgMTAwNjQ0Ci0tLSBhL2JpdGJha2UvbGli
L2JiL3Byb2Nlc3MucHkKKysrIGIvYml0YmFrZS9saWIvYmIvcHJvY2Vzcy5weQpAQCAtOTQsNDUg
Kzk0LDUyIEBAIGRlZiBfbG9nZ2VkX2NvbW11bmljYXRlKHBpcGUsIGxvZywgaW5wdXQsIGV4dHJh
ZmlsZXMpOgogICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAg
ICAgICAgICAgIGZ1bmMoZGF0YSkKIAorICAgIGRlZiByZWFkX2FsbF9waXBlcyhsb2csIHJpbiwg
b3V0ZGF0YSwgZXJyZGF0YSk6CisgICAgICAgIHJsaXN0ID0gcmluCisgICAgICAgIHN0ZG91dGJ1
ZiA9IGIiIgorICAgICAgICBzdGRlcnJidWYgPSBiIiIKKworICAgICAgICB0cnk6CisgICAgICAg
ICAgICByLHcsZSA9IHNlbGVjdC5zZWxlY3QgKHJsaXN0LCBbXSwgW10sIDEpCisgICAgICAgIGV4
Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRS
OgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgcmVhZGV4dHJhcyhyKQorCisgICAg
ICAgIGlmIHBpcGUuc3Rkb3V0IGluIHI6CisgICAgICAgICAgICBkYXRhID0gc3Rkb3V0YnVmICsg
cGlwZS5zdGRvdXQucmVhZCgpCisgICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lIGFuZCBs
ZW4oZGF0YSkgPiAwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICAgICAgICAgIG91dGRhdGEu
YXBwZW5kKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGxvZy53cml0ZShkYXRhKQorICAgICAg
ICAgICAgICAgICAgICBsb2cuZmx1c2goKQorICAgICAgICAgICAgICAgICAgICBzdGRvdXRidWYg
PSBiIiIKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAg
ICAgICAgICAgICAgICBzdGRvdXRidWYgPSBkYXRhCisKKyAgICAgICAgaWYgcGlwZS5zdGRlcnIg
aW4gcjoKKyAgICAgICAgICAgIGRhdGEgPSBzdGRlcnJidWYgKyBwaXBlLnN0ZGVyci5yZWFkKCkK
KyAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmUgYW5kIGxlbihkYXRhKSA+IDA6CisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUo
InV0Zi04IikKKyAgICAgICAgICAgICAgICAgICAgZXJyZGF0YS5hcHBlbmQoZGF0YSkKKyAgICAg
ICAgICAgICAgICAgICAgbG9nLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGxvZy5m
bHVzaCgpCisgICAgICAgICAgICAgICAgICAgIHN0ZGVycmJ1ZiA9IGIiIgorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHN0ZGVy
cmJ1ZiA9IGRhdGEKKwogICAgIHRyeToKKyAgICAgICAgIyBSZWFkIGFsbCBwaXBlcyB3aGlsZSB0
aGUgcHJvY2VzcyBpcyBvcGVuCiAgICAgICAgIHdoaWxlIHBpcGUucG9sbCgpIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBybGlzdCA9IHJpbgotICAgICAgICAgICAgc3Rkb3V0YnVmID0gYiIiCi0gICAg
ICAgICAgICBzdGRlcnJidWYgPSBiIiIKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICByLHcsZSA9IHNlbGVjdC5zZWxlY3QgKHJsaXN0LCBbXSwgW10sIDEpCi0gICAgICAgICAgICBl
eGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8u
RUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgICAgIGlmIHBpcGUu
c3Rkb3V0IGluIHI6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHN0ZG91dGJ1ZiArIHBpcGUuc3Rk
b3V0LnJlYWQoKQotICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmUgYW5kIGxlbihk
YXRhKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEgPSBkYXRhLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0ZGF0YS5hcHBlbmQoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy53cml0ZShk
YXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0YnVmID0gYiIiCi0gICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGRvdXRidWYgPSBkYXRhCi0KLSAgICAgICAgICAgIGlmIHBpcGUuc3RkZXJyIGluIHI6
Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHN0ZGVycmJ1ZiArIHBpcGUuc3RkZXJyLnJlYWQoKQot
ICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmUgYW5kIGxlbihkYXRhKSA+IDA6Ci0g
ICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBk
YXRhLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgICAgICAgICAgICAgZXJyZGF0YS5hcHBl
bmQoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy53cml0ZShkYXRhKQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkZXJyYnVmID0gYiIiCi0gICAgICAgICAgICAgICAgICAgIGV4
Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJi
dWYgPSBkYXRhCi0KLSAgICAgICAgICAgIHJlYWRleHRyYXMocikKLQotICAgIGZpbmFsbHk6ICAg
IAotICAgICAgICBsb2cuZmx1c2goKQotCi0gICAgcmVhZGV4dHJhcyhbZm9iaiBmb3IgZm9iaiwg
XyBpbiBleHRyYWZpbGVzXSkKKyAgICAgICAgICAgIHJlYWRfYWxsX3BpcGVzKGxvZywgcmluLCBv
dXRkYXRhLCBlcnJkYXRhKQorCisgICAgICAgICMgUG9jZXNzIGNsb3NlZCwgZHJhaW4gYWxsIHBp
cGVzLi4uCisgICAgICAgIHJlYWRfYWxsX3BpcGVzKGxvZywgcmluLCBvdXRkYXRhLCBlcnJkYXRh
KQorICAgIGZpbmFsbHk6CisgICAgICAgIGxvZy5mbHVzaAogCiAgICAgaWYgcGlwZS5zdGRvdXQg
aXMgbm90IE5vbmU6CiAgICAgICAgIHBpcGUuc3Rkb3V0LmNsb3NlKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>