mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-27 01:55:32 +03:00
service: don't hit an assert if a service unit changes type and we get a spurious event from before
This commit is contained in:
parent
de34a42bca
commit
bfba3256a0
22
TODO
22
TODO
@ -22,23 +22,6 @@ Bugfixes:
|
|||||||
* we pull src/core/manager.h into src/shared/src/shared/path-lookup.c which is the wrong direction
|
* we pull src/core/manager.h into src/shared/src/shared/path-lookup.c which is the wrong direction
|
||||||
rename enum "ManagerRunningAs" to "SystemdRunningAs" and move it to shared/
|
rename enum "ManagerRunningAs" to "SystemdRunningAs" and move it to shared/
|
||||||
|
|
||||||
* crash happens when running a service as forking and then changing it to simple and reloading.
|
|
||||||
|
|
||||||
Jul 09 18:20:57 mop systemd[1]: usbmuxd.service operation timed out. Terminating.
|
|
||||||
Jul 09 18:20:57 mop systemd[1]: Unit usbmuxd.service entered failed state.
|
|
||||||
Jul 09 18:22:24 mop systemd[1]: PID 21814 read from file /var/run/usbmuxd.pid does not exist.
|
|
||||||
Jul 09 18:22:24 mop systemd[1]: Unit usbmuxd.service entered failed state.
|
|
||||||
Jul 09 18:22:33 mop systemd[1]: Reloading.
|
|
||||||
Jul 09 18:22:37 mop systemd[1]: Assertion 's->type == SERVICE_FORKING' failed at src/core/service.c:3007, function service_sigchld_eve...Aborting.
|
|
||||||
Jul 09 18:22:37 mop systemd[1]: Caught <ABRT>, dumped core as pid 21865.
|
|
||||||
Jul 09 18:22:37 mop systemd[1]: Freezing execution.
|
|
||||||
Jul 09 18:22:37 mop [21866]: Process 21865 (systemd) dumped core.
|
|
||||||
|
|
||||||
* support *static* (/run) hibernate inhibitors. All rpm -i actions should completely prevent any
|
|
||||||
sort of hibernate action until the next reboot. If the kernel or any other base tool is replaced
|
|
||||||
by rpm, the resume path might fail, the for resume needed kernel might even be uninstalled, and
|
|
||||||
the whole situation leads directly to data loss.
|
|
||||||
|
|
||||||
F18:
|
F18:
|
||||||
|
|
||||||
* journald: warn if we drop messages we forward to the syslog socket
|
* journald: warn if we drop messages we forward to the syslog socket
|
||||||
@ -55,6 +38,11 @@ F18:
|
|||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
|
* support *static* (/run) hibernate inhibitors. All rpm -i actions should completely prevent any
|
||||||
|
sort of hibernate action until the next reboot. If the kernel or any other base tool is replaced
|
||||||
|
by rpm, the resume path might fail, the for resume needed kernel might even be uninstalled, and
|
||||||
|
the whole situation leads directly to data loss.
|
||||||
|
|
||||||
* move debug shell to tty6 and make sure this doesn't break the gettys on tty6
|
* move debug shell to tty6 and make sure this doesn't break the gettys on tty6
|
||||||
|
|
||||||
* move cryptsetup key caching into kernel keyctl?
|
* move cryptsetup key caching into kernel keyctl?
|
||||||
|
@ -2961,12 +2961,10 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
|
|||||||
else
|
else
|
||||||
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
|
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
|
||||||
break;
|
break;
|
||||||
} else {
|
|
||||||
assert(s->type == SERVICE_DBUS || s->type == SERVICE_NOTIFY);
|
|
||||||
|
|
||||||
/* Fall through */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fall through */
|
||||||
|
|
||||||
case SERVICE_RUNNING:
|
case SERVICE_RUNNING:
|
||||||
service_enter_running(s, f);
|
service_enter_running(s, f);
|
||||||
break;
|
break;
|
||||||
@ -3036,7 +3034,9 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SERVICE_START:
|
case SERVICE_START:
|
||||||
assert(s->type == SERVICE_FORKING);
|
if (s->type != SERVICE_FORKING)
|
||||||
|
/* Maybe spurious event due to a reload that changed the type? */
|
||||||
|
break;
|
||||||
|
|
||||||
if (f != SERVICE_SUCCESS) {
|
if (f != SERVICE_SUCCESS) {
|
||||||
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
|
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
|
||||||
|
Loading…
Reference in New Issue
Block a user