<?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>3085</bug_id>
          
          <creation_ts>2012-09-10 18:04:15 +0000</creation_ts>
          <short_desc>Undefined event handler execution order can lead to unexpected behavior and even failures</short_desc>
          <delta_ts>2012-09-20 12:45:56 +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>unspecified</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>1.3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Larson">kergoth</reporter>
          <assigned_to name="Richard Purdie">richard.purdie</assigned_to>
          <cc>poky.bs.watcher</cc>
    
    <cc>poky.watcher</cc>
    
    <cc>sgw</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>---</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>24996</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Larson">kergoth</who>
    <bug_when>2012-09-10 18:04:15 +0000</bug_when>
    <thetext>BitBake runs event handlers in an undefined order (likely determined by the recipe parse order, which is likely determined by the order files are found on disk, which means the order won&apos;t change from run to run normally, but the order is still undefined), rather than in either registration order or reverse registration order.

As a result of this, there&apos;s no way to ensure that one sanity check runs before or after another one, or one bit of ConfigParsed metadata alteration occurs before or after yours. As one example of a failure this causes, there&apos;s no way to ensure your ConfigParsed handler runs after oe_import, which means there&apos;s no way to know if oe.data has been imported, for example. As a result, many ConfigParsed handlers have to manually run oe_import(d), to hack around it, causing unnecessary work.

As another example of this sort of failure, we can&apos;t always cleanly fail out due to a missing toolchain, depending on the order in which the various toolchain event handlers run. For example, it may attempt to create the toolchain symlinks or extract the sysroot before we&apos;ve confirmed that the toolchain even exists.

To fix this, bitbake should be altered to run events in registration order. I have a trivial patch implementing this (it&apos;d be even cleaner if we required python 2.7, as we could use OrderedDict, of course), but it&apos;ll need hefty testing and buildhistory use to check for problematic event handlers. Of course, any handlers broken by that change could have broken at any time, and would just have gotten lucky regarding event handler execution order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25000</commentid>
    <comment_count>1</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2012-09-10 20:59:40 +0000</bug_when>
    <thetext>In the interests of determinstic builds, we *need* to fix this, I&apos;d say fairly urgently. I&apos;d be tempted to include this in one of sgw&apos;s test builds on the autobuilder and call it good if we don&apos;t see problems.

Can you attach the patch (or mail it to the bitbake list)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25003</commentid>
    <comment_count>2</comment_count>
      <attachid>782</attachid>
    <who name="Christopher Larson">kergoth</who>
    <bug_when>2012-09-10 22:30:52 +0000</bug_when>
    <thetext>Created attachment 782
compat, event: use OrderedDict from py2.7 for the event handlers

I was playing with a different version, but this is probably cleaner in the long run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25456</commentid>
    <comment_count>3</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2012-09-20 12:45:56 +0000</bug_when>
    <thetext>I&apos;ve merged this, non-determinism is something we need to avoid. http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=749f4f67444c7be7fe7aac0189776fd540975e09</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>782</attachid>
            <date>2012-09-10 22:30:52 +0000</date>
            <delta_ts>2012-09-10 22:30:52 +0000</delta_ts>
            <desc>compat, event: use OrderedDict from py2.7 for the event handlers</desc>
            <filename>0001-compat-event-use-OrderedDict-from-py2.7-for-the-even.patch</filename>
            <type>text/plain</type>
            <size>9288</size>
            <attacher name="Christopher Larson">kergoth</attacher>
            
              <data encoding="base64">RnJvbSA4NGFjZjg4MTNmMDRiM2FhODQyMjZlM2QwOGVhZTk3OTBkMGVlMzQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50
b3IuY29tPgpEYXRlOiBNb24sIDEwIFNlcCAyMDEyIDE1OjIzOjE5IC0wNzAwClN1YmplY3Q6IFtQ
QVRDSF0gY29tcGF0LCBldmVudDogdXNlIE9yZGVyZWREaWN0IGZyb20gcHkyLjcgZm9yIHRoZSBl
dmVudAogaGFuZGxlcnMKClRoaXMgZW5zdXJlcyB0aGF0IG91ciBldmVudCBoYW5kbGVycyBnZXQg
cnVuIGluIHJlZ2lzdHJhdGlvbiBvcmRlciwgbWFraW5nIHRoZQpiZWhhdmlvciBtb3JlIGRldGVy
bWluaXN0aWMuIEkgcHVsbGVkIGluIHRoZSBweXRob24yLjcgT3JkZXJlZERpY3QgdG8gYXZvaWQK
ZXNzZW50aWFsbHkgcmVpbXBsZW1lbnRpbmcgYSB2ZXJzaW9uIG9mIGl0IG91cnNlbHZlcywgZmln
dXJpbmcgd2UgY2FuIGRyb3AgaXQKd2hlbiB3ZSBidW1wIG91ciByZXF1aXJlZCBweXRob24gdmVy
c2lvbiBuZXh0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJz
b25AbWVudG9yLmNvbT4KLS0tCiBsaWIvYmIvY29tcGF0LnB5IHwgIDIxMyArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9iYi9ldmVudC5w
eSAgfCAgICAzICstCiAyIGZpbGVzIGNoYW5nZWQsIDIxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0
aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2JiL2NvbXBhdC5weSBiL2xpYi9iYi9jb21wYXQucHkK
aW5kZXggYzY5NzhmYy4uMTQ2NmRhMiAxMDA2NDQKLS0tIGEvbGliL2JiL2NvbXBhdC5weQorKysg
Yi9saWIvYmIvY29tcGF0LnB5CkBAIC0xLDUgKzEsMTEgQEAKICIiIkNvZGUgcHVsbGVkIGZyb20g
ZnV0dXJlIHB5dGhvbiB2ZXJzaW9ucywgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSIiIgogCitmcm9t
IGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIFZhbHVlc1ZpZXcs
IEl0ZW1zVmlldwordHJ5OgorICAgIGZyb20gdGhyZWFkIGltcG9ydCBnZXRfaWRlbnQgYXMgX2dl
dF9pZGVudAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gZHVtbXlfdGhyZWFkIGltcG9y
dCBnZXRfaWRlbnQgYXMgX2dldF9pZGVudAorCiBkZWYgdG90YWxfb3JkZXJpbmcoY2xzKToKICAg
ICAiIiJDbGFzcyBkZWNvcmF0b3IgdGhhdCBmaWxscyBpbiBtaXNzaW5nIG9yZGVyaW5nIG1ldGhv
ZHMiIiIKICAgICBjb252ZXJ0ID0gewpAQCAtMjYsMyArMzIsMjEwIEBAIGRlZiB0b3RhbF9vcmRl
cmluZyhjbHMpOgogICAgICAgICAgICAgb3BmdW5jLl9fZG9jX18gPSBnZXRhdHRyKGludCwgb3Bu
YW1lKS5fX2RvY19fCiAgICAgICAgICAgICBzZXRhdHRyKGNscywgb3BuYW1lLCBvcGZ1bmMpCiAg
ICAgcmV0dXJuIGNscworCitjbGFzcyBPcmRlcmVkRGljdChkaWN0KToKKyAgICAnRGljdGlvbmFy
eSB0aGF0IHJlbWVtYmVycyBpbnNlcnRpb24gb3JkZXInCisgICAgIyBBbiBpbmhlcml0ZWQgZGlj
dCBtYXBzIGtleXMgdG8gdmFsdWVzLgorICAgICMgVGhlIGluaGVyaXRlZCBkaWN0IHByb3ZpZGVz
IF9fZ2V0aXRlbV9fLCBfX2xlbl9fLCBfX2NvbnRhaW5zX18sIGFuZCBnZXQuCisgICAgIyBUaGUg
cmVtYWluaW5nIG1ldGhvZHMgYXJlIG9yZGVyLWF3YXJlLgorICAgICMgQmlnLU8gcnVubmluZyB0
aW1lcyBmb3IgYWxsIG1ldGhvZHMgYXJlIHRoZSBzYW1lIGFzIHJlZ3VsYXIgZGljdGlvbmFyaWVz
LgorCisgICAgIyBUaGUgaW50ZXJuYWwgc2VsZi5fX21hcCBkaWN0IG1hcHMga2V5cyB0byBsaW5r
cyBpbiBhIGRvdWJseSBsaW5rZWQgbGlzdC4KKyAgICAjIFRoZSBjaXJjdWxhciBkb3VibHkgbGlu
a2VkIGxpc3Qgc3RhcnRzIGFuZCBlbmRzIHdpdGggYSBzZW50aW5lbCBlbGVtZW50LgorICAgICMg
VGhlIHNlbnRpbmVsIGVsZW1lbnQgbmV2ZXIgZ2V0cyBkZWxldGVkICh0aGlzIHNpbXBsaWZpZXMg
dGhlIGFsZ29yaXRobSkuCisgICAgIyBFYWNoIGxpbmsgaXMgc3RvcmVkIGFzIGEgbGlzdCBvZiBs
ZW5ndGggdGhyZWU6ICBbUFJFViwgTkVYVCwgS0VZXS4KKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqYXJncywgKiprd2RzKToKKyAgICAgICAgJycnSW5pdGlhbGl6ZSBhbiBvcmRlcmVkIGRpY3Rp
b25hcnkuICBUaGUgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzCisgICAgICAgIHJlZ3VsYXIgZGlj
dGlvbmFyaWVzLCBidXQga2V5d29yZCBhcmd1bWVudHMgYXJlIG5vdCByZWNvbW1lbmRlZCBiZWNh
dXNlCisgICAgICAgIHRoZWlyIGluc2VydGlvbiBvcmRlciBpcyBhcmJpdHJhcnkuCisKKyAgICAg
ICAgJycnCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDE6CisgICAgICAgICAgICByYWlzZSBUeXBl
RXJyb3IoJ2V4cGVjdGVkIGF0IG1vc3QgMSBhcmd1bWVudHMsIGdvdCAlZCcgJSBsZW4oYXJncykp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX19yb290CisgICAgICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuX19yb290ID0gcm9vdCA9IFtdICAgICAg
ICAgICAgICAgICAgICAgIyBzZW50aW5lbCBub2RlCisgICAgICAgICAgICByb290WzpdID0gW3Jv
b3QsIHJvb3QsIE5vbmVdCisgICAgICAgICAgICBzZWxmLl9fbWFwID0ge30KKyAgICAgICAgc2Vs
Zi5fX3VwZGF0ZSgqYXJncywgKiprd2RzKQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtl
eSwgdmFsdWUsIFBSRVY9MCwgTkVYVD0xLCBkaWN0X3NldGl0ZW09ZGljdC5fX3NldGl0ZW1fXyk6
CisgICAgICAgICdvZC5fX3NldGl0ZW1fXyhpLCB5KSA8PT0+IG9kW2ldPXknCisgICAgICAgICMg
U2V0dGluZyBhIG5ldyBpdGVtIGNyZWF0ZXMgYSBuZXcgbGluayBhdCB0aGUgZW5kIG9mIHRoZSBs
aW5rZWQgbGlzdCwKKyAgICAgICAgIyBhbmQgdGhlIGluaGVyaXRlZCBkaWN0aW9uYXJ5IGlzIHVw
ZGF0ZWQgd2l0aCB0aGUgbmV3IGtleS92YWx1ZSBwYWlyLgorICAgICAgICBpZiBrZXkgbm90IGlu
IHNlbGY6CisgICAgICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKKyAgICAgICAgICAgIGxhc3Qg
PSByb290W1BSRVZdCisgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IHNlbGYu
X19tYXBba2V5XSA9IFtsYXN0LCByb290LCBrZXldCisgICAgICAgIGRpY3Rfc2V0aXRlbShzZWxm
LCBrZXksIHZhbHVlKQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSwgUFJFVj0wLCBO
RVhUPTEsIGRpY3RfZGVsaXRlbT1kaWN0Ll9fZGVsaXRlbV9fKToKKyAgICAgICAgJ29kLl9fZGVs
aXRlbV9fKHkpIDw9PT4gZGVsIG9kW3ldJworICAgICAgICAjIERlbGV0aW5nIGFuIGV4aXN0aW5n
IGl0ZW0gdXNlcyBzZWxmLl9fbWFwIHRvIGZpbmQgdGhlIGxpbmsgd2hpY2ggZ2V0cworICAgICAg
ICAjIHJlbW92ZWQgYnkgdXBkYXRpbmcgdGhlIGxpbmtzIGluIHRoZSBwcmVkZWNlc3NvciBhbmQg
c3VjY2Vzc29yIG5vZGVzLgorICAgICAgICBkaWN0X2RlbGl0ZW0oc2VsZiwga2V5KQorICAgICAg
ICBsaW5rX3ByZXYsIGxpbmtfbmV4dCwga2V5ID0gc2VsZi5fX21hcC5wb3Aoa2V5KQorICAgICAg
ICBsaW5rX3ByZXZbTkVYVF0gPSBsaW5rX25leHQKKyAgICAgICAgbGlua19uZXh0W1BSRVZdID0g
bGlua19wcmV2CisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICdvZC5fX2l0ZXJf
XygpIDw9PT4gaXRlcihvZCknCisgICAgICAgICMgVHJhdmVyc2UgdGhlIGxpbmtlZCBsaXN0IGlu
IG9yZGVyLgorICAgICAgICBORVhULCBLRVkgPSAxLCAyCisgICAgICAgIHJvb3QgPSBzZWxmLl9f
cm9vdAorICAgICAgICBjdXJyID0gcm9vdFtORVhUXQorICAgICAgICB3aGlsZSBjdXJyIGlzIG5v
dCByb290OgorICAgICAgICAgICAgeWllbGQgY3VycltLRVldCisgICAgICAgICAgICBjdXJyID0g
Y3VycltORVhUXQorCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgJ29kLl9f
cmV2ZXJzZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpJworICAgICAgICAjIFRyYXZlcnNlIHRoZSBs
aW5rZWQgbGlzdCBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBQUkVWLCBLRVkgPSAwLCAyCisg
ICAgICAgIHJvb3QgPSBzZWxmLl9fcm9vdAorICAgICAgICBjdXJyID0gcm9vdFtQUkVWXQorICAg
ICAgICB3aGlsZSBjdXJyIGlzIG5vdCByb290OgorICAgICAgICAgICAgeWllbGQgY3VycltLRVld
CisgICAgICAgICAgICBjdXJyID0gY3VycltQUkVWXQorCisgICAgZGVmIGNsZWFyKHNlbGYpOgor
ICAgICAgICAnb2QuY2xlYXIoKSAtPiBOb25lLiAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIG9kLicK
KyAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5fX21hcC5pdGVydmFsdWVzKCk6CisgICAgICAgICAg
ICBkZWwgbm9kZVs6XQorICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKKyAgICAgICAgcm9vdFs6
XSA9IFtyb290LCByb290LCBOb25lXQorICAgICAgICBzZWxmLl9fbWFwLmNsZWFyKCkKKyAgICAg
ICAgZGljdC5jbGVhcihzZWxmKQorCisgICAgIyAtLSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgZG8g
bm90IGRlcGVuZCBvbiB0aGUgaW50ZXJuYWwgc3RydWN0dXJlIC0tCisKKyAgICBkZWYga2V5cyhz
ZWxmKToKKyAgICAgICAgJ29kLmtleXMoKSAtPiBsaXN0IG9mIGtleXMgaW4gb2QnCisgICAgICAg
IHJldHVybiBsaXN0KHNlbGYpCisKKyAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAnb2Qu
dmFsdWVzKCkgLT4gbGlzdCBvZiB2YWx1ZXMgaW4gb2QnCisgICAgICAgIHJldHVybiBbc2VsZltr
ZXldIGZvciBrZXkgaW4gc2VsZl0KKworICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgJ29k
Lml0ZW1zKCkgLT4gbGlzdCBvZiAoa2V5LCB2YWx1ZSkgcGFpcnMgaW4gb2QnCisgICAgICAgIHJl
dHVybiBbKGtleSwgc2VsZltrZXldKSBmb3Iga2V5IGluIHNlbGZdCisKKyAgICBkZWYgaXRlcmtl
eXMoc2VsZik6CisgICAgICAgICdvZC5pdGVya2V5cygpIC0+IGFuIGl0ZXJhdG9yIG92ZXIgdGhl
IGtleXMgaW4gb2QnCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYpCisKKyAgICBkZWYgaXRlcnZh
bHVlcyhzZWxmKToKKyAgICAgICAgJ29kLml0ZXJ2YWx1ZXMgLT4gYW4gaXRlcmF0b3Igb3ZlciB0
aGUgdmFsdWVzIGluIG9kJworICAgICAgICBmb3IgayBpbiBzZWxmOgorICAgICAgICAgICAgeWll
bGQgc2VsZltrXQorCisgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKKyAgICAgICAgJ29kLml0ZXJp
dGVtcyAtPiBhbiBpdGVyYXRvciBvdmVyIHRoZSAoa2V5LCB2YWx1ZSkgcGFpcnMgaW4gb2QnCisg
ICAgICAgIGZvciBrIGluIHNlbGY6CisgICAgICAgICAgICB5aWVsZCAoaywgc2VsZltrXSkKKwor
ICAgIHVwZGF0ZSA9IE11dGFibGVNYXBwaW5nLnVwZGF0ZQorCisgICAgX191cGRhdGUgPSB1cGRh
dGUgIyBsZXQgc3ViY2xhc3NlcyBvdmVycmlkZSB1cGRhdGUgd2l0aG91dCBicmVha2luZyBfX2lu
aXRfXworCisgICAgX19tYXJrZXIgPSBvYmplY3QoKQorCisgICAgZGVmIHBvcChzZWxmLCBrZXks
IGRlZmF1bHQ9X19tYXJrZXIpOgorICAgICAgICAnJydvZC5wb3Aoa1ssZF0pIC0+IHYsIHJlbW92
ZSBzcGVjaWZpZWQga2V5IGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgdmFs
dWUuICBJZiBrZXkgaXMgbm90IGZvdW5kLCBkIGlzIHJldHVybmVkIGlmIGdpdmVuLCBvdGhlcndp
c2UgS2V5RXJyb3IKKyAgICAgICAgaXMgcmFpc2VkLgorCisgICAgICAgICcnJworICAgICAgICBp
ZiBrZXkgaW4gc2VsZjoKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGZba2V5XQorICAgICAgICAg
ICAgZGVsIHNlbGZba2V5XQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiBk
ZWZhdWx0IGlzIHNlbGYuX19tYXJrZXI6CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkp
CisgICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXks
IGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICdvZC5zZXRkZWZhdWx0KGtbLGRdKSAtPiBvZC5nZXQo
ayxkKSwgYWxzbyBzZXQgb2Rba109ZCBpZiBrIG5vdCBpbiBvZCcKKyAgICAgICAgaWYga2V5IGlu
IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gc2VsZltrZXldCisgICAgICAgIHNlbGZba2V5XSA9
IGRlZmF1bHQKKyAgICAgICAgcmV0dXJuIGRlZmF1bHQKKworICAgIGRlZiBwb3BpdGVtKHNlbGYs
IGxhc3Q9VHJ1ZSk6CisgICAgICAgICcnJ29kLnBvcGl0ZW0oKSAtPiAoaywgdiksIHJldHVybiBh
bmQgcmVtb3ZlIGEgKGtleSwgdmFsdWUpIHBhaXIuCisgICAgICAgIFBhaXJzIGFyZSByZXR1cm5l
ZCBpbiBMSUZPIG9yZGVyIGlmIGxhc3QgaXMgdHJ1ZSBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgor
CisgICAgICAgICcnJworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIEtl
eUVycm9yKCdkaWN0aW9uYXJ5IGlzIGVtcHR5JykKKyAgICAgICAga2V5ID0gbmV4dChyZXZlcnNl
ZChzZWxmKSBpZiBsYXN0IGVsc2UgaXRlcihzZWxmKSkKKyAgICAgICAgdmFsdWUgPSBzZWxmLnBv
cChrZXkpCisgICAgICAgIHJldHVybiBrZXksIHZhbHVlCisKKyAgICBkZWYgX19yZXByX18oc2Vs
ZiwgX3JlcHJfcnVubmluZz17fSk6CisgICAgICAgICdvZC5fX3JlcHJfXygpIDw9PT4gcmVwcihv
ZCknCisgICAgICAgIGNhbGxfa2V5ID0gaWQoc2VsZiksIF9nZXRfaWRlbnQoKQorICAgICAgICBp
ZiBjYWxsX2tleSBpbiBfcmVwcl9ydW5uaW5nOgorICAgICAgICAgICAgcmV0dXJuICcuLi4nCisg
ICAgICAgIF9yZXByX3J1bm5pbmdbY2FsbF9rZXldID0gMQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gJyVzKCknICUgKHNlbGYu
X19jbGFzc19fLl9fbmFtZV9fLCkKKyAgICAgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxm
Ll9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5pdGVtcygpKQorICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgZGVsIF9yZXByX3J1bm5pbmdbY2FsbF9rZXldCisKKyAgICBkZWYgX19yZWR1Y2Vf
XyhzZWxmKToKKyAgICAgICAgJ1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcn
CisgICAgICAgIGl0ZW1zID0gW1trLCBzZWxmW2tdXSBmb3IgayBpbiBzZWxmXQorICAgICAgICBp
bnN0X2RpY3QgPSB2YXJzKHNlbGYpLmNvcHkoKQorICAgICAgICBmb3IgayBpbiB2YXJzKE9yZGVy
ZWREaWN0KCkpOgorICAgICAgICAgICAgaW5zdF9kaWN0LnBvcChrLCBOb25lKQorICAgICAgICBp
ZiBpbnN0X2RpY3Q6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCAoaXRlbXMs
KSwgaW5zdF9kaWN0KQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChpdGVtcywpCisK
KyAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgJ29kLmNvcHkoKSAtPiBhIHNoYWxsb3cgY29w
eSBvZiBvZCcKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYpCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgZnJvbWtleXMoY2xzLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSk6Cisg
ICAgICAgICcnJ09ELmZyb21rZXlzKFNbLCB2XSkgLT4gTmV3IG9yZGVyZWQgZGljdGlvbmFyeSB3
aXRoIGtleXMgZnJvbSBTLgorICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgdmFsdWUgZGVm
YXVsdHMgdG8gTm9uZS4KKworICAgICAgICAnJycKKyAgICAgICAgc2VsZiA9IGNscygpCisgICAg
ICAgIGZvciBrZXkgaW4gaXRlcmFibGU6CisgICAgICAgICAgICBzZWxmW2tleV0gPSB2YWx1ZQor
ICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAg
ICAgICcnJ29kLl9fZXFfXyh5KSA8PT0+IG9kPT15LiAgQ29tcGFyaXNvbiB0byBhbm90aGVyIE9E
IGlzIG9yZGVyLXNlbnNpdGl2ZQorICAgICAgICB3aGlsZSBjb21wYXJpc29uIHRvIGEgcmVndWxh
ciBtYXBwaW5nIGlzIG9yZGVyLWluc2Vuc2l0aXZlLgorCisgICAgICAgICcnJworICAgICAgICBp
ZiBpc2luc3RhbmNlKG90aGVyLCBPcmRlcmVkRGljdCk6CisgICAgICAgICAgICByZXR1cm4gbGVu
KHNlbGYpPT1sZW4ob3RoZXIpIGFuZCBzZWxmLml0ZW1zKCkgPT0gb3RoZXIuaXRlbXMoKQorICAg
ICAgICByZXR1cm4gZGljdC5fX2VxX18oc2VsZiwgb3RoZXIpCisKKyAgICBkZWYgX19uZV9fKHNl
bGYsIG90aGVyKToKKyAgICAgICAgJ29kLl9fbmVfXyh5KSA8PT0+IG9kIT15JworICAgICAgICBy
ZXR1cm4gbm90IHNlbGYgPT0gb3RoZXIKKworICAgICMgLS0gdGhlIGZvbGxvd2luZyBtZXRob2Rz
IHN1cHBvcnQgcHl0aG9uIDMueCBzdHlsZSBkaWN0aW9uYXJ5IHZpZXdzIC0tCisKKyAgICBkZWYg
dmlld2tleXMoc2VsZik6CisgICAgICAgICJvZC52aWV3a2V5cygpIC0+IGEgc2V0LWxpa2Ugb2Jq
ZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gb2QncyBrZXlzIgorICAgICAgICByZXR1cm4gS2V5c1Zp
ZXcoc2VsZikKKworICAgIGRlZiB2aWV3dmFsdWVzKHNlbGYpOgorICAgICAgICAib2Qudmlld3Zh
bHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIG9kJ3MgdmFsdWVzIgorICAg
ICAgICByZXR1cm4gVmFsdWVzVmlldyhzZWxmKQorCisgICAgZGVmIHZpZXdpdGVtcyhzZWxmKToK
KyAgICAgICAgIm9kLnZpZXdpdGVtcygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBh
IHZpZXcgb24gb2QncyBpdGVtcyIKKyAgICAgICAgcmV0dXJuIEl0ZW1zVmlldyhzZWxmKQpkaWZm
IC0tZ2l0IGEvbGliL2JiL2V2ZW50LnB5IGIvbGliL2JiL2V2ZW50LnB5CmluZGV4IGZhMTc5ZDgu
LjlmMjA5MzcgMTAwNjQ0Ci0tLSBhL2xpYi9iYi9ldmVudC5weQorKysgYi9saWIvYmIvZXZlbnQu
cHkKQEAgLTMyLDYgKzMyLDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBhdGV4aXQKIGltcG9y
dCB0cmFjZWJhY2sKIGltcG9ydCBiYi51dGlscworaW1wb3J0IGJiLmNvbXBhdAogCiAjIFRoaXMg
aXMgdGhlIHBpZCBmb3Igd2hpY2ggd2Ugc2hvdWxkIGdlbmVyYXRlIHRoZSBldmVudC4gVGhpcyBp
cyBzZXQgd2hlbgogIyB0aGUgcnVucXVldWUgZm9ya3Mgb2ZmLgpAQCAtNTMsNyArNTQsNyBAQCBS
ZWdpc3RlcmVkICAgICAgICA9IDEwCiBBbHJlYWR5UmVnaXN0ZXJlZCA9IDE0CiAKICMgSW50ZXJu
YWwKLV9oYW5kbGVycyA9IHt9CitfaGFuZGxlcnMgPSBiYi5jb21wYXQuT3JkZXJlZERpY3QoKQog
X3VpX2hhbmRsZXJzID0ge30KIF91aV9oYW5kbGVyX3NlcSA9IDAKIAotLSAKMS43LjkuNQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>