On 3 December 2015 at 17:59, Jarno Rajahalme <ja...@ovn.org> wrote:

> seq values are 64-bit, and storing them to a 32-bit variable causes
> the stored value never to match actual seq value after the seq value
> gets big enough.
>
> This is a likely cause of OVS main thread using 100% CPU in a system
> using bonds after some runtime.
>
> VMware-BZ: #1564993
> Reported-by: Hiram Bayless <hbayl...@vmware.com>
> Signed-off-by: Jarno Rajahalme <ja...@ovn.org>
>

It looks like this bug goes back at least as far as v1.10, have we really
not hit it until now?

Why aren't we getting any feedback from our compilers on this?

It looks like there are several places with this kind of problem:

$ grep -r unsigned.*change_seq
./lib/netdev-windows.c:    unsigned int change_seq;
./lib/ovsdb-idl.c:    unsigned int change_seqno;
./lib/ovsdb-idl.c:    unsigned int max_seqno =
table->change_seqno[OVSDB_IDL_CHANGE_INSERT];
./lib/ovsdb-idl-provider.h:    unsigned int
change_seqno[OVSDB_IDL_CHANGE_MAX];
./lib/ovsdb-idl-provider.h:    unsigned int
change_seqno[OVSDB_IDL_CHANGE_MAX];
./ofproto/bond.c:    unsigned int change_seq;    /* Tracks changes in
'netdev'. */
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to