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 = {
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to