On Fri, Jan 17, 2003 at 01:46:16PM +0000, Philip Hazel wrote:
> On Fri, 17 Jan 2003 Danny.Carroll@??? wrote:
>
> > > When Exim starts up as a daemon with a -q setting, it should
> > > always do a
> > > queue run right at the start.
> >
> > I figured that, but it just doesnt.... And it will not log why.
> > But if i do it with -d then it *does* and logs it too....
>
> Sounds like it's sledgehammer time.
>
> Look at the source file daemon.c. The daemon-running code is between
> lines 1104 and 1183 in Exim 4.12.
>
> You will have to stuff in some debugging code to try to track what is
> goind on. Of course, you can't use the normal debugging output, because
> you don't want to use -d. You have to use some expensive code like this:
>
> {
> FILE *f = fopen("/some/writeable/file", "a");
> fprintf(f, "reached this point: data =....\n");
> fclose(f);
> }
>
> If you put that in in several places (with appropriate texts, and
> printing the values of approprate variables) it should be possible to
> trace what is going on, and perhaps why it isn't starting the queue
> runner. In particular, check that it gets to line 1146, which contains:
>
> (void)child_exec_exim(CEE_EXEC_PANIC, FALSE, NULL, TRUE, 1, opt);
>
> That is the point at which it tries to run the queue runner. The actual
> exec itself is in line 146 of the child.c source. However, if that
> fails, something should be logged.
I inserted this code into daemon.c:
------
/* This code is placed first in the loop, so that it gets obeyed at
the start, before the first wait. This causes the first queue-runner
to be started immediately. */
if (daemon_sigalrm_seen)
{
{
FILE *f = fopen("/var/log/exim/queuelog","a");
fprintf(f, "Reached this point: daemon_sigalarm_seen\n");
fclose(f);
}
------
and here:
------
/* No need to re-exec */
queue_run(NULL, NULL, FALSE);
{
FILE *f =
fopen("/var/log/exim/queuelog","a");
fprintf(f, "Reached this point: queue_run(NULL, NULL, FALSE)\n");
fclose(f);
}
_exit(EXIT_SUCCESS);
------ }
/var/log/exim/queuelog contains:
Reached this point: daemon_sigalarm_seen
Reached this point: daemon_sigalarm_seen
So, the second checkpoint wasn't reached. If you need to print out some
variables, let me know which ones.
I saw also that when I ran the queue manually with exim -v -qqff, the
second checkpoint was not reached too. Bad place for this?
Regards,
--
Igor A. Karpov phone: +380(44)238-0624
Unix System Administrator
How come you can send sounds using MIME?