g_strsignal (WTERMSIG (res)));
}
else {
+ struct rlimit rlmt;
+ (void)getrlimit (RLIMIT_CORE, &rlmt);
+
msg_warn_main (
"%s process %P terminated abnormally by signal: %s"
- " but NOT created core file",
+ " but NOT created core file (throttled=%s); "
+ "core file limits: %L current, %L max",
g_quark_to_string (cur->type),
cur->pid,
- g_strsignal (WTERMSIG (res)));
+ g_strsignal (WTERMSIG (res)),
+ cur->cores_throttled ? "yes" : "no",
+ (gint64)rlmt.rlim_cur,
+ (gint64)rlmt.rlim_max);
}
#else
msg_warn_main (
if (need_refork) {
/* Fork another worker in replace of dead one */
rspamd_check_core_limits (rspamd_main);
+
+
rspamd_fork_delayed (cur->cf, cur->index, rspamd_main);
}
}
guint index; /**< index number */
guint nconns; /**< current connections count */
gboolean wanna_die; /**< worker is terminating */
+ gboolean cores_throttled; /**< set to true if cores throttling took place */
gdouble start_time; /**< start time */
struct rspamd_main *srv; /**< pointer to server structure */
GQuark type; /**< process type */