> On Dec 3, 2015, at 6:19 PM, Joe Stringer <j...@ovn.org> wrote:
> 
> On 3 December 2015 at 17:59, Jarno Rajahalme <ja...@ovn.org 
> <mailto: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 <mailto:hbayl...@vmware.com>>
> Signed-off-by: Jarno Rajahalme <ja...@ovn.org <mailto: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'. */

It is likely that in those other cases the value is not passed to seq_wait().

Nevertheless, it is curious how the connectivity_seq would grow to such a big 
value to trigger this bug.

  Jarno

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to