[ovs-dev] Use of uninitialized value at testcase OVN 3 HVs, 3 LS, 3 lports/LS, 1 LR

Ben Pfaff blp at ovn.org
Sat Apr 23 00:45:24 UTC 2016


I sent a real patch:
        http://openvswitch.org/pipermail/dev/2016-April/070058.html

On Tue, Apr 12, 2016 at 07:43:56AM -0700, William Tu wrote:
> Hi Ben,
> 
> Yes, this solves the problem! thank you
> 
> Regards,
> William
> 
> On Mon, Apr 11, 2016 at 9:35 AM, Ben Pfaff <blp at ovn.org> wrote:
> 
> > On Wed, Apr 06, 2016 at 01:01:45PM -0700, William Tu wrote:
> > > Hi,
> > >
> > > Valgrind reports "Conditional jump or move depends on uninitialised
> > > value(s)" on test case 2019, "ovn.at:1229 ovn -- 3 HVs, 3 LS, 3
> > lports/LS,
> > > 1 LR". I have no clue about how to fix this error. Any comments are
> > > appreciated.
> > >
> > > At the end of the message, valgrind reports "Uninitialised value was
> > > created by a stack allocation at 0x4404A0: xlate_actions
> > > (ofproto-dpif-xlate.c:5061)". So I suspect that due to deep call stacks
> > > caused by xlate_recursively(), maybe the stack size is not enough. So I
> > > increase stack size to 512MB but still the same.
> > >
> > > If you want to try, make valgrind more verbose by adding
> > > VALGRIND = valgrind --log-file=valgrind.%p --leak-check=full \
> > >     --track-origins=yes \
> > >     --suppressions=$(abs_top_srcdir)/tests/glibc.supp \
> > >     --suppressions=$(abs_top_srcdir)/tests/openssl.supp --num-callers=80
> >
> > I think I see the problem.  Before I post a full fix, would you mind
> > verifying that the following also avoids the valgrind warnings for you?
> >
> > diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> > index a02dc24..010e9c7 100644
> > --- a/ofproto/ofproto-dpif-xlate.c
> > +++ b/ofproto/ofproto-dpif-xlate.c
> > @@ -5076,6 +5076,7 @@ xlate_actions(struct xlate_in *xin, struct xlate_out
> > *xout)
> >      uint64_t action_set_stub[1024 / 8];
> >      uint64_t frozen_actions_stub[1024 / 8];
> >      struct flow_wildcards scratch_wc;
> > +    memset(&scratch_wc, 0, sizeof scratch_wc);
> >      uint64_t actions_stub[256 / 8];
> >      struct ofpbuf scratch_actions = OFPBUF_STUB_INITIALIZER(actions_stub);
> >      struct xlate_ctx ctx = {
> >



More information about the dev mailing list