Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Jonathan Liu <net147@gmail.com>
To: Patrick Ohly <patrick.ohly@intel.com>,
	 openembedded-core@lists.openembedded.org
Subject: Re: systemd + run-postinsts.service
Date: Tue, 24 Mar 2015 09:33:37 +1100	[thread overview]
Message-ID: <551094C1.8020507@gmail.com> (raw)
In-Reply-To: <1427147834.3412.89.camel@intel.com>

On 24/03/2015 8:57 AM, Patrick Ohly wrote:
> Hello!
>
> I'm using systemd from OE-core master to boot core-image-minimal. I'm
> seeing a boot failure where "Run pending postinsts" (aka
> run-postinsts.service) gets stuck during booting under very specific
> circumstances:
>
>       1. The package has a pkg_postinst_${PN} which (intentionally)
>          failed during image building, thus delaying its execution to the
>          first boot.
>       2. The package uses "inherit systemd" to enable its own systemd
>          service.
>
> It seems to be "systemctl start <service name>" which is hanging,
> because I can reproduce the same behavior without systemd.bbclass in the
> following pkg_postinst:
>
> pkg_postinst_${PN} () {
> #!/bin/sh -e
>     # Cannot run during image building...
>     if [ x"$D" != "x" ]; then
>        exit 1
>     fi
>
>     # Do something on target during first boot.
>
>     systemctl enable foobar
>     systemctl start foobar # <====
> }
>
> It works without the last line. The actual recipe is a bit more complex,
> but I can try to create a dummy one if that would help.
>
> Any idea what could be causing this and, more importantly, how to fix
> it?
>
>
>
I am not sure how well systemd works with executing systemctl to 
manipulate services from within a service that is starting...

What is the definition of foobar.service?
foobar.service may depend on other services/mounts/targets to start 
before it but since "systemctl start" is blocking, those dependencies 
may not be satisfied yet until sometime after run-postinsts.service 
which can result in a circular dependency deadlock. See 
DefaultDependencies, After, Before in 
http://www.freedesktop.org/software/systemd/man/systemd.unit.html.

Things to try:
1. Refactor foobar.service and your image recipe to not require calling 
systemctl from within a systemd service
2. Change "systemctl start foobar" to "systemctl start --no-block 
foobar" to let the startup continue without waiting until foobar is started

Regards,
Jonathan




  reply	other threads:[~2015-03-23 22:33 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-23 21:57 systemd + run-postinsts.service Patrick Ohly
2015-03-23 22:33 ` Jonathan Liu [this message]
2015-03-24  7:59   ` Patrick Ohly

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=551094C1.8020507@gmail.com \
    --to=net147@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=patrick.ohly@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox