[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Problem about dump-core



Hi, everyone:

The command 'xl dump-core' will fail after migration. The guest is HVM 
guest(without pv driver).
I use the newest staging branch to test. Both source and dest dom0 use the same 
kernel.

I use gdb to run 'xl dump-core' on dest dom0::
# gdb --args xl dump-core 1 vmcore
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/sbin/xl...done.
(gdb) b main
Breakpoint 1 at 0x406ad8: file xl.c, line 298.
(gdb) b xc_core.c:482
No source file named xc_core.c.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) r
Starting program: /usr/sbin/xl dump-core 1 vmcore
[Thread debugging using libthread_db enabled]

Breakpoint 1, main (argc=4, argv=0x7fffffffe3d8) at xl.c:298
298         void *config_data = 0;
Missing separate debuginfos, use: debuginfo-install 
bzip2-libs-1.0.5-7.el6_0.x86_64 glibc-2.12-1.80.el6.x86_64 
libuuid-2.17.2-12.7.el6.x86_64 yajl-1.0.7-3.el6.x86_64 zlib-1.2.3-27.el6.x86_64
(gdb) b xc_core.c:482
Breakpoint 2 at 0x7ffff794559d: file xc_core.c, line 482.
(gdb) c
Continuing.

Breakpoint 2, xc_domain_dumpcore_via_callback (xch=0x6262d0, domid=1, 
args=0x7fffffffe140, dump_rtn=0x7ffff79450c0 <local_file_dump>) at xc_core.c:482
482         live_shinfo = xc_map_foreign_range(xch, domid, PAGE_SIZE,
(gdb) p live_shinfo 
$1 = (shared_info_any_t *) 0x0
(gdb) n
484         if ( !live_shinfo && !info.hvm )
(gdb) p live_shinfo 
$2 = (shared_info_any_t *) 0x7ffff7ffb000
(gdb) p *live_shinfo 
Cannot access memory at address 0x7ffff7ffb000                  
<==================== We cannot access live_shinfo
(gdb) b 763
Breakpoint 3 at 0x7ffff7946588: file xc_core.c, line 763.
(gdb) c
Continuing.

Breakpoint 3, xc_domain_dumpcore_via_callback (xch=0x6262d0, domid=1, 
args=0x7fffffffe140, dump_rtn=0x7ffff79450c0 <local_file_dump>) at xc_core.c:763
763             sts = dump_rtn(xch, args, (char*)live_shinfo, PAGE_SIZE);
(gdb) s
local_file_dump (xch=0x6262d0, args=0x7fffffffe140, buffer=0x7ffff7ffb000 
<Address 0x7ffff7ffb000 out of bounds>, length=4096) at xc_core.c:931
931         if ( write_exact(da->fd, buffer, length) == -1 )
(gdb) s
write_exact (fd=14, data=0x7ffff7ffb000, size=4096) at xc_private.c:848
848         while ( offset < size )
(gdb) n
850             len = write(fd, (const char *)data + offset, size - offset);    
  <=============== We write live_shinfo to the core file, and fail
(gdb) p data
$3 = (const void *) 0x7ffff7ffb000
(gdb) p *data
Attempt to dereference a generic pointer.
(gdb) n
851             if ( (len == -1) && (errno == EINTR) )
(gdb) p len
$4 = -1
(gdb) p errno
$5 = 14
(gdb) 

I try it on source dom0:
gdb --args xl dump-core 1 vmcore 
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/sbin/xl...done.
(gdb) b main
Breakpoint 1 at 0x406ad8: file xl.c, line 298.
(gdb) r
Starting program: /usr/sbin/xl dump-core 1 vmcore
[Thread debugging using libthread_db enabled]

Breakpoint 1, main (argc=4, argv=0x7fffffffe438) at xl.c:298
298         void *config_data = 0;
Missing separate debuginfos, use: debuginfo-install 
bzip2-libs-1.0.5-7.el6_0.x86_64 glibc-2.12-1.80.el6.x86_64 
libuuid-2.17.2-12.7.el6.x86_64 yajl-1.0.7-3.el6.x86_64 zlib-1.2.3-27.el6.x86_64
(gdb) b xc_core.c:482
Breakpoint 2 at 0x7ffff794459d: file xc_core.c, line 482.
(gdb) c
Continuing.

Breakpoint 2, xc_domain_dumpcore_via_callback (xch=0x6262d0, domid=1, 
args=0x7fffffffe1a0, dump_rtn=0x7ffff79440c0 <local_file_dump>) at xc_core.c:482
482         live_shinfo = xc_map_foreign_range(xch, domid, PAGE_SIZE,
(gdb) p live_shinfo 
$1 = (shared_info_any_t *) 0x0
(gdb) n
484         if ( !live_shinfo && !info.hvm )
(gdb) p live_shinfo 
$2 = (shared_info_any_t *) 0x7ffff7ffb000
(gdb) p *live_shinfo 
Cannot access memory at address 0x7ffff7ffb000            <======== We also 
cannot access live_shinfo
(gdb) b 763
Breakpoint 4 at 0x7ffff7945588: file xc_core.c, line 763.
(gdb) c
Continuing.

Breakpoint 4, xc_domain_dumpcore_via_callback (xch=0x6262d0, domid=1, 
args=0x7fffffffe1a0, dump_rtn=0x7ffff79440c0 <local_file_dump>) at xc_core.c:763
763             sts = dump_rtn(xch, args, (char*)live_shinfo, PAGE_SIZE);
(gdb) s
local_file_dump (xch=0x6262d0, args=0x7fffffffe1a0, buffer=0x7ffff7ffb000 
<Address 0x7ffff7ffb000 out of bounds>, length=4096) at xc_core.c:931
931         if ( write_exact(da->fd, buffer, length) == -1 )
(gdb) p buffer
$3 = 0x7ffff7ffb000 <Address 0x7ffff7ffb000 out of bounds>
(gdb) p *buffer
Cannot access memory at address 0x7ffff7ffb000
(gdb) n
937         if ( length >= (DUMP_INCREMENT * PAGE_SIZE) )            <===== But 
we can write live_shinfo to corefile. Why???

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.