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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox