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
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.