On Mon, Feb 11, 2019 at 06:19:21PM -0800, Han Zhou wrote: > From: Han Zhou <[email protected]> > > The OVSDB conditional monitor implementation allows many clients > to share same copy of monitored data if the clients are sharing > same tables and columns being monitored, while they can have > different monitor conditions. In monitor conditions they can > have different columns which can be different from the columns > being monitored. So the struct ovsdb_monitor_table maintains the > union of the all the columns being used in any conditions. > > The problem of the current implementation is that for each change > set generated, it doesn't maintain any metadata for the number of > columns for the data that has already populated in it. Instead, it > always rely on the n_columns field of the struct ovsdb_monitor_table > to manipulate the data. However, the n_columns in struct > ovsdb_monitor_table can increase (e.g. when a client changes its > condition which involves more columns). So it can result in that > the existing rows in a change set with N columns being later processed > as if it had more than N columns, typically, when the row is freed. > This causes the ovsdb-server crashing (see an example of the > backtrace).
Thanks. I applied this to master and backported as far as branch-2.7. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
