* [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
@ 2013-05-17 8:52 Stefan Hajnoczi
2013-05-17 9:54 ` Markus Armbruster
0 siblings, 1 reply; 10+ messages in thread
From: Stefan Hajnoczi @ 2013-05-17 8:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Lucas Meneghel Rodrigues, Stefan Hajnoczi
glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
variable is set. The value of the environment variable determines the
bit pattern used to wipe memory. For more information, see
http://udrepper.livejournal.com/11429.html.
Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
the environment variable to 1 so the test is deterministic. Setting a
random variable might expose more bugs but would be harder to reproduce.
Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
it for in-tree test suites we can detect memory management errors earlier.
tests/Makefile | 4 +++-
tests/qemu-iotests/check | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/Makefile b/tests/Makefile
index a307d5a..25f6d28 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
+ MALLOC_PERTURB_=1 \
gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
$(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
echo Gcov report for $$f:;\
@@ -180,7 +181,8 @@ $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
.PHONY: $(patsubst %, check-%, $(check-unit-y))
$(patsubst %, check-%, $(check-unit-y)): check-%: %
$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
- $(call quiet-command,gtester $(GTESTER_OPTIONS) -m=$(SPEED) $*,"GTESTER $*")
+ $(call quiet-command,MALLOC_PERTURB_=1 \
+ gtester $(GTESTER_OPTIONS) -m=$(SPEED) $*,"GTESTER $*")
$(if $(CONFIG_GCOV),@for f in $(gcov-files-$(subst tests/,,$*)-y); do \
echo Gcov report for $$f:;\
$(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index 432732c..1527cda 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -214,7 +214,7 @@ do
start=`_wallclock`
$timestamp && echo -n " ["`date "+%T"`"]"
[ ! -x $seq ] && chmod u+x $seq # ensure we can run it
- ./$seq >$tmp.out 2>&1
+ MALLOC_PERTURB_=1 ./$seq >$tmp.out 2>&1
sts=$?
$timestamp && _timestamp
stop=`_wallclock`
--
1.8.1.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 8:52 [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs Stefan Hajnoczi
@ 2013-05-17 9:54 ` Markus Armbruster
2013-05-17 10:07 ` Daniel P. Berrange
2013-05-17 11:15 ` Stefan Hajnoczi
0 siblings, 2 replies; 10+ messages in thread
From: Markus Armbruster @ 2013-05-17 9:54 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: Lucas Meneghel Rodrigues, qemu-devel
Stefan Hajnoczi <stefanha@redhat.com> writes:
> glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
> variable is set. The value of the environment variable determines the
> bit pattern used to wipe memory. For more information, see
> http://udrepper.livejournal.com/11429.html.
>
> Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
> the environment variable to 1 so the test is deterministic. Setting a
> random variable might expose more bugs but would be harder to reproduce.
>
> Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
> Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
> it for in-tree test suites we can detect memory management errors earlier.
>
> tests/Makefile | 4 +++-
> tests/qemu-iotests/check | 2 +-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tests/Makefile b/tests/Makefile
> index a307d5a..25f6d28 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
> $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
> $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
> $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
> + MALLOC_PERTURB_=1 \
> gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
> $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
> echo Gcov report for $$f:;\
If you want punishment, why not go for extra punishment?
MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
[...]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 9:54 ` Markus Armbruster
@ 2013-05-17 10:07 ` Daniel P. Berrange
2013-05-17 10:58 ` Markus Armbruster
` (3 more replies)
2013-05-17 11:15 ` Stefan Hajnoczi
1 sibling, 4 replies; 10+ messages in thread
From: Daniel P. Berrange @ 2013-05-17 10:07 UTC (permalink / raw)
To: Markus Armbruster; +Cc: Lucas Meneghel Rodrigues, qemu-devel, Stefan Hajnoczi
On Fri, May 17, 2013 at 11:54:12AM +0200, Markus Armbruster wrote:
> Stefan Hajnoczi <stefanha@redhat.com> writes:
>
> > glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
> > variable is set. The value of the environment variable determines the
> > bit pattern used to wipe memory. For more information, see
> > http://udrepper.livejournal.com/11429.html.
> >
> > Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
> > the environment variable to 1 so the test is deterministic. Setting a
> > random variable might expose more bugs but would be harder to reproduce.
> >
> > Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
> >
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> > Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
> > it for in-tree test suites we can detect memory management errors earlier.
> >
> > tests/Makefile | 4 +++-
> > tests/qemu-iotests/check | 2 +-
> > 2 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/tests/Makefile b/tests/Makefile
> > index a307d5a..25f6d28 100644
> > --- a/tests/Makefile
> > +++ b/tests/Makefile
> > @@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
> > $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
> > $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
> > $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
> > + MALLOC_PERTURB_=1 \
> > gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
> > $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
> > echo Gcov report for $$f:;\
>
> If you want punishment, why not go for extra punishment?
>
> MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
That could lead to non-reproducable failures though. I think it is better
to use a fixed value so that you're more likely to be able to reproduce
the issue every time you run the tests.
Rather than setting MALLOC_PERTURB_=1 unconditionally in the Makefile
though, it ought to honour any existing MALLOC_PERTURB_ env variable
the user has set. That could let automated test harness run repeatedly
with random MALLOC_PERTURB_, while still giving a deterministic value
for developers by default.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 10:07 ` Daniel P. Berrange
@ 2013-05-17 10:58 ` Markus Armbruster
2013-05-17 12:52 ` Lucas Meneghel Rodrigues
2013-05-17 11:16 ` Stefan Hajnoczi
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Markus Armbruster @ 2013-05-17 10:58 UTC (permalink / raw)
To: Daniel P. Berrange; +Cc: Lucas Meneghel Rodrigues, qemu-devel, Stefan Hajnoczi
"Daniel P. Berrange" <berrange@redhat.com> writes:
> On Fri, May 17, 2013 at 11:54:12AM +0200, Markus Armbruster wrote:
>> Stefan Hajnoczi <stefanha@redhat.com> writes:
>>
>> > glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
>> > variable is set. The value of the environment variable determines the
>> > bit pattern used to wipe memory. For more information, see
>> > http://udrepper.livejournal.com/11429.html.
>> >
>> > Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
>> > the environment variable to 1 so the test is deterministic. Setting a
>> > random variable might expose more bugs but would be harder to reproduce.
>> >
>> > Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
>> >
>> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>> > ---
>> > Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
>> > it for in-tree test suites we can detect memory management errors earlier.
>> >
>> > tests/Makefile | 4 +++-
>> > tests/qemu-iotests/check | 2 +-
>> > 2 files changed, 4 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/tests/Makefile b/tests/Makefile
>> > index a307d5a..25f6d28 100644
>> > --- a/tests/Makefile
>> > +++ b/tests/Makefile
>> > @@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
>> > $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
>> > $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
>> > $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>> > + MALLOC_PERTURB_=1 \
>> > gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
>> > $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
>> > echo Gcov report for $$f:;\
>>
>> If you want punishment, why not go for extra punishment?
>>
>> MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
>
> That could lead to non-reproducable failures though. I think it is better
> to use a fixed value so that you're more likely to be able to reproduce
> the issue every time you run the tests.
A fixed value misses failures.
A random value is just as reproducible as a fixed one, simply use the
same value. Requires the value to be logged, of course.
> Rather than setting MALLOC_PERTURB_=1 unconditionally in the Makefile
> though, it ought to honour any existing MALLOC_PERTURB_ env variable
> the user has set. That could let automated test harness run repeatedly
> with random MALLOC_PERTURB_, while still giving a deterministic value
> for developers by default.
Yes, we should respect the user's MALLOC_PERTURB_.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 9:54 ` Markus Armbruster
2013-05-17 10:07 ` Daniel P. Berrange
@ 2013-05-17 11:15 ` Stefan Hajnoczi
2013-05-17 12:50 ` Lucas Meneghel Rodrigues
1 sibling, 1 reply; 10+ messages in thread
From: Stefan Hajnoczi @ 2013-05-17 11:15 UTC (permalink / raw)
To: Markus Armbruster; +Cc: Lucas Meneghel Rodrigues, qemu-devel, Stefan Hajnoczi
On Fri, May 17, 2013 at 11:54 AM, Markus Armbruster <armbru@redhat.com> wrote:
> Stefan Hajnoczi <stefanha@redhat.com> writes:
>
>> glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
>> variable is set. The value of the environment variable determines the
>> bit pattern used to wipe memory. For more information, see
>> http://udrepper.livejournal.com/11429.html.
>>
>> Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
>> the environment variable to 1 so the test is deterministic. Setting a
>> random variable might expose more bugs but would be harder to reproduce.
>>
>> Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
>>
>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>> ---
>> Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
>> it for in-tree test suites we can detect memory management errors earlier.
>>
>> tests/Makefile | 4 +++-
>> tests/qemu-iotests/check | 2 +-
>> 2 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/tests/Makefile b/tests/Makefile
>> index a307d5a..25f6d28 100644
>> --- a/tests/Makefile
>> +++ b/tests/Makefile
>> @@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
>> $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
>> $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
>> $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>> + MALLOC_PERTURB_=1 \
>> gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
>> $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
>> echo Gcov report for $$f:;\
>
> If you want punishment, why not go for extra punishment?
>
> MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
Covered in the commit description:
"Note we always set
the environment variable to 1 so the test is deterministic. Setting a
random variable might expose more bugs but would be harder to reproduce."
I didn't want to clutter output with "MALLOC_PERTURB_=123" on every
run. AFAIK we have no log where this can be silently stashed. I
guess we could write it to a file and add that to .gitignore.
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 10:07 ` Daniel P. Berrange
2013-05-17 10:58 ` Markus Armbruster
@ 2013-05-17 11:16 ` Stefan Hajnoczi
2013-05-17 12:49 ` Lucas Meneghel Rodrigues
2013-05-19 16:51 ` Richard W.M. Jones
3 siblings, 0 replies; 10+ messages in thread
From: Stefan Hajnoczi @ 2013-05-17 11:16 UTC (permalink / raw)
To: Daniel P. Berrange
Cc: Lucas Meneghel Rodrigues, Markus Armbruster, Stefan Hajnoczi,
qemu-devel
On Fri, May 17, 2013 at 12:07 PM, Daniel P. Berrange
<berrange@redhat.com> wrote:
> Rather than setting MALLOC_PERTURB_=1 unconditionally in the Makefile
> though, it ought to honour any existing MALLOC_PERTURB_ env variable
> the user has set. That could let automated test harness run repeatedly
> with random MALLOC_PERTURB_, while still giving a deterministic value
> for developers by default.
Good point. Will fix in v2.
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 10:07 ` Daniel P. Berrange
2013-05-17 10:58 ` Markus Armbruster
2013-05-17 11:16 ` Stefan Hajnoczi
@ 2013-05-17 12:49 ` Lucas Meneghel Rodrigues
2013-05-19 16:51 ` Richard W.M. Jones
3 siblings, 0 replies; 10+ messages in thread
From: Lucas Meneghel Rodrigues @ 2013-05-17 12:49 UTC (permalink / raw)
To: Daniel P. Berrange; +Cc: Markus Armbruster, Stefan Hajnoczi, qemu-devel
On 17/05/13 07:07 AM, Daniel P. Berrange wrote:
>> If you want punishment, why not go for extra punishment?
>>
>> MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
>
> That could lead to non-reproducable failures though. I think it is better
> to use a fixed value so that you're more likely to be able to reproduce
> the issue every time you run the tests.
>
> Rather than setting MALLOC_PERTURB_=1 unconditionally in the Makefile
> though, it ought to honour any existing MALLOC_PERTURB_ env variable
> the user has set. That could let automated test harness run repeatedly
> with random MALLOC_PERTURB_, while still giving a deterministic value
> for developers by default.
Indeed. I've never thought about it, thanks for sharing the insight.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 11:15 ` Stefan Hajnoczi
@ 2013-05-17 12:50 ` Lucas Meneghel Rodrigues
0 siblings, 0 replies; 10+ messages in thread
From: Lucas Meneghel Rodrigues @ 2013-05-17 12:50 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: Markus Armbruster, Stefan Hajnoczi, qemu-devel
On 17/05/13 08:15 AM, Stefan Hajnoczi wrote:
> On Fri, May 17, 2013 at 11:54 AM, Markus Armbruster <armbru@redhat.com> wrote:
>> Stefan Hajnoczi <stefanha@redhat.com> writes:
>>
>>> glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
>>> variable is set. The value of the environment variable determines the
>>> bit pattern used to wipe memory. For more information, see
>>> http://udrepper.livejournal.com/11429.html.
>>>
>>> Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
>>> the environment variable to 1 so the test is deterministic. Setting a
>>> random variable might expose more bugs but would be harder to reproduce.
>>>
>>> Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
>>>
>>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>>> ---
>>> Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
>>> it for in-tree test suites we can detect memory management errors earlier.
>>>
>>> tests/Makefile | 4 +++-
>>> tests/qemu-iotests/check | 2 +-
>>> 2 files changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/tests/Makefile b/tests/Makefile
>>> index a307d5a..25f6d28 100644
>>> --- a/tests/Makefile
>>> +++ b/tests/Makefile
>>> @@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
>>> $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
>>> $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
>>> $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>>> + MALLOC_PERTURB_=1 \
>>> gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
>>> $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
>>> echo Gcov report for $$f:;\
>>
>> If you want punishment, why not go for extra punishment?
>>
>> MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
>
> Covered in the commit description:
> "Note we always set
> the environment variable to 1 so the test is deterministic. Setting a
> random variable might expose more bugs but would be harder to reproduce."
>
> I didn't want to clutter output with "MALLOC_PERTURB_=123" on every
> run. AFAIK we have no log where this can be silently stashed. I
> guess we could write it to a file and add that to .gitignore.
Yes, you could consider to have a debug log or something similar.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 10:58 ` Markus Armbruster
@ 2013-05-17 12:52 ` Lucas Meneghel Rodrigues
0 siblings, 0 replies; 10+ messages in thread
From: Lucas Meneghel Rodrigues @ 2013-05-17 12:52 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel, Stefan Hajnoczi
On 17/05/13 07:58 AM, Markus Armbruster wrote:
> "Daniel P. Berrange" <berrange@redhat.com> writes:
>
>> On Fri, May 17, 2013 at 11:54:12AM +0200, Markus Armbruster wrote:
>>> Stefan Hajnoczi <stefanha@redhat.com> writes:
>>>
>>>> glibc wipes malloc(3) memory when the MALLOC_PERTURB_ environment
>>>> variable is set. The value of the environment variable determines the
>>>> bit pattern used to wipe memory. For more information, see
>>>> http://udrepper.livejournal.com/11429.html.
>>>>
>>>> Set MALLOC_PERTURB_ for gtester and qemu-iotests. Note we always set
>>>> the environment variable to 1 so the test is deterministic. Setting a
>>>> random variable might expose more bugs but would be harder to reproduce.
>>>>
>>>> Both make check and qemu-iotests pass with MALLOC_PERTURB_ enabled.
>>>>
>>>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>>>> ---
>>>> Lucas noticed KVM autotest failures when enabling MALLOC_PERTURB_. By enabling
>>>> it for in-tree test suites we can detect memory management errors earlier.
>>>>
>>>> tests/Makefile | 4 +++-
>>>> tests/qemu-iotests/check | 2 +-
>>>> 2 files changed, 4 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/tests/Makefile b/tests/Makefile
>>>> index a307d5a..25f6d28 100644
>>>> --- a/tests/Makefile
>>>> +++ b/tests/Makefile
>>>> @@ -171,6 +171,7 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
>>>> $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
>>>> $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
>>>> $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>>>> + MALLOC_PERTURB_=1 \
>>>> gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
>>>> $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
>>>> echo Gcov report for $$f:;\
>>>
>>> If you want punishment, why not go for extra punishment?
>>>
>>> MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
>>
>> That could lead to non-reproducable failures though. I think it is better
>> to use a fixed value so that you're more likely to be able to reproduce
>> the issue every time you run the tests.
>
> A fixed value misses failures.
>
> A random value is just as reproducible as a fixed one, simply use the
> same value. Requires the value to be logged, of course.
That's a pretty great idea, Markus. I'm going to implement it in
virt-test, thanks!
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs
2013-05-17 10:07 ` Daniel P. Berrange
` (2 preceding siblings ...)
2013-05-17 12:49 ` Lucas Meneghel Rodrigues
@ 2013-05-19 16:51 ` Richard W.M. Jones
3 siblings, 0 replies; 10+ messages in thread
From: Richard W.M. Jones @ 2013-05-19 16:51 UTC (permalink / raw)
To: Daniel P. Berrange
Cc: Lucas Meneghel Rodrigues, Markus Armbruster, Stefan Hajnoczi,
qemu-devel
On Fri, May 17, 2013 at 11:07:38AM +0100, Daniel P. Berrange wrote:
> On Fri, May 17, 2013 at 11:54:12AM +0200, Markus Armbruster wrote:
> > If you want punishment, why not go for extra punishment?
> >
> > MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
>
> That could lead to non-reproducable failures though. I think it is better
> to use a fixed value so that you're more likely to be able to reproduce
> the issue every time you run the tests.
We've tested libguestfs for years with:
random_val="$(awk 'BEGIN{srand(); print 1+int(255*rand())}' < /dev/null)"
export MALLOC_PERTURB_=$random_val
and have never seen a non-reproducable failure caused by this.
It has, however, caught some simple memory failures, although valgrind
is a lot better if you can afford to run it.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-05-19 16:51 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-17 8:52 [Qemu-devel] [PATCH] tests: set MALLOC_PERTURB_ to expose memory bugs Stefan Hajnoczi
2013-05-17 9:54 ` Markus Armbruster
2013-05-17 10:07 ` Daniel P. Berrange
2013-05-17 10:58 ` Markus Armbruster
2013-05-17 12:52 ` Lucas Meneghel Rodrigues
2013-05-17 11:16 ` Stefan Hajnoczi
2013-05-17 12:49 ` Lucas Meneghel Rodrigues
2013-05-19 16:51 ` Richard W.M. Jones
2013-05-17 11:15 ` Stefan Hajnoczi
2013-05-17 12:50 ` Lucas Meneghel Rodrigues
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).