[Dovecot] stale imap processes with 1.0.rc6 on FreeBSD

Jeremy C. Reed reed at reedmedia.net
Fri Aug 11 03:53:29 EEST 2006


> So it's at least not in some infinite loop. What about ktrace, does it
> show anything else than kevents?

When I did ktrace -p on pids before the kdump was empty.

I am checking again ... still nothing.

> Also, what do these commands say after attaching to gdb:
> 
> p *my_client
> p *(struct file_istream *)my_client.input.real_stream
> p *(struct file_ostream *)my_client.output.real_stream

(gdb) p *my_client
$1 = {fd_in = 0, fd_out = 1, io = 0x80ca0a0, input = 0x80d9424, 
  output = 0x80da0b0, namespaces = 0x80d7440, mailbox = 0x80d7840, 
keywords = {
    pool = 0x80d4810, keywords = {buffer = 0x0, element_size = 0}}, 
  select_counter = 1, messages_count = 1238, recent_count = 1, 
  last_input = 1155240486, last_output = 1155240432, bad_counter = 0, 
  parser = 0x80d6040, cmd = {client = 0x80da000, pool = 0x80dd010, tag = 
0x0, 
    name = 0x0, func = 0, context = 0x0, uid = 0, param_error = 0}, 
  disconnected = 0, destroyed = 0, command_pending = 0, input_pending = 0, 
  output_pending = 0, rawlog = 0, input_skip_line = 0}

(gdb) p *(struct file_istream *)my_client.input.real_stream
$2 = {istream = {iostream = {pool = 0x80c83a0, refcount = 1, 
      close = 0x80a7430 <_close>, destroy = 0x80a7474 <_destroy>, 
      set_max_buffer_size = 0x80a7498 <_set_max_buffer_size>}, 
    read = 0x80a755c <_read>, seek = 0x80a77a0 <_seek>, 
    sync = 0x80a7808 <_sync>, stat = 0x80a78a8 <_stat>, istream = {
      v_offset = 617, stream_errno = 0, mmaped = 0, closed = 0, seekable = 
0, 
      eof = 0, real_stream = 0x80d9400}, fd = 0, 
    buffer = 0x80df000 "wb7m IDLE", w_buffer = 0x80df000 "wb7m IDLE", 
    line_str = 0x0, buffer_size = 4096, abs_start_offset = 0, statbuf = {
      st_dev = 0, st_ino = 0, st_mode = 0, st_nlink = 0, st_uid = 0, 
      st_gid = 0, st_rdev = 0, st_atimespec = {tv_sec = 1155240085, 
        tv_nsec = 0}, st_mtimespec = {tv_sec = 1155240085, tv_nsec = 0}, 
      st_ctimespec = {tv_sec = 1155240085, tv_nsec = 0}, st_size = -1, 
      st_blocks = 0, st_blksize = 0, st_flags = 0, st_gen = 0, st_lspare = 
0, 
      st_qspare = {0, 0}}, skip = 617, pos = 617}, fstat_cache_stamp = {
    tv_sec = 0, tv_usec = 0}, max_buffer_size = 65536, skip_left = 0, 
  file = 0, autoclose_fd = 0}
(gdb) *I pressed enter here I think*
$3 = {istream = {iostream = {pool = 0x80c83a0, refcount = 1, 
      close = 0x80a7430 <_close>, destroy = 0x80a7474 <_destroy>, 
      set_max_buffer_size = 0x80a7498 <_set_max_buffer_size>}, 
    read = 0x80a755c <_read>, seek = 0x80a77a0 <_seek>, 
    sync = 0x80a7808 <_sync>, stat = 0x80a78a8 <_stat>, istream = {
      v_offset = 617, stream_errno = 0, mmaped = 0, closed = 0, seekable = 
0, 
      eof = 0, real_stream = 0x80d9400}, fd = 0, 
    buffer = 0x80df000 "wb7m IDLE", w_buffer = 0x80df000 "wb7m IDLE", 
    line_str = 0x0, buffer_size = 4096, abs_start_offset = 0, statbuf = {
      st_dev = 0, st_ino = 0, st_mode = 0, st_nlink = 0, st_uid = 0, 
      st_gid = 0, st_rdev = 0, st_atimespec = {tv_sec = 1155240085, 
        tv_nsec = 0}, st_mtimespec = {tv_sec = 1155240085, tv_nsec = 0}, 
      st_ctimespec = {tv_sec = 1155240085, tv_nsec = 0}, st_size = -1, 
      st_blocks = 0, st_blksize = 0, st_flags = 0, st_gen = 0, st_lspare = 
0, 
      st_qspare = {0, 0}}, skip = 617, pos = 617}, fstat_cache_stamp = {
    tv_sec = 0, tv_usec = 0}, max_buffer_size = 65536, skip_left = 0, 
  file = 0, autoclose_fd = 0}


(gdb) p *(struct file_ostream *)my_client.output.real_stream
$4 = {ostream = {iostream = {pool = 0x80c83a0, refcount = 1, 
      close = 0x80ac744 <_close>, destroy = 0x80ac768 <_destroy>, 
      set_max_buffer_size = 0x80ac78c <_set_max_buffer_size>}, 
    cork = 0x80aca00 <_cork>, flush = 0x80acaa4 <_flush>, 
    flush_pending = 0x80acab8 <_flush_pending>, 
    get_used_size = 0x80acb38 <_get_used_size>, seek = 0x80acb58 <_seek>, 
    sendv = 0x80ace00 <_sendv>, send_istream = 0x80ad4c0 <_send_istream>, 
    ostream = {offset = 55033, stream_errno = 0, overflow = 0, closed = 0, 
      real_stream = 0x80da080}, callback = 0x805a1fc <_client_output>, 
    context = 0x80da000}, fd = 1, io = 0x0, 
  buffer = 0x80e0000 "2yi2 OK Idle completed.\r\n\r\nS (\\Seen) 
INTERNALDATE \"10-Aug-2006 12:40:01 -0700\" BODY[] {2437}\r\nReturn-Path: 
<reed at reedmedia.net>\r\nX-Original-To: 
AAAAAAA at AAAAAAA.AAA.AAAAAAAAAAA.com\r\nDelivered-To: AAAA"..., 
buffer_size = 4096, max_buffer_size = 4294967295, optimal_block_size = 
4096, 
  head = 0, tail = 0, full = 0, file = 0, corked = 0, flush_pending = 0, 
  no_socket_cork = 1, no_sendfile = 0, autoclose_fd = 0}


> And if I understood correctly, the same hangs happened even if you
> didn't use --with-ioloop parameter at all, ie. it used poll?

Yes, it hung -- had many stale imap processes. My configure output said it 
was "poll".

Thanks for your help.

I may have time later on IRC, but I don't use it often.


More information about the dovecot mailing list