<?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>6996</bug_id>
          
          <creation_ts>2014-11-24 15:52:16 +0000</creation_ts>
          <short_desc>cyclic symlinks in rootfs cause user-space qemu to infinite loop on startup</short_desc>
          <delta_ts>2016-07-25 21:10:45 +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>OE-Core</product>
          <component>core</component>
          <version>1.6</version>
          <rep_platform>All</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://bugs.launchpad.net/qemu/+bug/1245703</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>2.2 M3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Tuleu">alexandre.tuleu</reporter>
          <assigned_to name="Aníbal Limón">anibal.limon</assigned_to>
          <cc>leonardo.sandoval.gonzalez</cc>
    
    <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>ross.burton</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>Don&apos;t know</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>47161</commentid>
    <comment_count>0</comment_count>
      <attachid>2257</attachid>
    <who name="Alexandre Tuleu">alexandre.tuleu</who>
    <bug_when>2014-11-24 15:52:16 +0000</bug_when>
    <thetext>Created attachment 2257
Custom recipe for xenomai inspired from meta-eldk

When building an image that install recipes that have cyclic symlink, the do_rootfs freeze the host system after qemu has eaten all virtual memory.

This is the case for the attached custom recipe, (a step in the attachement has been added to remove these cyclic links). xenomai want to install a header file hierarchy with several symlinks like those :

* /usr/xenomai/include/xenomai -&gt; /usr/xenomai/include
* /usr/xenomai/include/asm-x86/xenomai -&gt; /usr/xenomai/include/asm-x86
...

Without an ulimit, the rootfs will freeze the host system. If a large ulimit is set (ulimit -v 8000000), the postint_intercept scripts update_font_cache and update_pixbuf_cache are both segfault-ing after a few minutes. However it would mean that the same script would be run at first boot of the target system, maybe making the image not usable.

From the fontconfig changelog, this utility is since version 2.6.34 robust to recursive symlink. Maybe the yocto patch or the qemu wrapping are breaking this feature

The dirty patch at do_install of this custom recipe effectivelly solves the issue, and an image that would list package xenomai-dev will be build without issues

I see several issues :
* the postinst_intercept scripts should be robust to cyclic symlinks
* A ulimit should maybe be automatically set before calling qemu at postinst_intercept step, to avoid the host system to freeze.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49348</commentid>
    <comment_count>1</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2015-03-10 16:39:22 +0000</bug_when>
    <thetext>I created a basic recipe that installs a circular loop and added it to core-image-sato, and with master do_rootfs works fine, which implies that either qemu or fontconfig (or both) are working correctly now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49824</commentid>
    <comment_count>2</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2015-03-26 19:37:16 +0000</bug_when>
    <thetext>I can&apos;t replicate this in fido (1.8) using a custom recipe to create a cyclic link.
I can replicate this in daisy (1.6) using udev-ptest as a cyclic link.
Dizzy (1.7) is building now.

I&apos;m not sure what you mean by fontconfig 2.6.34, there isn&apos;t a fontconfig release of that name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49826</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2015-03-26 20:58:01 +0000</bug_when>
    <thetext>I take it back, I can replicate this with fido if I revert the udev fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49827</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2015-03-26 21:03:35 +0000</bug_when>
    <thetext>Both fontconfig and gdk-pixbuf install postinstall hooks that spin when they hit the cyclic loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49828</commentid>
    <comment_count>5</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2015-03-26 21:34:37 +0000</bug_when>
    <thetext>Aha, upstream bug report: https://bugs.launchpad.net/qemu/+bug/1245703</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49830</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2015-03-26 21:40:15 +0000</bug_when>
    <thetext>Marking as 1.9, this is too late to start meddling with qemu and there&apos;s workarounds in fido (which are currently being backported to 1.7).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59827</commentid>
    <comment_count>7</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-03-09 13:25:16 +0000</bug_when>
    <thetext>I suspect the easiest solution is to modify uilt/path.c in qemu such that it doesn&apos;t interate all paths at the start but does so &quot;on demand&quot;. This would avoid it walking pieces of the tree it never uses. I have a patch which attempts to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64427</commentid>
    <comment_count>8</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-07-25 21:06:28 +0000</bug_when>
    <thetext>http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=3331992a27f48f590efb1188f6507378b6e1d352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64430</commentid>
    <comment_count>9</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2016-07-25 21:10:45 +0000</bug_when>
    <thetext>Marking as resolved as oe-core 9ac5017b3328a18561c2912edfda2d7d97c675f2 fixed it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2257</attachid>
            <date>2014-11-24 15:52:16 +0000</date>
            <delta_ts>2014-11-24 15:52:16 +0000</delta_ts>
            <desc>Custom recipe for xenomai inspired from meta-eldk</desc>
            <filename>xenomai_2.6.4.bb</filename>
            <type>application/octet-stream</type>
            <size>3168</size>
            <attacher name="Alexandre Tuleu">alexandre.tuleu</attacher>
            
              <data encoding="base64">QlVNTUFSWSA9ICJYZW5vbWFpIGlzIGEgcmVhbC10aW1lIGRldmVsb3BtZW50IGZyYW1ld29yayBj
