[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