Thanks to you both for your debugging help, this has now been confirmed.

While the sys_waitid() call makes sure that the siginfo_t struct is
zero'd before returning to userspace if there's no child and WNOHANG is
given; the compat_sys_waitid() function does NOT zero the 64-bit struct

This means that the pid is the same as the last one handled, so it sits
in an infinite loop.

Zero'ing the struct before calling waitid() solves the problem.


** Bug 60075 has been marked a duplicate of this bug

** Summary changed:

- Doesn't not spawn ttys
+ infinite loop handling children (amd64, ppc64, sparc)

** Description changed:

  After today's upgrade, ttys are no longer spawned on reboot.  I tried
  specifying "single" on the yaboot command line, and I do not get ttys.
  
- Wish me luck using break in initramfs. =/
+ When booting with --debug, the machine hangs after rcS stops and does
+ not spawn any further processes.
+ 
+ Further investigation reveals init spinning at 100% cpu inside the
+ waitid() call loop.

** Changed in: upstart (Ubuntu)
   Importance: Untriaged => Critical
     Assignee: (unassigned) => Scott James Remnant
       Status: Unconfirmed => Confirmed

** Changed in: upstart (Ubuntu)
       Status: Confirmed => Fix Committed

-- 
infinite loop handling children (amd64, ppc64, sparc)
https://launchpad.net/bugs/59459

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to