public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: lidong chen <chen.lidong.kernel@gmail.com>
Cc: kvm@vger.kernel.org
Subject: Re: collect some information when qemu-kvm exit
Date: Fri, 24 Jun 2011 10:55:17 +0200	[thread overview]
Message-ID: <4E0450F5.80809@siemens.com> (raw)
In-Reply-To: <BANLkTinj1dzyypKsp4DA+0xUaVwO86qeWw@mail.gmail.com>

On 2011-06-24 10:24, lidong chen wrote:
> 2011/6/23 Jan Kiszka <jan.kiszka@web.de>:
>> On 2011-06-23 15:56, lidong chen wrote:
>>>>> is it safe to register another signal handler?
>>>>> if somebody know the reason, please tell me.
>>>>>
>>>>> and is it worth to do this?
>>>>
>>> because the core dump file is too big, and the time of core dump is too long.
>>> I do a test, for a guest which have 9.7G memory, the coredump file is
>>> 9.7G, and the time of core dump is 1 minute.
>>>
>>> for the compute node in my system, there are a lot of  cpu and memory
>>> resource, but no disk.
>>>
>>>
>>> total 4.5G
>>> -rw------- 1 root root 9.7G Jun 23 21:31 core-qemu-kvm-24090-1308835893
>>> -rw------- 1 root root 3.9G Jun 23 21:34 core-qemu-kvm-24098-1308835996
>>
>> ulimit -c allows you to restrict the core file size so that it fits on
>> your ram disk. That will at least collect enough information to do a
>> proper post-mortem backtrace in gdb, including register states. It also
>> allows to inspect variables on the stacks and the heap. No need to add a
>> singe line or code to qemu for this.
>>
> 
> if i use 'ulimit -c 6000' to restrict the core file, the backtrace
> can't work correctly.

I've granted a few hundred megs, and it worked for me.

> 
> 26:/corefile # gdb /usr/bin/qemu-kvm core-qemu-kvm-9979-1308888098
> GNU gdb (GDB) SUSE (7.0-0.4.16)
> Copyright (C) 2009 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-suse-linux".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /usr/bin/qemu-kvm...done.
> BFD: Warning: /corefile/core-qemu-kvm-9979-1308888098 is truncated:
> expected core file size >= 10583695360, found: 10051584.
> [New Thread 9981]
> [New Thread 9980]
> Cannot access memory at address 0x7fb26cac1108
> (gdb) backtrace
> Cannot access memory at address 0x7fff489c03b0
> 
> if i use 'ulimit -c unlimited', it work correctly.
> Core was generated by `qemu-kvm -hda
> /var/lib/libvirt/images/sles11-4.img -boot dc -m 9999 -vnc *:0 -k'.
> Program terminated with signal 11, Segmentation fault.
> #0  0x00007f6ba768cb93 in select () from /lib64/libc.so.6
> (gdb) bt
> #0  0x00007f6ba768cb93 in select () from /lib64/libc.so.6
> #1  0x0000000000431b8a in main_loop_wait (timeout=1000)
>     at /usr/src/packages/BUILD_chen/qemu-kvm-0.12.5/vl.c:4006
> #2  0x0000000000455a50 in kvm_main_loop ()
>     at /usr/src/packages/BUILD_chen/qemu-kvm-0.12.5/qemu-kvm.c:2129
> #3  0x00000000004322bc in main_loop () at
> /usr/src/packages/BUILD_chen/qemu-kvm-0.12.5/vl.c:4231
> #4  0x0000000000435fb3 in main (argc=11, argv=0x7fffadc777d8,
> envp=0x7fffadc77838)
>     at /usr/src/packages/BUILD_chen/qemu-kvm-0.12.5/vl.c:6356
> (gdb)
> 
> I google how could gdb handle truncated core files,
> http://sourceware.org/ml/gdb/2008-08/msg00276.html
> 
> there are two potential way to support gdb handle truncated core files:
> 1.modify the code of linux kernel, to support for prioritisation of
> what is dumped.

What we basically need to avoid playing with ulimit is a way to tell the
kernel "do not dump this region", and apply that on the guest memory at
least.

> 2.used coredumper,  http://code.google.com/p/google-coredumper/
> 
> i read the code of function elf_core_dump in linux kernel, it write
> each vma in sequence.

...optionally prioritized by size - or that way. Though we wouldn't need
it given a proper kernel interface. Don't know why such thing does not
exist yet.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

  reply	other threads:[~2011-06-24  8:55 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-22 12:27 collect some information when qemu-kvm exit lidong chen
2011-06-23  9:05 ` lidong chen
2011-06-23 10:13   ` Jan Kiszka
2011-06-23 13:56     ` lidong chen
2011-06-23 14:51       ` Jan Kiszka
2011-06-24  8:24         ` lidong chen
2011-06-24  8:55           ` Jan Kiszka [this message]
2011-06-24  8:58             ` Jan Kiszka
2011-06-24 13:26               ` lidong chen
2011-07-02 11:22                 ` lidong chen
2011-07-07  1:20                   ` lidong chen

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=4E0450F5.80809@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=chen.lidong.kernel@gmail.com \
    --cc=kvm@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox