[OE-core] [oe-commits] Jonathan Liu : fontcache.bbclass: prepend to PACKAGEFUNCS instead of appending

Martin Jansa martin.jansa at gmail.com
Mon Mar 23 22:21:13 UTC 2015


On Sat, Mar 21, 2015 at 03:55:04PM +0100, Martin Jansa wrote:
> On Sat, Mar 21, 2015 at 09:29:07AM +0000, Richard Purdie wrote:
> > On Sat, 2015-03-21 at 03:11 +0100, Martin Jansa wrote:
> > > On Mon, Mar 16, 2015 at 05:42:36PM +0000, git at git.openembedded.org wrote:
> > > > Module: openembedded-core.git
> > > > Branch: master
> > > > Commit: f0e3db4eaacc32423934ce09b91bc619dc5dbd21
> > > > URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=f0e3db4eaacc32423934ce09b91bc619dc5dbd21
> > > > 
> > > > Author: Jonathan Liu <net147 at gmail.com>
> > > > Date:   Mon Mar  9 12:13:56 2015 +1100
> > > > 
> > > > fontcache.bbclass: prepend to PACKAGEFUNCS instead of appending
> > > > 
> > > > Appending to PACKAGEFUNCS results in the font packages missing the
> > > > postinst/postrm scripts and the fontconfig cache not being generated
> > > > in /var/cache/fontconfig when creating images or installing font
> > > > packages. This is because the package data has already been emitted
> > > > by emit_pkgdata in PACKAGEFUNCS. Prepend to PACKAGEFUNCS to ensure
> > > > add_fontcache_postinsts is executed before emit_pkgdata.
> > > 
> > > It's not caused by this change, but fixing this issue revealed that
> > > fc-cache doesn't really work here.
> > > 
> > > Every time the intercept_scripts/update_font_cache executes qemu it gets
> > > "stuck" eating a lot of cpu and memory until it dies. Is anyone alse
> > > seeing this behavior?
> > > 
> > > WARNING: The postinstall intercept hook 'update_font_cache' failed (exit code: 137)! See log for details!
> > > WARNING: The postinstalls for the following packages will be postponed for first boot: liberation-fonts
> > > ERROR: The following packages could not be configured offline and rootfs is read-only: ['liberation-fonts']
> > > ERROR: Function failed: do_rootfs
> > > 
> > > bitbake  32618 98.8 67.1 11031512 10983420 pts/3 R+ 03:00   4:53
> > > qemu-i386 -r 2.6.32 -L /OE/rootfs -E uD_LIBRARY_PATH=/OE/rootfs//usr/lib:/OE/rootfs//lib /OE/rootfs/usr/bin/fc-cache --sysroot=/OE/rootfs
> > 
> > There are a couple of bugs in the bugzilla around this. One seemed to be
> > related to circular symlinks in udev's ptest package which was
> > supposedly fixed. The other claims to have been resolved by upgrading
> > fontconfig to a version which doesn't have issues with circular paths.
> > 
> > There is general confusion about how to reproduce the issue and what the
> > real problem is though.
> > 
> > Does your system have any recursive directory structures?
> 
> I've tried to build a bit smaller image after sending the report and in
> that do_rootfs it finished successfully. I'll try to re-execute this to
> see if I get consistent results.
> 
> The bigger image has only few more packages in it, so if this is the
> case and smaller always works while bigger always fails I should be able
> to quickly find out which package/file is causing this.
> 
> I'll check the circular symlinks, I know there are some ptest packages
> in the bigger one.

In my case it's reproducible by adding udev-ptest to image, more specifically
having these 2 directories in rootfs:
usr/lib/udev/ptest/test/sys/devices
usr/lib/udev/ptest/test/sys/bus

deleting them and re-triggering the qemu works.
I can also confirm that it's not just lack of memory on the build machine.
It triggers OOM killer after using 64GB as well as on machine with just 8GB.

fc-bug/rootfs-broken$ time ../../../../sysroots/x86_64-linux/usr/bin/qemu-i386 -r 2.6.32 -L . -E LD_LIBRARY_PATH=usr/lib:lib usr/bin/fc-cache --sysroot=.
... OOM killer in an hour or 2 ... (this time I didn't get a log, because it killed almost everything else except qemu-i386 :)
fc-bug/rootfs-broken$ cd ..
fc-bug$ cp -ra rootfs-broken rootfs-broken-without-udev-ptest-bus-devices
fc-bug$ cd rootfs-broken-without-udev-ptest-bus-devices
fc-bug/rootfs-broken-without-udev-ptest-bus-devices$ rm -rf usr/lib/udev/ptest/test/sys/devices/ usr/lib/udev/ptest/test/sys/bus/
fc-bug/rootfs-broken-without-udev-ptest-bus-devices$ time ../../../../sysroots/x86_64-linux/usr/bin/qemu-i386 -r 2.6.32 -L . -E LD_LIBRARY_PATH=usr/lib:lib usr/bin/fc-cache --sysroot=.

real    0m30.424s
user    0m29.714s
sys     0m0.548s

Comparing strace shows the broken one to cycle a lot in directories like this:
< getdents(51, /* 8 entries */, 32768)    = 248
< openat(AT_FDCWD, "//home/jenkins/anaconda/build-starfish-dizzy/build/BUILD/work/qemux86-starfish-linux/fc-bug/rootfs-broken/./usr/lib/udev/ptest/test/sys/dev/block/8:1/subsystem/loop2/bdi/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/0:16/subsystem/8:16/subsystem/8:0/power", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 52

This issue forced me to finally set ulimit in my builds so that I can kill the
right process a bit sooner (instead of waiting for it to eat e.g. 128GB)

I'll try to create smaller reproducer and check newer fontconfig.

> 
> Thanks
> 
> > I'd like to get to the bottom of the issue and fix it once and for all
> > but we likely need more info.
> > 
> > Cheers,
> > 
> > Richard
> > 
> 
> -- 
> Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com



-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20150323/03e99c59/attachment-0002.sig>


More information about the Openembedded-core mailing list