From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH] gdb command: qemu iohandlers
Date: Thu, 25 Jun 2015 10:08:29 +0100 [thread overview]
Message-ID: <20150625090829.GB2183@work-vm> (raw)
In-Reply-To: <20150625010541.GD17695@ad.nay.redhat.com>
* Fam Zheng (famz@redhat.com) wrote:
> On Wed, 06/24 16:19, Stefan Hajnoczi wrote:
> > On Tue, Jun 23, 2015 at 03:43:53PM +0100, Dr. David Alan Gilbert (git) wrote:
> > > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> > >
> > > Add a gdb command to print the current set of IOHandlers and
> > > if one of them is a thread yielding for data print the backtrace.
> > >
> > > Useful for debugging why an incoming migration has stalled, e.g.
> > >
> > > ----
> > > {fd_read = 0x7fd4c8e40d00 <fd_coroutine_enter>, fd_write = 0x0, opaque =
> > > 0x7fd4b8bfeb00, next = {le_next = 0x7fd4cac81b00, le_prev =
> > > 0x7fd4c93d2bd0 <io_handlers>}, fd = 22, pollfds_idx = 0, deleted =
> > > false}
> > > #0 qemu_coroutine_switch (from_=from_@entry=0x7fd4cbb33c00,
> > > to_=to_@entry=0x7fd4c8b13a90,
> > > action=action@entry=COROUTINE_YIELD) at coroutine-ucontext.c:177
> > > #1 0x00007fd4c8e40507 in qemu_coroutine_yield () at
> > > qemu-coroutine.c:145
> > > #2 0x00007fd4c8e40e75 in yield_until_fd_readable (fd=22) at
> > > qemu-coroutine-io.c:90
> > > #3 0x00007fd4c8df347f in qemu_rdma_block_for_wrid
> > > (rdma=rdma@entry=0x7fd4b8c7e010,
> > > wrid_requested=wrid_requested@entry=2000,
> > > byte_len=byte_len@entry=0x0) at migration/rdma.c:1510
> > > #4 0x00007fd4c8df388f in qemu_rdma_post_send_control
> > > (rdma=rdma@entry=0x7fd4b8c7e010, buf=buf@entry=0x0,
> > > head=head@entry=0x7fd4b8bfed00) at migration/rdma.c:1608
> > > #5 0x00007fd4c8df4b8e in qemu_rdma_exchange_recv (rdma=0x7fd4b8c7e010,
> > > head=0x7fd4b8bfed50, expecting=3)
> > > at migration/rdma.c:1814
> > > #6 0x00007fd4c8df5089 in qemu_rdma_get_buffer (opaque=0x7fd4cba34950,
> > > buf=0x7fd4cc24fd20 "TR\022",
> > > pos=<optimized out>, size=32768) at migration/rdma.c:2611
> > > #7 0x00007fd4c8df000d in qemu_fill_buffer (f=f@entry=0x7fd4cc24fcf0) at
> > > migration/qemu-file.c:214
> > > #8 0x00007fd4c8df08d4 in qemu_peek_byte (f=f@entry=0x7fd4cc24fcf0,
> > > offset=offset@entry=0)
> > > at migration/qemu-file.c:447
> > > #9 0x00007fd4c8c2cad1 in qemu_loadvm_state (f=f@entry=0x7fd4cc24fcf0)
> > > at /root/qemu-world3/migration/savevm.c:1128
> > > #10 0x00007fd4c8ded895 in process_incoming_migration_co
> > > (opaque=0x7fd4cc24fcf0) at migration/migration.c:145
> > > #11 0x00007fd4c8e4112a in coroutine_trampoline (i0=<optimized out>,
> > > i1=<optimized out>) at coroutine-ucontext.c:80
> > > #12 0x00007fd4c453e0f0 in ?? () from /lib64/libc.so.6
> > > #13 0x00007ffee263e870 in ?? ()
> > > #14 0x0000000000000000 in ?? ()
> > > ----
> > > {fd_read = 0x7fd4c8e3ace0 <sigfd_handler>, fd_write = 0x0, opaque = 0x5,
> > > next = {le_next = 0x0, le_prev = 0x7fd4cb78a3d8}, fd = 5, pollfds_idx =
> > > 1, deleted = false}
> > >
> > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > > ---
> > > scripts/qemu-gdb.py | 25 +++++++++++++++++++++++++
> > > 1 file changed, 25 insertions(+)
> > >
> > > diff --git a/scripts/qemu-gdb.py b/scripts/qemu-gdb.py
> > > index 6c7f4fb..2670625 100644
> > > --- a/scripts/qemu-gdb.py
> > > +++ b/scripts/qemu-gdb.py
> > > @@ -102,6 +102,30 @@ class CoroutineCommand(gdb.Command):
> > > coroutine_pointer = gdb.parse_and_eval(argv[0]).cast(gdb.lookup_type('CoroutineUContext').pointer())
> > > bt_jmpbuf(coroutine_pointer['env']['__jmpbuf'])
> > >
> > > +class IOhandlersCommand(gdb.Command):
> > > + '''Display a backtrace for io handlers'''
> > > + def __init__(self):
> > > + gdb.Command.__init__(self, 'qemu iohandlers', gdb.COMMAND_DATA,
> > > + gdb.COMPLETE_NONE)
> > > +
> > > + def invoke(self, arg, from_tty):
> > > + cur = gdb.parse_and_eval('io_handlers.lh_first')
> >
> > Fam is getting rid of io_handlers and replacing it with an AioContext.
> >
>
> Yes, the series is
>
> [PATCH 0/9] slirp: iohandler: Rebase onto aio
OK, I can rework after that goes in.
I guess the equivalent there is to dump the iohandler_ctx->aio_handlers list?
Dave
>
> Fam
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2015-06-25 9:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-23 14:43 [Qemu-devel] [PATCH] gdb command: qemu iohandlers Dr. David Alan Gilbert (git)
2015-06-23 14:54 ` Peter Maydell
2015-06-23 15:02 ` Dr. David Alan Gilbert
2015-06-24 15:19 ` Stefan Hajnoczi
2015-06-25 1:05 ` Fam Zheng
2015-06-25 9:08 ` Dr. David Alan Gilbert [this message]
2015-06-25 10:32 ` Fam Zheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150625090829.GB2183@work-vm \
--to=dgilbert@redhat.com \
--cc=famz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.