[OE-core] [PATCH 0/2] Two useradd fixes

Scott Garman scott.a.garman at intel.com
Fri Mar 23 04:43:40 UTC 2012


Hello,

This pull request fixes two race conditions related to the useradd code.

Yocto bug #2127 describes how when using the RPM package manager, the
order of package installation during generatin of the rootfs did not
guarantee that base-passwd and shadow would be installed before other
packages which need to install custom users/groups in their postinstall
functions. This fix ensures that when base-passwd and/or shadow are
part of an image, they will be installed first during image generation.

The second race condition is described in Yocto bug #1794, and can occur
if two build steps try to update the sysroot passwd/group files at the
same time. Since the shadow utilities enforce file locking, the commands
will fail to run. The fix for this involves checking for failure and
retrying the commands up to 10 times, with a 1s delay between attempts
before giving up.

Verifying these fixes involved creating numerous images and useradd-based
packages repeatedly on a build host with high parallelism, and also doing
so from a pre-populated sstate-cache. I was able to reliably simulate the
file locking behavior by making the passwd/group files read only when
developing the fix for #1794. 

Scott

The following changes since commit 87e581bb7da9f1530d190cd023fcf892c8b858f5:

  ddimage: Add script for writing images to boot media (2012-03-22 19:17:54 +0000)

are available in the git repository at:
  git://git.pokylinux.org/poky-contrib sgarman/useradd-lock-fix-oe
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/useradd-lock-fix-oe

Scott Garman (2):
  package_rpm.bbclass: ensure base-passwd and shadow get installed
    first
  useradd.bbclass: retry useradd/groupadd commands to avoid lock race
    issues

 meta/classes/package_rpm.bbclass |    9 ++++++++-
 meta/classes/useradd.bbclass     |   36 ++++++++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 3 deletions(-)

-- 
1.7.5.4





More information about the Openembedded-core mailing list