[ovs-build] Passed: ovsrobot/ovs#2844 (series_190169 - d441c12)

Travis CI builds at travis-ci.org
Fri Jul 17 04:28:30 UTC 2020

Build Update for ovsrobot/ovs

Build: #2844
Status: Passed

Duration: 1 hr, 13 mins, and 24 secs
Commit: d441c12 (series_190169)
Author: Peng He
Message: ofproto: add refcount to ofproto to fix crash at ofproto_destroy

The call stack of rule_destroy_cb:

remove_rules_postponed (one grace period)
    -> remove_rule_rcu
        -> remove_rule_rcu__
            -> ofproto_rule_unref -> ref count != 1
                -> ... more grace periods.
                -> rule_destroy_cb (> 2 grace periods)
                    -> free

Currently ofproto_destory waits only two grace periods, this means when
rule_destroy_cb is called, the rule->ofproto might be a dangling pointer.

This patch adds a refcount for ofproto to ensure ofproto exists when it
is needed to call free functions.

This patch fixes the crashes found:
Program terminated with signal SIGSEGV, Segmentation fault.
0  0x0000562a55169e49 in rule_destroy_cb (rule=0x562a598be2c0) at ofproto/ofproto.c:2956
1  0x0000562a552623d6 in ovsrcu_call_postponed () at lib/ovs-rcu.c:348
2  0x0000562a55262504 in ovsrcu_postpone_thread (arg=<optimized out>) at lib/ovs-rcu.c:364
3  0x0000562a55264aef in ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:383
4  0x00007febe715a4a4 in start_thread (arg=0x7febe4c1c700) at pthread_create.c:456
5  0x00007febe6990d0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
(gdb) p rule->ofproto->ofproto_class
$3 = (const struct ofproto_class *) 0x0

0  ofproto_dpif_credit_table_stats (ofproto=0x5583583332b0, table_id=0 '\000', n_matches=5, n_misses=0) at ofproto/ofproto-dpif.c:4310
1  0x0000558354c68514 in xlate_push_stats_entry (entry=entry at entry=0x7ff488031398, stats=stats at entry=0x7ff49af30b60) at ofproto/ofproto-dpif-xlate-cache.c:99
2  0x0000558354c686f3 in xlate_push_stats (xcache=<optimized out>, stats=stats at entry=0x7ff49af30b60) at ofproto/ofproto-dpif-xlate-cache.c:181
3  0x0000558354c5411a in revalidate_ukey (udpif=udpif at entry=0x5583583baba0, ukey=ukey at entry=0x7ff47809f770, stats=stats at entry=0x7ff49af32128, odp_actions=odp_actions at entry=0x7ff49af30c50, reval_seq=reval_seq at entry=275670456,
   recircs=recircs at entry=0x7ff49af30cd0) at ofproto/ofproto-dpif-upcall.c:2292
4  0x0000558354c57cbc in revalidate (revalidator=<optimized out>) at ofproto/ofproto-dpif-upcall.c:2681
5  0x0000558354c57f8e in udpif_revalidator (arg=0x5583583d2a90) at ofproto/ofproto-dpif-upcall.c:934
6  0x0000558354d24aef in ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:383
7  0x00007ff4a479d4a4 in start_thread (arg=0x7ff49af35700) at pthread_create.c:456
8  0x00007ff4a3fd3d0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
(gdb) p ofproto->up.ofproto_class
$3 = (const struct ofproto_class *) 0x0

Signed-off-by: Peng He <hepeng.0320 at bytedance.com>
Signed-off-by: 0-day Robot <robot at bytheb.org>

View the changeset: https://github.com/ovsrobot/ovs/commit/d441c1245053

View the full build log and details: https://travis-ci.org/github/ovsrobot/ovs/builds/708785816?utm_medium=notification&utm_source=email


You can unsubscribe from build emails from the ovsrobot/ovs repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=22285853&utm_medium=notification&utm_source=email.
Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email.
Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-build/attachments/20200717/3667bde5/attachment-0001.html>

More information about the build mailing list