[systemd-devel] [PATCH] Fix assertions while disabling unexisting target units
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Sun Jul 14 20:00:28 PDT 2013
On Sun, Jul 14, 2013 at 05:03:29PM +0300, Oleksii Shevchuk wrote:
>
> > Can you be a bit more explicit, how was this condition triggered?
>
> 1. enable templated target (blahbah at something.target)
> 2. make mistake and disable that as service (systemctl disable
> blahbah at something)
> 3. enjoy SIGABRT
So the problem happens when disabling a non-existent instance unit.
Your fix undoes the change that introduced this problem:
- if (q == -ENOENT) {
+ if (q == -ENOENT && i->path) {
because the condition in if now cannot be satisfied.
A different solution is needed. Unfortunately this area
of code seems to have more problems:
# systemctl enable kmsconvt at tty5.service
ln -s '/etc/systemd/system/kmsconvt at .service' '/etc/systemd/system/getty.target.wants/kmsconvt at tty5.service'
# systemctl disable kmsconvt at tty5.service
rm '/etc/systemd/system/autovt at .service'
rm '/etc/systemd/system/getty.target.wants/kmsconvt at .service'
rm '/etc/systemd/system/getty.target.wants/kmsconvt at tty5.service'
Basically the whole idea of removing all symlinks pointing to the
template is borked.
Zbyszek
More information about the systemd-devel
mailing list