Comment 24 for bug 1357252

Revision history for this message
James Hunt (jamesodhunt) wrote : Re: Upstart jobs specifying cgroup fail to start occasionally

Hi Serge,

Attached are upstart session job output and cgmanager output showing "good" (desktop utopic in kvm) and "bad" (device) runs:

Note the following:

- The session init in both cases is making the call on cgmanager as a
  non-priv user in an identical way:

    cgmanager_create_sync(controller='freezer', path='upstart_cgroup')

- However, once that gets across the wire, we have differences:

The good run shows:

do_create_main:263: controller='freezer', cgroup='upstart_cgroup', ucred p=(pid=2948, uid=1000, gid=1000), ucred r=(pid=2948, uid=1000, gid=1000)
do_create_main:318: r.pid=2948, r.uid=1000, r.gid=1000, dirpath='/run/cgmanager/fs/freezer/user.slice/user-1000.slice/session-c2.scope'

The bad run shows:

do_create_main:263: controller='freezer', cgroup='upstart_cgroup', ucred p=(pid=638, uid=0, gid=0), ucred r=(pid=3554, uid=32011, gid=32011)
do_create_main:318: r.pid=3554, r.uid=32011, r.gid=32011, dirpath='/run/cgmanager/fs/freezer'

= Differences =

== Path ==

As you picked up previously, upstart never requested that cgmanager
create '/run/cgmanager/fs/freezer', but for some reason that's the
request that arrives. The correct path should be
'/run/cgmanager/fs/freezer/user.slice/user-1000.slice/session-c2.scope'

== uid ==

Bad run shows "uid=0" and "gid=0" - this looks incorrect.

= Possible culprits =

== cgproxy ==

This is running on the device along with cgmanager since the kernel
version is 3.4.67.

However, even when running in debug mode, the entire contents of
/var/log/upstart/cgproxy.log is:

--------------------
Connection from private client
Create: Client fd is: 8 (pid=3554, uid=32011, gid=32011)
cgmanager_create: returning -1; existed is -1
Disconnected from private client
--------------------

== Other possibilities ==

- kernel
- logind?