Re: [Exim] local_scan

Top Page
Delete this message
Reply to this message
Author: Adrian Bool
Date:  
To: Exim List
Subject: Re: [Exim] local_scan

Hi Phil,

On Wed, 19 Mar 2003, Philip Hazel wrote:
> On Tue, 18 Mar 2003, Adrian Bool wrote:
>
> > Can't ignore signal CHLD, forcing to default.
>
> Which operating system? Exim sets SIGCHLD to SIG_IGN in plenty of
> places, and nobody has ever reported a complaint of that kind before.
> Ignoring SIGCHLD is the standard thing to do when you want to spin off
> a new process and not have anything more do do with it.


Mandrake Linux 9.0. I did manage to stop the problem late last night by
inserting a signal(SIGCHLD, SIG_DFL) in exim-4.14, receive.c:2421,

/* child_signal = signal(SIGCHLD, SIG_DFL); */ /* AID */

  DEBUG(D_receive) debug_printf("calling local_scan(); timeout=%d\n",
    local_scan_timeout);
  local_scan_data = NULL;
  if (local_scan_timeout > 0)
    {
    os_non_restarting_signal(SIGALRM, local_scan_timeout_handler);
    alarm(local_scan_timeout);
    }
  rc = local_scan(data_fd, &local_scan_data);
  alarm(0);
  store_pool = POOL_MAIN;   /* In case changed */
  DEBUG(D_receive) debug_printf("local_scan() returned %d %s\n", rc,
    local_scan_data);


/* os_non_restarting_signal(SIGSEGV, child_signal); */ /* AID */

(the /* AID */ lines!)

I've remarked them out for now and am reworking my code to use your
child_open and child_close functions - which already seem to have SIGCHLD
covered. Is that a bit dodgy though as they are not part of the
'local_scan' API?

I will hopefully know if that works without either SIG probelms or
alterting exim's code at all in a short while...

Regards,

aid




--
Adrian Bool            | http://noc.vianw.net/
Director, Global Core Network    | tel://+44.1925.484061/
VIA NET.WORKS Inc.         | noc://+49.203.3093.1111/