chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: show timeouts when watchdog howls
[elogind.git]
/
src
/
core
/
service.c
diff --git
a/src/core/service.c
b/src/core/service.c
index d5aff990964d8969546acc16575b916cb49eec3e..6a4665a1ae7ca560474e3661438498005bd519eb 100644
(file)
--- a/
src/core/service.c
+++ b/
src/core/service.c
@@
-1699,6
+1699,10
@@
static int service_start(Unit *u) {
s->main_pid_alien = false;
s->forbid_restart = false;
s->main_pid_alien = false;
s->forbid_restart = false;
+ free(s->status_text);
+ s->status_text = NULL;
+ s->status_errno = 0;
+
service_enter_start_pre(s);
return 0;
}
service_enter_start_pre(s);
return 0;
}
@@
-2547,11
+2551,15
@@
static int service_dispatch_timer(sd_event_source *source, usec_t usec, void *us
static int service_dispatch_watchdog(sd_event_source *source, usec_t usec, void *userdata) {
Service *s = SERVICE(userdata);
static int service_dispatch_watchdog(sd_event_source *source, usec_t usec, void *userdata) {
Service *s = SERVICE(userdata);
+ char t[FORMAT_TIMESPAN_MAX];
assert(s);
assert(source == s->watchdog_event_source);
assert(s);
assert(source == s->watchdog_event_source);
- log_error_unit(UNIT(s)->id, "%s watchdog timeout!", UNIT(s)->id);
+ log_error_unit(UNIT(s)->id,
+ "%s watchdog timeout (limit %s)!",
+ UNIT(s)->id,
+ format_timespan(t, sizeof(t), s->watchdog_usec, 1));
service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_WATCHDOG);
return 0;
service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_WATCHDOG);
return 0;