A race condition in my containers means that occasionally
/var/run/screen/ isn't present when startup finishes and I SSH in.
This results in an error when normal users try to run screen.

I believe the race is against my lxc integration job:

    root@imago:~# cat /etc/init/lxc.conf
    description "LXC vs. Upstart workarounds"
    start on startup
    task
    console output
    script
     # As lxc 0.7's halt/reboot detection hack needs /var/run to NOT be a
     # tmpfs, we need to manually clean it -- esp. the ifstate file that
     # tells falsely tells ifupdown "lo is up".
     #
     # To debug, add -printf "Deleting stale file %p\n" before -delete.
     find /var/run/ -xdev -not -path /var/run/ -delete
     initctl emit -n stopped JOB=udevtrigger
     initctl emit -n started JOB=udev
     # This one is needed for broken ifupdown NMU 0.6.8ubuntu29.1
     initctl emit -n net-device-up IFACE=lo LOGICAL=lo ADDRFAM=inet
     METHOD=loopback
    end script

The screen-cleanup job is

    root@imago:~# grep -v ^$ /etc/init/screen-cleanup.conf
    # screen
    description "GNU Screen Cleanup"
    author "Dustin Kirkland <kirkl...@canonical.com>"
    start on filesystem
    task
    script
      SCREENDIR=/var/run/screen
      if [ -L $SCREENDIR ] || [ ! -d $SCREENDIR ]; then
        rm -f $SCREENDIR
        mkdir $SCREENDIR
        chown root:utmp $SCREENDIR
      fi
      find $SCREENDIR -type p -delete
      # If the local admin has used dpkg-statoverride to install the screen
      # binary with different set[ug]id bits, change the permissions of
      # $SCREENDIR accordingly
      BINARYPERM=`stat -c%a /usr/bin/screen`
      if [ "$BINARYPERM" -ge 4000 ]; then
        chmod 0755 $SCREENDIR
      elif [ "$BINARYPERM" -ge 2000 ]; then
        chmod 0775 $SCREENDIR
      else
        chmod 0777 $SCREENDIR
      fi
    end script

Obviously the *right* solution is to use a tmpfs for /var/run, as
non-containerized Ubuntu does.  Since this breaks lxc-start's
reboot/halt (via utmp) detection, I'm looking for the next best
workaround.

I think this is probably to disable /etc/init/mountall.conf and spoof
its events at the end of /etc/init/lxc.conf.  mountall.conf is currently
a noop -- I don't allow containers to perform mounts -- but I left it
enabled because it generates a whole bunch of events and I haven't
gotten around to working out exactly what they are yet.


------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Lxc-users mailing list
Lxc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-users

Reply via email to