Hi,

as you probably know, SIGWINCH is used both by terminal (emulators)
for window changes/redraw, and httpd for graceful stop (hardcoded
AFAICT).

This can cause issues when httpd is run in foreground from a terminal,
and as such (I think) is ignored in -X/ONE_PROCESS mode otherwise
gdb-ing would become quite irritating.

I'd like to be able to debug/instrument graceful stop with -X /
ONE_PROCESS though, without fearing to resize my gdb terminal or
something like that.

I suppose SIGUSR2 was not used some times ago because of its internal
usage in LinuxThreads (replaced by NPTL more than 10 years ago now),
or is/was there other systems/libcs which use SIGUSR2 for their own
purpose?

So, unless somewhere SIGUSR2 is still not a USeR available signal
nowadays, I propose that we switch to SIGUSR2, WDYT?
(There may be some tooling that uses SIGWINCH directly instead of "-k
graceful-stop", should be care?)

Could be something like the attached patch to "./configure -D
AP_SIG_GRACEFUL_STOP_SHORT=USR2 ...", or an hardcoded switch like
today...

Regards,
Yann.
Index: include/mpm_common.h
===================================================================
--- include/mpm_common.h	(revision 1853992)
+++ include/mpm_common.h	(working copy)
@@ -72,6 +72,7 @@ extern "C" {
 /* Signal used to gracefully restart (as a quoted string) */
 #define AP_SIG_GRACEFUL_STRING "SIGUSR1"
 
+#ifndef AP_SIG_GRACEFUL_STOP_SHORT
 /* Signal used to gracefully stop */
 #define AP_SIG_GRACEFUL_STOP SIGWINCH
 
@@ -80,6 +81,14 @@ extern "C" {
 
 /* Signal used to gracefully stop (as a quoted string) */
 #define AP_SIG_GRACEFUL_STOP_STRING "SIGWINCH"
+#else
+#define AP__SIG_TOKENIFY_(x, y) x ## y
+#define AP__SIG_TOKENIFY(y) AP__SIG_TOKENIFY_(SIG, y)
+#define AP_SIG_GRACEFUL_STOP \
+    AP__SIG_TOKENIFY(AP_SIG_GRACEFUL_STOP_SHORT)
+#define AP_SIG_GRACEFUL_STOP_STRING \
+    "SIG" APR_STRINGIFY(AP_SIG_GRACEFUL_STOP_SHORT)
+#endif
 
 /**
  * Callback function used for ap_reclaim_child_processes() and

Reply via email to