Hi,

After more testing I confirmed that the Java VM that executes my cyrus init
script blocks the SIGQUIT signal.

The following patch ensures all signals are unblocked before trying to set
signal handlers. It fixes the problem in a clean way as it seems to be a
good practice to ensure signals are not blocked before setting signal
handlers.

diff --git a/master/master.c b/master/master.c
index 823be06..f2ca72e 100644
--- a/master/master.c
+++ b/master/master.c
@@ -1064,7 +1064,11 @@ void sigalrm_handler(int sig __attribute__((unused)))
 void sighandler_setup(void)
 {
     struct sigaction action;
-
+    sigset_t all_signals;
+
+    sigfillset(&all_signals);
+    sigprocmask(SIG_UNBLOCK, &all_signals, NULL);
+
     sigemptyset(&action.sa_mask);
     action.sa_flags = 0;

Regards,
Thomas.

On Sun, Oct 9, 2011 at 7:39 PM, Thomas Cataldo <[email protected]> wrote:

> Hi,
>
> Thanks for all your infos. Your objections regarding my patch had me
> looking into how I run the script.
>
> I run the script from a Java VM. Understanding that you don't have the
> problem, I played with the "-Xrs" of the JVM that prevents it from
> interfering with sigquit... without any luck.
>
> Any idea how I can get a better insight at my problem ?
>
>

Attachment: unblock_signals.diff
Description: Binary data

_______________________________________________
Pkg-Cyrus-imapd-Debian-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-cyrus-imapd-debian-devel

Reply via email to