Sandino Araico Sanchez wrote:
[EMAIL PROTECTED] root] gdb --pid=361
<snip gdb preamble
(gdb) continue
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x400b90f0 in malloc_consolidate () from /lib/libc.so.6
(gdb) bt
#0 0x400b90f0 in malloc_consolidate () from /lib/libc.so.6
#1 0x400b898e in _int_malloc () from /lib/libc.so.6
#2 0x400b7bc1 in malloc () from /lib/libc.so.6
#3 0x400ada81 in open_memstream () from /lib/libc.so.6
#4 0x40116d92 in vsyslog () from /lib/libc.so.6
#5 0x0804c81a in trace (level=5,
formatstring=0x807119a "%s,%s: executing query [%s]") at debug.c:93
#6 0x080681ab in db_query (
the_query=0x80799c0 "SELECT no_select FROM mailboxes WHERE mailbox_idnr = '1'") at dbpgsql.c:217
#7 0x080635f1 in db_isselectable (mailbox_idnr=0) at db.c:2476
#8 0x08054da1 in _ic_list (tag=0xbfffc640 "5", args=0x807a2a0, ci=0x8079dc0)
at imapcommands.c:1300
#9 0x0804c287 in IMAPClientHandler (ci=0x8079dc0) at imap4.c:342
#10 0x0804bbcd in PerformChildTask (info=0xbfffeee0) at serverchild.c:341
#11 0x0804b8cf in CreateChild (info=0x0) at serverchild.c:232
#12 0x0804b1ad in StartServer (conf=0xbfffef50) at server.c:141
#13 0x0805d986 in main (argc=1, argv=0x0) at imapd.c:128
(gdb)

This seems to suggest a bug in the trace() function in debug.c
Problem is.. I can't seem to find what's wrong. For clarity, I'll print the function below. Can anybody find anything that's wrong?

void trace (int level, char *formatstring, ...)
{
  va_list argp;

  va_start(argp, formatstring);

  if (level <= TRACE_LEVEL)
    {
      if (TRACE_VERBOSE != 0)
      {
        vfprintf (err_out_stream, formatstring, argp);
        if (formatstring[strlen(formatstring)]!='\n')
          fprintf (err_out_stream,"\n");
      }
      if (TRACE_TO_SYSLOG != 0)
        {
          if (formatstring[strlen(formatstring)]=='\n')
            formatstring[strlen(formatstring)]='\0';
          if (level <= TRACE_WARNING)
            {
              /* set LOG_ALERT at warnings */
              vsyslog (LOG_ALERT, formatstring, argp);
            }
          else
            vsyslog (LOG_NOTICE, formatstring, argp);
        }
      va_end(argp);
    }

  /* very big fatal error
   * bailout */

  if (level == TRACE_FATAL)
    exit(EXIT_CODE);

  if (level == TRACE_STOP)
    exit(EXIT_CODE);
}

Currently, I'm a bit lost here..

Sandino, could you try recompiling with TRACE_TO_SYSLOG (in debug.c) set to 0 (zero), and running again. Maybe there's an error earlier in the code, which will show up in a different place when not tracing to syslog.

BTW, I'm also sending this to dbmail-dev

Ilja


--
IC&S
Stadhouderslaan 57
3583 JD Utrecht

PGP-key:
http://www.ic-s.nl/keys/ilja.txt

Reply via email to