qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] Support running QEMU on Valgrind


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] Support running QEMU on Valgrind
Date: Mon, 31 Oct 2011 07:44:18 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Alexander Graf <address@hidden> writes:

> On 30.10.2011, at 15:30, Stefan Weil wrote:
>
>> Am 30.10.2011 14:41, schrieb Alexander Graf:
>>> On 30.10.2011, at 13:07, Stefan Weil wrote:
>>>> Valgrind is a tool which can automatically detect many kinds of bugs.
>>>> 
>>>> Running QEMU on Valgrind with x86_64 hosts was not possible because
>>>> Valgrind aborts when memalign is called with an alignment larger than
>>>> 1 MiB. QEMU normally uses 2 MiB on Linux x86_64.
>>>> 
>>>> Now the alignment is reduced to the page size when QEMU is running on
>>>> Valgrind.
>>>> 
>>>> valgrind.h is a copy from Valgrind svn trunk r12226 with trailing
>>>> whitespace stripped but otherwise unmodified, so it still raises lots
>>>> of errors when checked with scripts/checkpatch.pl.
>>> 
>>> Can't we just require valgrind header files to be around when kvm is 
>>> enabled? I would rather not copy code from other projects. Alternatively 
>>> you could take the header and shrink it down to maybe 5 lines of inline asm 
>>> code that would be a lot more readable :). You're #ifdef'ing on x86_64 
>>> already anyways.
>> 
>> The patch is currently required for x86_64 hosts running Linux.
>> I estimate that this is one of the most frequently used QEMU host platforms,
>> and in most cases, KVM will be configured because this is the default
>> and also because it is reasonable for this platform.
>> 
>> How many of these hosts will have the Valgrind header around?
>> I estimate less than 20 %, so configure would have to test whether
>> valgrind.h is available or not. I think providing valgrind.h is
>> a much better (and simpler) solution.
>
> Hrm. I see your point.
>
>> Stripping valgrind.h is not a good idea: the file is specially designed
>> to be included in other projects like QEMU. As soon as the 2 MiB alignment
>> is used for other hosts (ppc64, ...), you would have to take more and more
>> from the original code. The file was not designed to be readable.
>> Although it contains lots of comments which improve readability,
>> there remains code which is less easy to read. I cite one of those
>> comments:
>> 
>> /* The following defines the magic code sequences which the JITter
>>   spots and handles magically.  Don't look too closely at them as
>>   they will rot your brain.
>> 
>> Instead of rotting my brain, I prefer using a copy of the original code.

Yes, copies are evil.

> Could we maybe use a git submodule to point to the valgrind repo and fetch it 
> from there?

Anyone sophisticated enough to make use of valgrind should be able to
install valgrind.h just fine.  It's not rocket science:

# yum provides \*/valgrind.h
[...]
# yum install valgrind-devel

[...]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]