b29wZXJhdGluZyB3aXRoIHRoZSBMaW51eCBcCmtlcm5lbCwgaW4gb3JkZXIgdG8gcHJvdmlkZSBh
IHBlcnZhc2l2ZSwgaW50ZXJmYWNlLWFnbm9zdGljLCBoYXJkIFwKcmVhbC10aW1lIHN1cHBvcnQg
dG8gdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMsIHNlYW1sZXNzbHkgaW50ZWdyYXRlZCBcCmludG8g
dGhlIEdOVS9MaW51eCBlbnZpcm9ubWVudC4iCkhPTUVQQUdFID0gImh0dHA6Ly93d3cueGVub21h
aS5vcmciClNFQ1RJT04gPSAidG9vbHMvcmVhbHRpbWUiCgpMSUNFTlNFID0gIk1JVCIKTElDX0ZJ
TEVTX0NIS1NVTSA9ICJmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT02MGZhYTA0MWM4ZDRhNzVh
Yjg3ZTExNWE5NDY5ZDk0ZCIKUFIgPSAicjAiCgpTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5n
bmEub3JnL3hlbm9tYWkvc3RhYmxlL3hlbm9tYWktJHtQVn0udGFyLmJ6MiIKU1JDX1VSSVttZDVz
dW1dID0gImMxNDZhZmE3NjFiMWUxZDcwNTVlNTZhYjdhNGNkOWRiIgpTUkNfVVJJW3NoYTI1NnN1
bV0gPSAiYjZmZjcyM2NiMGYzYjFjMmM0ZTE1YmNjZmQxMTRiMjQ4ZGVhMWI0MTY0YTBhYzBlNjEy
ODE1Mzc5Y2U3Y2FmOG8iCgppbmhlcml0IGF1dG90b29scwojIGluaGVyaXQgYWRkX21hY2hpbmVf
c3ltbGlua3MKCklOU0FORV9TS0lQXyR7UE59LWRldiArPSAiIGxpYmRpciAiCklOU0FORV9TS0lQ
XyR7UE59LWRiZyArPSAiIGxpYmRpciAiCklOU0FORV9TS0lQXyR7UE59ICs9ICIgbGliZGlyICIK
ClhFTk9NQUlfU1JDX1BBVEggPSAiL3Vzci9zcmMveGVub21haSIKClRBUkdFVF9DQ19BUkNIICs9
ICIke0xERkxBR1N9IgoKcHJlZml4X3ggPSAiJHtwcmVmaXh9L3hlbm9tYWkiCgpGSUxFU18ke1BO
fSArPSAiJHtwcmVmaXhfeH0vYmluLyogJHtwcmVmaXhfeH0vc2Jpbi8qIFwKCQkJICAgICR7cHJl
Zml4X3h9L2Jpbi9yZWdyZXNzaW9uL25hdGl2ZS8qIFwKCQkJCSR7cHJlZml4X3h9L2Jpbi9yZWdy
ZXNzaW9uL25hdGl2ZStwb3NpeC8qIFwKCQkJCSR7cHJlZml4X3h9L2Jpbi9yZWdyZXNzaW9uL3Bv
c2l4LyogXAoJCQkJJHtwcmVmaXhfeH0vbGliLyouc28uKiAke3ByZWZpeF94fS9saWIvcGtnY29u
ZmlnICR7cHJlZml4X3h9L2xpYi9wb3NpeC53cmFwcGVycyIKCkZJTEVTXyR7UE59LWRvYyArPSAi
JHtwcmVmaXhfeH0vc2hhcmUvKiIKRklMRVNfJHtQTn0tZGV2ICs9ICIke3ByZWZpeF94fS9pbmNs
dWRlLyogJHtwcmVmaXhfeH0vbGliLyoubGEgJHtwcmVmaXhfeH0vbGliLyouc28gJHtYRU5PTUFJ
X1NSQ19QQVRIfSIKRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke3ByZWZpeF94fS9saWIvKi5h
IgpGSUxFU18ke1BOfS1kYmcgKz0gIiR7cHJlZml4X3h9L2Jpbi8uZGVidWcvKiAke3ByZWZpeF94
fS9zYmluLy5kZWJ1Zy8qIFwKCQkJCSAgICAke3ByZWZpeF94fS9iaW4vcmVncmVzc2lvbi9uYXRp
dmUvLmRlYnVnLyogXAoJCQkJICAgICR7cHJlZml4X3h9L2Jpbi9yZWdyZXNzaW9uL25hdGl2ZStw
b3NpeC8uZGVidWcvKiBcCgkJCQkJJHtwcmVmaXhfeH0vYmluL3JlZ3Jlc3Npb24vcG9zaXgvLmRl
YnVnLyogXAoJCQkJCSR7cHJlZml4X3h9L2xpYi8uZGVidWcvKiBcCgkJCQkJIgoKZG9fY29uZmln
dXJlKCkgewoJY2QgJHtTfQoJIyBpbnN0YWxsIHhlbm9tYWkgc291cmNlIGZpcnN0IHRvIHRoZSB0
ZW1wIGZvbGRlciAtIG9yaWdpbmFsIHNvdXJjZSBjb2RlIG9mIHhlbm9tYWkKCXhlbm9tYWl0bXBk
aXI9JHtXT1JLRElSfS94ZW5zcmMKCWlmIFsgISAtZSAkeGVub21haXRtcGRpciBdIDsgdGhlbgoJ
CWluc3RhbGwgLWQgJHhlbm9tYWl0bXBkaXIKCQljcCAtZlIgKiAkeGVub21haXRtcGRpcgoJZmkK
CQogICAgJHtTfS9jb25maWd1cmUgLS1idWlsZD0ke0JVSUxEX1NZU30gLS1ob3N0PSR7SE9TVF9T
WVN9Cn0KCmRvX2NvbXBpbGUgKCkgewoJY2QgJHtTfQoJbWFrZQp9Cgpkb19pbnN0YWxsICgpIHsK
CWNkICR7U30KCW1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKCQoJIyByZW1vdmUgL2RldiBlbnRy
eSAtIGl0IHdpbGwgYmUgY3JlYXRlZCBsYXRlciBpbiBpbWFnZQoJcm0gLWZSICR7RH0vZGV2CgoJ
IyByZW1vdmUgYWxsIHJlY3Vyc2l2ZSBzeW1saW5rLCB0aGV5IHdpbGwgbWFrZSByb290ZnMgY3Jh
c2hpbmcKCWNkICR7RH0KCXRvX2RlbGV0ZT0iIgoKCSMgd2UgbGlzdCwgaW4gZGVwdGggZmlyc3Qg
YWxsIHNlbGYgbGlua3MKCWZvciBkIGluICQoZmluZCB1c3IveGVub21haS9pbmNsdWRlIC1kIC10
eXBlIGQpCglkbyAKCQlmb3IgbCBpbiAkKGZpbmQgJHtkfSAtdHlwZSBsIC1tYXhkZXB0aCAxICkg
CgkJZG8KCQkJaWYgWyAkKHJlYWRsaW5rICRsKSAgPSAgIi4iIF0KCQkJdGhlbgoJCQkJdG9fZGVs
ZXRlPSIkdG9fZGVsZXRlICRsIgoJCQlmaQoJCWRvbmUKCWRvbmUKCgoJI25vdyB3ZSBlZmZlY3Rp
dmVseSByZW1vdmUgdGhlIGxpbmtzCglmb3IgbCBpbiAkdG9fZGVsZXRlCglkbwoJCWVjaG8gIlJl
bW92aW5nIGRpcmVjdG9yeSBzeW1saW5rICR7bH0gLT4gXCIuXCIgYW5kIHJlcGxhY2luZyBieSBp
bmRpdmlkdWFsIHN5bWxpbmsiCgkJZGlyPSQoZGlybmFtZSAke0R9LyR7bH0pCgkJbGlua25hbWU9
JChiYXNlbmFtZSAke2x9KQoJCWNkICRkaXIKCQlpZiBbIC1oICRsaW5rbmFtZSBdCgkJdGhlbgoJ
CQlybSAkbGlua25hbWUKCQllbHNlCgkJCWVjaG8gIkludGVybmFsIGVycm9yICRsaW5rbmFtZSBp
cyBub3QgYSBzeW1saW5rIgoJCQlmYWxzZQoJCWZpCgkJZmlsZXM9JChscyAtMXIgLikKCQlta2Rp
ciAkbGlua25hbWUKCQljZCAkbGlua25hbWUKCQlmb3IgZiBpbiAkZmlsZXMKCQlkbwoJCQlsbiAt
cyAuLi8kZgoJCWRvbmUKCWRvbmUKCgkjIGluc3RhbGwgc291cmNlcyBvZiB4ZW5vbWFpIGZyb20g
dGVtcCBmb2xkZXIgY3JlYXRlZCBhdCBjb25maWd1cmUgc3RhZ2UKCWNkICR7V09SS0RJUn0veGVu
c3JjCgl4ZW5vbWFpZGlyPSR7RH0ke1hFTk9NQUlfU1JDX1BBVEh9CglpbnN0YWxsIC1kICR4ZW5v
bWFpZGlyCgljcCAtZlIgKiAkeGVub21haWRpcgp9CgpzeXNyb290X3N0YWdlX2FsbF9hcHBlbmQo
KSB7CiAgICBzeXNyb290X3N0YWdlX2RpciAke0R9JHtYRU5PTUFJX1NSQ19QQVRIfSAke1NZU1JP
T1RfREVTVERJUn0ke1hFTk9NQUlfU1JDX1BBVEh9Cn0K
</data>

          </attachment>
      

    </bug>

</bugzilla>