|
From: Carl E. L. <ce...@us...> - 2015-05-15 16:08:44
|
On Fri, 2015-05-15 at 10:09 -0500, Will Schmidt wrote:
> On Thu, 2015-05-14 at 15:07 -0700, Carl E. Love wrote:
> > On Mon, 2015-05-11 at 12:14 -0500, Will Schmidt wrote:
> > > Add a .exp for the tc06_two_races_xml for power.
> > > This is specifically to cover the last line of output as
> > > seen on ppc64BE, which is "ERROR SUMMARY: X errors from 3 contexts",
> > > where X is 6, versus 3 as seen on other architectures.
> > > The additional errors show up on BE during the "Thread #1: pthread_cond
> > > _destroy: destruction of condition variable being waited upon."
> > >
> > > Signed-off-by: Will Schmidt <wil...@vn...>
> > >
> > > --
> > >
> > > I did do some experimentation with filters for this change. Though I could
> > > squash the 3/6 values down to 0 to match, it would affect a number of other
> > > tests, and seemed rather invasive. I'm going with this as the most
> > > straightforward fix.
> > > ---
> > > helgrind/tests/Makefile.am | 1
> > > .../tests/pth_cond_destroy_busy.stderr.exp-ppc64 | 50 ++++++++++++++++++++
> >
> > Will:
> >
> > The first line of your message says "Add a .exp for the
> > tc06_two_races_xml.." but the expect file you are adding is for
> > "pth_cond_destroy_busy.stderr.exp-ppc64" I am guessing the first line
> > of your message was in error?
> >
> > Just want to make sure I am not missing something here.
>
> I must've messed that up when I was refreshing the patch descriptions.
> The body/contents are correct. If something still seems fishy I'll
> resubmit next time around.
>
Will:
I ran the test on Power 7, Power 8 (Big Endian) and Power 8 (Little
Endian) without the patch. I see the test fail on Power 8 BE only. Yet
when I look at the nightly regression tests I see the test also fails
for Power 7. So again, we have the case where the test fails on some
Power 7 systems but not others.
The only difference I see with the new expect file and the existing
expect file is:
< ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
---
> ERROR SUMMARY: 6 errors from 3 contexts (suppressed: 0 from 0)
The new expect file reports 6 errors rather then 3 errors. Yet when I
look at the output from Valgrind, I can only count three errors. So, I
am confused as to why on some Power 7 platforms we report 6 errors?
I think we need to look into this test some more to understand why we
sometimes get "6 errors" instead of "3 errors" but only see three errors
mentioned in the report.
I am going to pass on this patch for the moment as well.
Carl Love
> Thanks,
> -Will
>
>
> >
> > Carl Love
> >
> >
> > > 2 files changed, 51 insertions(+)
> > > create mode 100644 helgrind/tests/pth_cond_destroy_busy.stderr.exp-ppc64
> > >
> > > diff --git a/helgrind/tests/Makefile.am b/helgrind/tests/Makefile.am
> > > index e3dff80..c8409e1 100644
> > > --- a/helgrind/tests/Makefile.am
> > > +++ b/helgrind/tests/Makefile.am
> > > @@ -46,6 +46,7 @@ EXTRA_DIST = \
> > > pth_destroy_cond.vgtest \
> > > pth_destroy_cond.stdout.exp pth_destroy_cond.stderr.exp \
> > > pth_cond_destroy_busy.vgtest pth_cond_destroy_busy.stderr.exp \
> > > + pth_cond_destroy_busy.stderr.exp-ppc64 \
> > > pth_spinlock.vgtest pth_spinlock.stdout.exp pth_spinlock.stderr.exp \
> > > rwlock_race.vgtest rwlock_race.stdout.exp rwlock_race.stderr.exp \
> > > rwlock_test.vgtest rwlock_test.stdout.exp rwlock_test.stderr.exp \
> > > diff --git a/helgrind/tests/pth_cond_destroy_busy.stderr.exp-ppc64 b/helgrind/tests/pth_cond_destroy_busy.stderr.exp-ppc64
> > > new file mode 100644
> > > index 0000000..2da688e
> > > --- /dev/null
> > > +++ b/helgrind/tests/pth_cond_destroy_busy.stderr.exp-ppc64
> > > @@ -0,0 +1,50 @@
> > > +
> > > +---Thread-Announcement------------------------------------------
> > > +
> > > +Thread #x is the program's root thread
> > > +
> > > +---Thread-Announcement------------------------------------------
> > > +
> > > +Thread #x was created
> > > + ...
> > > + by 0x........: pthread_create@* (hg_intercepts.c:...)
> > > + by 0x........: main (pth_cond_destroy_busy.c:45)
> > > +
> > > +----------------------------------------------------------------
> > > +
> > > +Possible data race during read of size 1 at 0x........ by thread #x
> > > +Locks held: none
> > > + at 0x........: my_memcmp (hg_intercepts.c:...)
> > > + by 0x........: pthread_cond_destroy_WRK (hg_intercepts.c:...)
> > > + by 0x........: pthread_cond_destroy@* (hg_intercepts.c:...)
> > > + by 0x........: main (pth_cond_destroy_busy.c:52)
> > > +
> > > +This conflicts with a previous write of size 4 by thread #x
> > > +Locks held: none
> > > + ...
> > > + by 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
> > > + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
> > > + by 0x........: thread_func (pth_cond_destroy_busy.c:31)
> > > + by 0x........: mythread_wrapper (hg_intercepts.c:...)
> > > + ...
> > > + Address 0x........ is 4 bytes inside data symbol "s_cond"
> > > +
> > > +----------------------------------------------------------------
> > > +
> > > +Thread #x: pthread_cond_destroy: destruction of condition variable being waited upon
> > > + at 0x........: pthread_cond_destroy_WRK (hg_intercepts.c:...)
> > > + by 0x........: pthread_cond_destroy@* (hg_intercepts.c:...)
> > > + by 0x........: main (pth_cond_destroy_busy.c:52)
> > > +
> > > +----------------------------------------------------------------
> > > +
> > > +Thread #x's call to pthread_cond_destroy failed
> > > + with error code 16 (EBUSY: Device or resource busy)
> > > + at 0x........: pthread_cond_destroy_WRK (hg_intercepts.c:...)
> > > + by 0x........: pthread_cond_destroy@* (hg_intercepts.c:...)
> > > + by 0x........: main (pth_cond_destroy_busy.c:52)
> > > +
> > > +First pthread_cond_destroy() call returned EBUSY.
> > > +Second pthread_cond_destroy() call returned success.
> > > +
> > > +ERROR SUMMARY: 6 errors from 3 contexts (suppressed: 0 from 0)
> > >
> >
> >
>
>
|