[Bug 1301882] Re: systemd-logind can get hung in cg_enumerate_tasks

James Hunt 1301882 at bugs.launchpad.net
Thu Apr 3 14:38:56 UTC 2014


I saw cgmanager spinning at >100% cpu earlier and just managed to strace
before my system overheated and powered off. Didn't catch the
problematic call, but the errno was EMFILE. Interesting since bug
1300663 shows the same value from upstart. I wonder if this might be a
kernel issue?

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1301882

Title:
  systemd-logind can get hung in cg_enumerate_tasks

Status in “systemd” package in Ubuntu:
  New

Bug description:
  While looking into some leftover processes after session end, I
  discovered that logind can get into a hung state. Here's roughly what
  I did (sorry that I don't have exact steps)

  1. Log in to unity, log out
  2. ssh in
  3. loginctl
  4. loginctl session-status <your closing session>
  5. log in, log out
  6. loginctl session-status <your new closing session>
  7. log in
  8. loginctl (systemd-logind is hung at this point)

  bt of loginctl while it's hung showing that it's going to timeout
  waiting for a reply from logind over dbus

  (gdb) bt
  #0  0x00007ffff6e67fa0 in __poll_nocancel () at ../sysdeps/unix/syscall-template.S:81
  #1  0x00007ffff757c4b8 in socket_do_iteration (transport=0x6183d0, flags=6, timeout_milliseconds=<optimised out>)
      at ../../dbus/dbus-transport-socket.c:1125
  #2  0x00007ffff757b3ff in _dbus_transport_do_iteration (transport=0x6183d0, flags=1, flags at entry=6, 
      timeout_milliseconds=timeout_milliseconds at entry=25000) at ../../dbus/dbus-transport.c:976
  #3  0x00007ffff75659dc in _dbus_connection_do_iteration_unlocked (connection=connection at entry=0x618ad0, 
      pending=pending at entry=0x618320, flags=flags at entry=6, timeout_milliseconds=timeout_milliseconds at entry=25000)
      at ../../dbus/dbus-connection.c:1234
  #4  0x00007ffff7566389 in _dbus_connection_block_pending_call (pending=0x618320)
      at ../../dbus/dbus-connection.c:2415
  #5  0x00007ffff757572a in dbus_pending_call_block (pending=<optimised out>) at ../../dbus/dbus-pending-call.c:748
  #6  0x00007ffff756694d in dbus_connection_send_with_reply_and_block (connection=connection at entry=0x618ad0, 
      message=message at entry=0x619000, timeout_milliseconds=timeout_milliseconds at entry=-1, 
      error=error at entry=0x7fffffffd610) at ../../dbus/dbus-connection.c:3530
  #7  0x000000000040ebf4 in bus_method_call_with_reply (bus=bus at entry=0x618ad0, 
      destination=destination at entry=0x40eeb1 "org.freedesktop.login1", 
      path=path at entry=0x40ee99 "/org/freedesktop/login1", 
      interface=interface at entry=0x40f478 "org.freedesktop.login1.Manager", 
      method=method at entry=0x40ef3a "ListSessions", return_reply=return_reply at entry=0x7fffffffd738, 
      return_error=return_error at entry=0x0, first_arg_type=first_arg_type at entry=0)
      at ../src/shared/dbus-common.c:1375
  #8  0x0000000000404426 in list_sessions (bus=0x618ad0, args=<optimised out>, n=<optimised out>)
      at ../src/login/loginctl.c:82
  #9  0x0000000000403b09 in loginctl_main (error=0x7fffffffd890, argv=0x7fffffffd9c8, argc=<optimised out>, 
      bus=0x618ad0) at ../src/login/loginctl.c:1543
  #10 main (argc=<optimised out>, argv=0x7fffffffd9c8) at ../src/login/loginctl.c:1574

  and here's the bt of systemd-logind

  (gdb) bt full
  #0  0x00007f75545d6fa0 in __poll_nocancel () at ../sysdeps/unix/syscall-template.S:81
  No locals.
  #1  0x00007f7554ada4b8 in socket_do_iteration (transport=0x2c87000, flags=7, timeout_milliseconds=<optimised out>) at ../../dbus/dbus-transport-socket.c:1125
          socket_transport = 0x2c87000
          poll_fd = {
            fd = 1041, 
            events = 1, 
            revents = 0
          }
          poll_res = <optimised out>
          poll_timeout = <optimised out>
  #2  0x00007f7554ad93ff in _dbus_transport_do_iteration (transport=0x2c87000, flags=1, flags at entry=7, timeout_milliseconds=timeout_milliseconds at entry=-1) at ../../dbus/dbus-transport.c:976
  No locals.
  #3  0x00007f7554ac39dc in _dbus_connection_do_iteration_unlocked (connection=connection at entry=0x2c87470, pending=pending at entry=0x0, flags=flags at entry=7, timeout_milliseconds=timeout_milliseconds at entry=-1) at ../../dbus/dbus-connection.c:1234
  No locals.
  #4  0x00007f7554ac3b84 in _dbus_connection_flush_unlocked (connection=0x2c87470) at ../../dbus/dbus-connection.c:3574
  No locals.
  #5  0x00007f7554ac4331 in _dbus_connection_block_pending_call (pending=0x2c63930) at ../../dbus/dbus-connection.c:2382
          start_tv_sec = 140141908468009
          start_tv_usec = 46691440
          tv_sec = 0
          tv_usec = 140735977390056
          status = <optimised out>
          connection = 0x2c87470
          client_serial = <optimised out>
          timeout = <optimised out>
          timeout_milliseconds = <optimised out>
          elapsed_milliseconds = <optimised out>
  #6  0x00007f7554ad372a in dbus_pending_call_block (pending=<optimised out>) at ../../dbus/dbus-pending-call.c:748
          __FUNCTION__ = "dbus_pending_call_block"
  #7  0x00007f7554ac494d in dbus_connection_send_with_reply_and_block (connection=0x2c87470, message=0x2c86d60, timeout_milliseconds=-1, error=0x7fffa5f08030) at ../../dbus/dbus-connection.c:3530
          reply = <optimised out>
          pending = 0x2c63930
          __FUNCTION__ = "dbus_connection_send_with_reply_and_block"
  #8  0x00007f7555125a85 in cgmanager_ping_sync () from /lib/x86_64-linux-gnu/libcgmanager.so.0
  No symbol table info available.
  #9  0x0000000000422285 in cgm_dbus_connect () at ../src/shared/cgmanager.c:68
          dbus_error = {
            name = 0x0, 
            message = 0x0, 
            dummy1 = 1, 
            dummy2 = 0, 
            dummy3 = 0, 
            dummy4 = 0, 
            dummy5 = 0, 
            padding1 = 0x285
          }
          connection = <optimised out>
          __func__ = "cgm_dbus_connect"
  #10 0x00000000004205fc in cg_enumerate_tasks (controller=0x425b4a "name=systemd", path=0x214e3b0 "/user/1000.user/c2.session", _f=_f at entry=0x7fffa5f08158) at ../src/shared/cgroup-util.c:117
          fs = 0x0
          f = <optimised out>
          r = <optimised out>
          value = 0x0
          template = 0x0
          fd = <optimised out>
          __PRETTY_FUNCTION__ = "cg_enumerate_tasks"
  #11 0x00000000004207da in cg_is_empty (controller=<optimised out>, path=<optimised out>, ignore_self=false) at ../src/shared/cgroup-util.c:1090
          f = 0x0
          pid = 0
          self_pid = <optimised out>
          found = false
          r = <optimised out>
  #12 0x0000000000420932 in cg_is_empty_recursive (controller=controller at entry=0x425b4a "name=systemd", path=0x214e3b0 "/user/1000.user/c2.session", ignore_self=ignore_self at entry=false) at ../src/shared/cgroup-util.c:1136
          d = 0x0
          fn = 0x0
          r = <optimised out>
          children = 0x7f7554ac3de5 <dbus_connection_unref+101>
          p1 = <optimised out>
          __PRETTY_FUNCTION__ = "cg_is_empty_recursive"
  #13 0x000000000040fbb9 in session_check_gc (s=s at entry=0x2134f10, drop_not_started=drop_not_started at entry=true) at ../src/login/logind-session.c:976
          r = <optimised out>
          __PRETTY_FUNCTION__ = "session_check_gc"
  #14 0x00000000004085e6 in manager_gc (m=m at entry=0x2067010, drop_not_started=drop_not_started at entry=true) at ../src/login/logind.c:1503
          seat = <optimised out>
          session = 0x2134f10
          user = <optimised out>
          i = 0xffffffffffffffff
          __PRETTY_FUNCTION__ = "manager_gc"
  #15 0x00000000004093c5 in manager_run (m=m at entry=0x2067010) at ../src/login/logind.c:1728
          event = {
            events = 4294967295, 
            data = {
              ptr = 0xffffffff, 
              fd = -1, 
              u32 = 4294967295, 
              u64 = 4294967295
            }
          }
          n = <optimised out>
          msec = -1
          __PRETTY_FUNCTION__ = "manager_run"
          __func__ = "manager_run"
  #16 0x00000000004061cc in main (argc=<optimised out>, argv=<optimised out>) at ../src/login/logind.c:1867
          m = 0x2067010
          r = 0
          __func__ = "main"

  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: systemd-services 204-5ubuntu15
  ProcVersionSignature: Ubuntu 3.13.0-22.44-generic 3.13.8
  Uname: Linux 3.13.0-22-generic x86_64
  ApportVersion: 2.14-0ubuntu1
  Architecture: amd64
  CurrentDesktop: Unity
  Date: Thu Apr  3 12:04:11 2014
  InstallationDate: Installed on 2012-10-07 (542 days ago)
  InstallationMedia: Ubuntu 12.10 "Quantal Quetzal" - Beta amd64 (20121007)
  SourcePackage: systemd
  UpgradeStatus: Upgraded to trusty on 2013-05-07 (331 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1301882/+subscriptions



More information about the foundations-bugs mailing list