grrr. /home/mrm $ gdb /usr/local/bin/doveadm GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "amd64-marcel-freebsd"... (gdb) run -D -vvvvvv index * Starting program: /usr/local/bin/doveadm -D -vvvvvv index * Program received signal SIGTRAP, Trace/breakpoint trap. Cannot remove breakpoints because program is no longer writable. It might be running in another process. Further execution is probably impossible. 0x0000000800624490 in ?? () (gdb) Ideas? On Sun, Oct 23, 2016 at 11:14 AM, Aki Tuomi <aki.tuomi at dovecot.fi> wrote:> Hi, > > can you run doveadm in gdb, wait for it to crash, and then go to frame 6 ( > io_loop_handler_run_internal) and run > > p errno > p ret > p *ioloop > p *ctx > p *events > > Sorry but the crash doesn't make enough sense yet to me, we need to > determine what the invalid parameter is. > > > Larry Rosenman http://www.lerctr.org/~ler > > Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com > > US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281 >-- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281
ok, gdb7 works: (gdb) fr 6 #6 0x00000008011a3e49 in io_loop_handler_run_internal (ioloop=0x801c214e0) at ioloop-kqueue.c:131 131 i_panic("kevent(): %m"); (gdb) p errno $1 = 22 (gdb) p ret $2 = -1 (gdb) p *ioloop $3 = {prev = 0x801c21080, cur_ctx = 0x0, io_files = 0x801c4f980, next_io_file = 0x0, timeouts = 0x801c19e60, timeouts_new = {arr = {buffer 0x801c5ac80, element_size = 8}, v = 0x801c5ac80, v_modifiable = 0x801c5ac80}, handler_context = 0x801c19e80, notify_handler_context = 0x0, max_fd_count = 0, time_moved_callback 0x800d53bb0 <mail_storage_service_time_moved>, next_max_time = 1477240784, ioloop_wait_usecs = 29863, io_pending_count 1, running = 1, iolooping = 1} (gdb) p *ctx $4 = {kq = 22, deleted_count = 0, events = {arr = {buffer = 0x801c5acc0, element_size = 32}, v = 0x801c5acc0, v_modifiable = 0x801c5acc0}} (gdb) p *events $5 = {ident = 23, filter = -1, flags = 0, fflags = 0, data = 8, udata 0x801c4f980} (gdb) On Sun, Oct 23, 2016 at 11:27 AM, Larry Rosenman <larryrtx at gmail.com> wrote:> grrr. > > /home/mrm $ gdb /usr/local/bin/doveadm > GNU gdb 6.1.1 [FreeBSD] > Copyright 2004 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you > are > welcome to change it and/or distribute copies of it under certain > conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "amd64-marcel-freebsd"... > (gdb) run -D -vvvvvv index * > Starting program: /usr/local/bin/doveadm -D -vvvvvv index * > > Program received signal SIGTRAP, Trace/breakpoint trap. > Cannot remove breakpoints because program is no longer writable. > It might be running in another process. > Further execution is probably impossible. > 0x0000000800624490 in ?? () > (gdb) > > Ideas? > > > On Sun, Oct 23, 2016 at 11:14 AM, Aki Tuomi <aki.tuomi at dovecot.fi> wrote: > >> Hi, >> >> can you run doveadm in gdb, wait for it to crash, and then go to frame 6 >> ( io_loop_handler_run_internal) and run >> >> p errno >> p ret >> p *ioloop >> p *ctx >> p *events >> >> Sorry but the crash doesn't make enough sense yet to me, we need to >> determine what the invalid parameter is. >> >> > Larry Rosenman http://www.lerctr.org/~ler >> > Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com >> > US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281 >> > > > > -- > Larry Rosenman http://www.lerctr.org/~ler > Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com > US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281 >-- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281
According to man page, the only way it can return EINVAL (22) is either bad filter, or bad timeout. I can't see how the filter would be bad, so I'm guessing ts must be bad. Unfortunately I forgot to ask for it, so I am going to have to ask you run it again and run p ts if that's valid, then the only thing that can be bad if the file descriptor 23. Aki> On October 23, 2016 at 7:42 PM Larry Rosenman <larryrtx at gmail.com> wrote: > > > ok, gdb7 works: > (gdb) fr 6 > #6 0x00000008011a3e49 in io_loop_handler_run_internal (ioloop=0x801c214e0) > at ioloop-kqueue.c:131 > 131 i_panic("kevent(): %m"); > (gdb) p errno > $1 = 22 > (gdb) p ret > $2 = -1 > (gdb) p *ioloop > $3 = {prev = 0x801c21080, cur_ctx = 0x0, io_files = 0x801c4f980, > next_io_file = 0x0, timeouts = 0x801c19e60, timeouts_new = {arr = {buffer > 0x801c5ac80, element_size = 8}, v = 0x801c5ac80, > v_modifiable = 0x801c5ac80}, handler_context = 0x801c19e80, > notify_handler_context = 0x0, max_fd_count = 0, time_moved_callback > 0x800d53bb0 <mail_storage_service_time_moved>, > next_max_time = 1477240784, ioloop_wait_usecs = 29863, io_pending_count > 1, running = 1, iolooping = 1} > (gdb) p *ctx > $4 = {kq = 22, deleted_count = 0, events = {arr = {buffer = 0x801c5acc0, > element_size = 32}, v = 0x801c5acc0, v_modifiable = 0x801c5acc0}} > (gdb) p *events > $5 = {ident = 23, filter = -1, flags = 0, fflags = 0, data = 8, udata > 0x801c4f980} > (gdb) > > > > On Sun, Oct 23, 2016 at 11:27 AM, Larry Rosenman <larryrtx at gmail.com> wrote: > > > grrr. > > > > /home/mrm $ gdb /usr/local/bin/doveadm > > GNU gdb 6.1.1 [FreeBSD] > > Copyright 2004 Free Software Foundation, Inc. > > GDB is free software, covered by the GNU General Public License, and you > > are > > welcome to change it and/or distribute copies of it under certain > > conditions. > > Type "show copying" to see the conditions. > > There is absolutely no warranty for GDB. Type "show warranty" for details. > > This GDB was configured as "amd64-marcel-freebsd"... > > (gdb) run -D -vvvvvv index * > > Starting program: /usr/local/bin/doveadm -D -vvvvvv index * > > > > Program received signal SIGTRAP, Trace/breakpoint trap. > > Cannot remove breakpoints because program is no longer writable. > > It might be running in another process. > > Further execution is probably impossible. > > 0x0000000800624490 in ?? () > > (gdb) > > > > Ideas? > > > > > > On Sun, Oct 23, 2016 at 11:14 AM, Aki Tuomi <aki.tuomi at dovecot.fi> wrote: > > > >> Hi, > >> > >> can you run doveadm in gdb, wait for it to crash, and then go to frame 6 > >> ( io_loop_handler_run_internal) and run > >> > >> p errno > >> p ret > >> p *ioloop > >> p *ctx > >> p *events > >> > >> Sorry but the crash doesn't make enough sense yet to me, we need to > >> determine what the invalid parameter is. > >> > >> > Larry Rosenman http://www.lerctr.org/~ler > >> > Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com > >> > US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281 > >> > > > > > > > > -- > > Larry Rosenman http://www.lerctr.org/~ler > > Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com > > US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281 > > > > > > -- > Larry Rosenman http://www.lerctr.org/~ler > Phone: +1 214-642-9640 (c) E-Mail: larryrtx at gmail.com > US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281