You're right, it is calling /sbin/poweroff, I made a wrapper to see what
was going on there as you suggested. While using the wrapper (to prevent
an actual poweroff), I noticed:

- 'udevadm monitor -e' logs no events
- No arguments are supplied to /sbin/poweroff
- '/sbin/poweroff' gets called multiple times (I counted 70 times)

Now, I'm not sure what explains the latter, but here's a guess. The
event device that systemd-logind is listening to is exposed by the gpio-
polled keybard driver, which I believe means that the GPIO line is
polled at a regular interval and, if triggered, results in the kernel
synthesizing a poweroff keyboard code. Perhaps it generates a new  press
each time it is polled and found to be asserted.

I also notice that if I make the wrapper a 1-and-done - i.e., I set a
flag the first time we're called and turn subsequent /sbin/poweroff
calls into no-ops, things behave as expected - swapoffs and umounts
before powerdown.

So, it seems like multiple poweroff calls in succession result in the
described behavior, is that expected? I wonder if you'd be able to
reproduce this by nintendo advantaging a poweroff wrapper that does
rapid-fire non-blocking calls to the real poweroff?

We could also experiment with asking the vendor to workaround this in
firmware (assuming this is considered a bug) by disabling autorepeat and
increase the poll interval to something higher.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1349566

Title:
  systemd-logind triggered poweroffs ignore upstart services

Status in “systemd” package in Ubuntu:
  Incomplete

Bug description:
  systemd-logind has a facility to detect non-ACPI power-off events
  (e.g. a power button push) and initiate a system shutdown. This
  facility works in Ubuntu - it manages to shutdown the sysvinit
  services, but upstart services do not appear to be cleanly shutdown.
  Among other things, it means that local filesystems don't get properly
  unmounted.

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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to