detected by a tool (purely static)

==== Found an Order Violation between:
line 73, column 9 in lib/async-append-aio.c AND line 110, column 51 in
lib/async-append-aio.c
Thread 1:
 71|    if (ap) {
 72|        async_append_flush(ap);
>73|        free(ap->aiocbs);
 74|        free(ap->buffer);
 75|        free(ap);
>>>Stack Trace:
>>>main
>>>  main_loop [ovsdb/ovsdb-server.c:469]
>>>    unixctl_server_run [ovsdb/ovsdb-server.c:204]
>>>      run_connection [lib/unixctl.c:393]
>>>        process_command [lib/unixctl.c:342]
>>>          vlog_unixctl_reopen [lib/unixctl.c:308]
>>>            vlog_reopen_log_file [lib/vlog.c:698]
>>>              vlog_set_log_file [lib/vlog.c:434]
Thread 2:
 108|            ignore(aio_return(aiocb));
 109|            ap->aiocb_tail++;
>110|            byteq_advance_tail(&ap->byteq, aiocb->aio_nbytes);
 111|            n++;
 112|        }
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              async_append_write [lib/vlog.c:1169]
>>>                async_append_wait [lib/async-append-aio.c:127]


==== Found a race between:
line 589, column 9 in lib/vlog.c AND line 930, column 42 in lib/vlog.c
Shared variable:
syslogger at line 111 of lib/vlog.c
 111|static struct syslogger *syslogger = NULL;
Thread 1:
 587|
 588|    if (!strcmp(method, "null")) {
>589|        syslogger = syslog_null_create();
 590|    } else if (!strcmp(method, "libc")) {
 591|        syslogger = syslog_libc_create();
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
Thread 2:
 928|        const char *prefix = "none";
 929|
>930|        if (destination == VLF_SYSLOG && syslogger) {
 931|            prefix = syslog_get_prefix(syslogger);
 932|        }
>>>Stack Trace:
>>>main
>>>  main_loop [ovsdb/ovsdb-server.c:469]
>>>    unixctl_server_run [ovsdb/ovsdb-server.c:204]
>>>      run_connection [lib/unixctl.c:393]
>>>        process_command [lib/unixctl.c:342]
>>>          vlog_unixctl_list_pattern [lib/unixctl.c:308]
>>>            vlog_get_patterns [lib/vlog.c:682]


==== Found a race between:
line 432, column 5 in lib/ovs-thread.c AND line 494, column 9 in
lib/ovs-thread.c
Shared variable:
multithreaded at line 52 of lib/ovs-thread.c
 52|static bool multithreaded;
Thread 1:
 430|    }
 431|
>432|    multithreaded = true;
 433|    aux = xmalloc(sizeof *aux);
 434|    aux->start = start;
>>>Stack Trace:
>>>main
>>>  open_db [ovsdb/ovsdb-server.c:363]
>>>    ovsdb_storage_open [ovsdb/ovsdb-server.c:653]
>>>      ovsdb_storage_open__ [ovsdb/storage.c:108]
>>>        raft_open [ovsdb/storage.c:82]
>>>          raft_start_election [ovsdb/raft.c:974]
>>>            raft_set_term [ovsdb/raft.c:1675]
>>>              raft_waiter_create [ovsdb/raft.c:1634]
>>>                ovsdb_log_commit_start [ovsdb/raft.c:1985]
>>>                  ovsdb_log_get_afsync [ovsdb/log.c:971]
>>>                    afsync_create [ovsdb/log.c:960]
>>>                      ovs_thread_create [ovsdb/log.c:930]
Thread 2:
 492|assert_single_threaded_at(const char *where)
 493|{
>494|    if (multithreaded) {
 495|        VLOG_FATAL("%s: attempted operation not allowed when
multithreaded",
 496|                   where);
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
>>>                  syslog_direct_create [lib/vlog.c:593]
>>>                    make_unix_socket [lib/syslog-direct.c:63]
>>>                      make_sockaddr_un [lib/socket-util-unix.c:363]
>>>                        shorten_name_via_symlink
[lib/socket-util-unix.c:229]
>>>                          fatal_signal_add_file_to_unlink
[lib/socket-util-unix.c:190]
>>>                            assert_single_threaded_at
[lib/fatal-signal.c:93]


==== Found a race between:
line 84, column 12 in lib/util.c AND line 84, column 20 in lib/util.c
Shared variable:
 at line 0 of
 0|
Thread 1:
 82|    static int reentry = 0;
 83|
>84|    switch (reentry++) {
 85|    case 0:
 86|        VLOG_ABORT("%s: assertion %s failed in %s()",
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
Thread 2:
 82|    static int reentry = 0;
 83|
>84|    switch (reentry++) {
 85|    case 0:
 86|        VLOG_ABORT("%s: assertion %s failed in %s()",
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]


==== Found a race between:
line 94, column 9 in lib/fatal-signal.c AND line 90, column 10 in
lib/fatal-signal.c
Shared variable:
 at line 0 of
 0|
Thread 1:
 92|
 93|        assert_single_threaded();
>94|        inited = true;
 95|
 96|        ovs_mutex_init_recursive(&mutex);
>>>Stack Trace:
>>>main
>>>  daemonize_start [ovsdb/ovsdb-server.c:341]
>>>    make_pidfile [lib/daemon-unix.c:486]
>>>      fatal_signal_add_file_to_unlink [lib/daemon-unix.c:155]
Thread 2:
 88|    static bool inited = false;
 89|
>90|    if (!inited) {
 91|        size_t i;
 92|
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
>>>                  syslog_direct_create [lib/vlog.c:593]
>>>                    make_unix_socket [lib/syslog-direct.c:63]
>>>                      make_sockaddr_un [lib/socket-util-unix.c:363]
>>>                        shorten_name_via_symlink
[lib/socket-util-unix.c:229]
>>>                          fatal_signal_add_file_to_unlink
[lib/socket-util-unix.c:190]


==== Found a race between:
line 475, column 5 in lib/ovs-thread.c AND line 161, column 12 in
./include/openvswitch/thread.h
Shared variable:
 at line 0 of
 0|
shared field: ->done
Thread 1:
 473|     * will not be reordered to take place after the following store.
*/
 474|    atomic_thread_fence(memory_order_release);
>475|    once->done = true;
 476|    ovs_mutex_unlock(&once->mutex);
 477|}
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                ovsthread_once_done [lib/vlog.c:807]
Thread 2:
 159|     * worst that can happen is that we call ovsthread_once_start__()
 160|     * once when strictly not necessary. */
>161|    return OVS_UNLIKELY(!once->done && ovsthread_once_start__(once));
 162|}
 163|
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                ovsthread_once_start.15901 [lib/vlog.c:789]

==== Found a race between:
line 1211, column 5 in lib/vlog.c AND line 1104, column 27 in lib/vlog.c
Shared variable:
 at line 0 of
 0|
shared field: ->levels
Thread 1:
 1209|    /* Don't log this message to the console to avoid redundancy with
the
 1210|     * message written by the later ovs_fatal_valist(). */
>1211|    module->levels[VLF_CONSOLE] = VLL_OFF;
 1212|
 1213|    vlog_valist(module, VLL_EMER, message, args);
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
>>>                  syslog_direct_create [lib/vlog.c:593]
>>>                    make_unix_socket [lib/syslog-direct.c:63]
>>>                      make_sockaddr_un [lib/socket-util-unix.c:363]
>>>                        shorten_name_via_symlink
[lib/socket-util-unix.c:229]
>>>                          random_uint32 [lib/socket-util-unix.c:178]
>>>                            random_init [lib/random.c:93]
>>>                              vlog_fatal [lib/timeval.c:489]
>>>                                vlog_fatal_valist [lib/vlog.c:1229]
Thread 2:
 1102|            const char *message, va_list args)
 1103|{
>1104|    bool log_to_console = module->levels[VLF_CONSOLE] >= level;
 1105|    bool log_to_syslog = module->levels[VLF_SYSLOG] >= level;
 1106|    bool log_to_file = module->levels[VLF_FILE]  >= level;
>>>Stack Trace:
>>>dp_netdev_flow_offload_main
>>>  ovsrcu_quiesce_start [lib/dpif-netdev.c:2740]
>>>    ovsrcu_quiesced [lib/ovs-rcu.c:143]
>>>      ovs_thread_create [lib/ovs-rcu.c:123]
>>>        ovsrcu_quiesce_end [lib/ovs-thread.c:428]
>>>          ovsrcu_perthread_get [lib/ovs-rcu.c:110]
>>>            ovsrcu_init_module [lib/ovs-rcu.c:80]
>>>              fatal_signal_add_hook [lib/ovs-rcu.c:440]
>>>                vlog_fatal [lib/signals.c:71]
>>>                  vlog_fatal_valist [lib/vlog.c:1229]
>>>                    vlog_valist [lib/vlog.c:1213]

==== Found a race between:
line 113, column 18 in ./include/openvswitch/list.h AND line 206, column 12
in ./include/openvswitch/list.h
Shared variable:
flushed_cbsets at line 62 of lib/ovs-rcu.c
 62|static struct guarded_list flushed_cbsets;
shared field: ->list->prev
Thread 1:
 111|ovs_list_init(struct ovs_list *list)
 112|{
>113|    list->next = list->prev = list;
 114|}
 115|
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsrcu_quiesce_end [lib/ovs-thread.c:381]
>>>      ovsrcu_perthread_get [lib/ovs-rcu.c:110]
>>>        ovsrcu_init_module [lib/ovs-rcu.c:80]
>>>          guarded_list_init [lib/ovs-rcu.c:444]
>>>            ovs_list_init.3035 [lib/guarded-list.c:25]
Thread 2:
 204|ovs_list_move(struct ovs_list *dst, struct ovs_list *src)
 205|{
>206|    *dst = *src;
 207|    ovs_list_moved(dst, src);
 208|}
>>>Stack Trace:
>>>ovsrcu_postpone_thread
>>>  ovsrcu_call_postponed [lib/ovs-rcu.c:364]
>>>    guarded_list_pop_all [lib/ovs-rcu.c:337]
>>>      ovs_list_move [lib/guarded-list.c:89]

==== Found an Order Violation between:
line 156, column 5 in lib/coverage.c AND line 142, column 14 in
lib/coverage.c
Thread 1:
 154|    }
 155|
>156|    free(c);
 157|
 158|    return hash_int(n_groups, hash);
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsrcu_postpone_thread [lib/ovs-thread.c:383]
>>>      ovsrcu_call_postponed [lib/ovs-rcu.c:364]
>>>        ovsrcu_synchronize [lib/ovs-rcu.c:342]
>>>          poll_block [lib/ovs-rcu.c:239]
>>>            time_poll [lib/poll-loop.c:364]
>>>              log_poll_interval [lib/timeval.c:298]
>>>                coverage_log [lib/timeval.c:677]
>>>                  coverage_hash [lib/coverage.c:201]
Thread 2:
 140|        int j;
 141|
>142|        if (!c[i]->total) {
 143|            break;
 144|        }
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsrcu_postpone_thread [lib/ovs-thread.c:383]
>>>      ovsrcu_call_postponed [lib/ovs-rcu.c:364]
>>>        ovsrcu_synchronize [lib/ovs-rcu.c:342]
>>>          poll_block [lib/ovs-rcu.c:239]
>>>            time_poll [lib/poll-loop.c:364]
>>>              log_poll_interval [lib/timeval.c:298]
>>>                coverage_log [lib/timeval.c:677]
>>>                  coverage_hash [lib/coverage.c:201]



==== Found a race between:
line 378, column 9 in lib/coverage.c AND line 255, column 39 in
lib/coverage.c
Shared variable:
 at line 0 of
 0|
Thread 1:
 376|
 377|        /* Updates the global index variables. */
>378|        idx_count = (idx_count + slots) % (MIN_AVG_LEN * HR_AVG_LEN);
 379|        /* Updates the run time. */
 380|        coverage_run_time = now + COVERAGE_RUN_INTERVAL;
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper.16273 [lib/ovs-thread.c:447]
>>>    ovsrcu_postpone_thread.15980 [lib/ovs-thread.c:383]
>>>      ovsrcu_call_postponed.15979 [lib/ovs-rcu.c:364]
>>>        ovsrcu_synchronize [lib/ovs-rcu.c:342]
>>>          poll_block [lib/ovs-rcu.c:239]
>>>            time_poll [lib/poll-loop.c:364]
>>>              coverage_run [lib/timeval.c:296]
Thread 2:
 253|                          "%13.4f/sec   total: %llu",
 254|                          c[i]->name,
>255|                          (c[i]->min[(idx_count - 1) % MIN_AVG_LEN]
 256|                           * 1000.0 / COVERAGE_RUN_INTERVAL),
 257|                          coverage_array_sum(c[i]->min, MIN_AVG_LEN) /
60.0,
>>>Stack Trace:
>>>udpif_upcall_handler.3656
>>>  recv_upcalls.3707 [ofproto/ofproto-dpif-upcall.c:749]
>>>    dpif_recv [ofproto/ofproto-dpif-upcall.c:784]
>>>      coverage_unixctl_show.2073 [lib/dpif.c:1586]
>>>        coverage_read.2076 [lib/coverage.c:70]
==== Found an Order Violation between: 
line 73, column 9 in lib/async-append-aio.c AND line 110, column 51 in 
lib/async-append-aio.c
Thread 1: 
 71|    if (ap) {
 72|        async_append_flush(ap);
>73|        free(ap->aiocbs);
 74|        free(ap->buffer);
 75|        free(ap);
>>>Stack Trace:
>>>main
>>>  main_loop [ovsdb/ovsdb-server.c:469]
>>>    unixctl_server_run [ovsdb/ovsdb-server.c:204]
>>>      run_connection [lib/unixctl.c:393]
>>>        process_command [lib/unixctl.c:342]
>>>          vlog_unixctl_reopen [lib/unixctl.c:308]
>>>            vlog_reopen_log_file [lib/vlog.c:698]
>>>              vlog_set_log_file [lib/vlog.c:434]
Thread 2: 
 108|            ignore(aio_return(aiocb));
 109|            ap->aiocb_tail++;
>110|            byteq_advance_tail(&ap->byteq, aiocb->aio_nbytes);
 111|            n++;
 112|        }
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              async_append_write [lib/vlog.c:1169]
>>>                async_append_wait [lib/async-append-aio.c:127]


==== Found a race between: 
line 589, column 9 in lib/vlog.c AND line 930, column 42 in lib/vlog.c
Shared variable: 
syslogger at line 111 of lib/vlog.c
 111|static struct syslogger *syslogger = NULL;
Thread 1: 
 587|
 588|    if (!strcmp(method, "null")) {
>589|        syslogger = syslog_null_create();
 590|    } else if (!strcmp(method, "libc")) {
 591|        syslogger = syslog_libc_create();
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
Thread 2: 
 928|        const char *prefix = "none";
 929|
>930|        if (destination == VLF_SYSLOG && syslogger) {
 931|            prefix = syslog_get_prefix(syslogger);
 932|        }
>>>Stack Trace:
>>>main
>>>  main_loop [ovsdb/ovsdb-server.c:469]
>>>    unixctl_server_run [ovsdb/ovsdb-server.c:204]
>>>      run_connection [lib/unixctl.c:393]
>>>        process_command [lib/unixctl.c:342]
>>>          vlog_unixctl_list_pattern [lib/unixctl.c:308]
>>>            vlog_get_patterns [lib/vlog.c:682]


==== Found a race between: 
line 432, column 5 in lib/ovs-thread.c AND line 494, column 9 in 
lib/ovs-thread.c
Shared variable: 
multithreaded at line 52 of lib/ovs-thread.c
 52|static bool multithreaded;
Thread 1: 
 430|    }
 431|
>432|    multithreaded = true;
 433|    aux = xmalloc(sizeof *aux);
 434|    aux->start = start;
>>>Stack Trace:
>>>main
>>>  open_db [ovsdb/ovsdb-server.c:363]
>>>    ovsdb_storage_open [ovsdb/ovsdb-server.c:653]
>>>      ovsdb_storage_open__ [ovsdb/storage.c:108]
>>>        raft_open [ovsdb/storage.c:82]
>>>          raft_start_election [ovsdb/raft.c:974]
>>>            raft_set_term [ovsdb/raft.c:1675]
>>>              raft_waiter_create [ovsdb/raft.c:1634]
>>>                ovsdb_log_commit_start [ovsdb/raft.c:1985]
>>>                  ovsdb_log_get_afsync [ovsdb/log.c:971]
>>>                    afsync_create [ovsdb/log.c:960]
>>>                      ovs_thread_create [ovsdb/log.c:930]
Thread 2: 
 492|assert_single_threaded_at(const char *where)
 493|{
>494|    if (multithreaded) {
 495|        VLOG_FATAL("%s: attempted operation not allowed when 
multithreaded",
 496|                   where);
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
>>>                  syslog_direct_create [lib/vlog.c:593]
>>>                    make_unix_socket [lib/syslog-direct.c:63]
>>>                      make_sockaddr_un [lib/socket-util-unix.c:363]
>>>                        shorten_name_via_symlink [lib/socket-util-unix.c:229]
>>>                          fatal_signal_add_file_to_unlink 
>>> [lib/socket-util-unix.c:190]
>>>                            assert_single_threaded_at [lib/fatal-signal.c:93]


==== Found a race between: 
line 84, column 12 in lib/util.c AND line 84, column 20 in lib/util.c
Shared variable: 
 at line 0 of 
 0|
Thread 1: 
 82|    static int reentry = 0;
 83|
>84|    switch (reentry++) {
 85|    case 0:
 86|        VLOG_ABORT("%s: assertion %s failed in %s()",
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
Thread 2: 
 82|    static int reentry = 0;
 83|
>84|    switch (reentry++) {
 85|    case 0:
 86|        VLOG_ABORT("%s: assertion %s failed in %s()",
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]


==== Found a race between: 
line 94, column 9 in lib/fatal-signal.c AND line 90, column 10 in 
lib/fatal-signal.c
Shared variable: 
 at line 0 of 
 0|
Thread 1: 
 92|
 93|        assert_single_threaded();
>94|        inited = true;
 95|
 96|        ovs_mutex_init_recursive(&mutex);
>>>Stack Trace:
>>>main
>>>  daemonize_start [ovsdb/ovsdb-server.c:341]
>>>    make_pidfile [lib/daemon-unix.c:486]
>>>      fatal_signal_add_file_to_unlink [lib/daemon-unix.c:155]
Thread 2: 
 88|    static bool inited = false;
 89|
>90|    if (!inited) {
 91|        size_t i;
 92|
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
>>>                  syslog_direct_create [lib/vlog.c:593]
>>>                    make_unix_socket [lib/syslog-direct.c:63]
>>>                      make_sockaddr_un [lib/socket-util-unix.c:363]
>>>                        shorten_name_via_symlink [lib/socket-util-unix.c:229]
>>>                          fatal_signal_add_file_to_unlink 
>>> [lib/socket-util-unix.c:190]


==== Found a race between: 
line 475, column 5 in lib/ovs-thread.c AND line 161, column 12 in 
./include/openvswitch/thread.h
Shared variable: 
 at line 0 of 
 0|
shared field: ->done
Thread 1: 
 473|     * will not be reordered to take place after the following store. */
 474|    atomic_thread_fence(memory_order_release);
>475|    once->done = true;
 476|    ovs_mutex_unlock(&once->mutex);
 477|}
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                ovsthread_once_done [lib/vlog.c:807]
Thread 2: 
 159|     * worst that can happen is that we call ovsthread_once_start__()
 160|     * once when strictly not necessary. */
>161|    return OVS_UNLIKELY(!once->done && ovsthread_once_start__(once));
 162|}
 163|
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                ovsthread_once_start.15901 [lib/vlog.c:789]

==== Found a race between: 
line 1211, column 5 in lib/vlog.c AND line 1104, column 27 in lib/vlog.c
Shared variable: 
 at line 0 of 
 0|
shared field: ->levels
Thread 1: 
 1209|    /* Don't log this message to the console to avoid redundancy with the
 1210|     * message written by the later ovs_fatal_valist(). */
>1211|    module->levels[VLF_CONSOLE] = VLL_OFF;
 1212|
 1213|    vlog_valist(module, VLL_EMER, message, args);
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsthread_id_init [lib/ovs-thread.c:371]
>>>      ovs_assert_failure [lib/ovs-thread.c:360]
>>>        vlog_abort [lib/util.c:86]
>>>          vlog_abort_valist [lib/vlog.c:1263]
>>>            vlog_valist [lib/vlog.c:1248]
>>>              vlog_init [lib/vlog.c:1122]
>>>                vlog_set_syslog_method [lib/vlog.c:801]
>>>                  syslog_direct_create [lib/vlog.c:593]
>>>                    make_unix_socket [lib/syslog-direct.c:63]
>>>                      make_sockaddr_un [lib/socket-util-unix.c:363]
>>>                        shorten_name_via_symlink [lib/socket-util-unix.c:229]
>>>                          random_uint32 [lib/socket-util-unix.c:178]
>>>                            random_init [lib/random.c:93]
>>>                              vlog_fatal [lib/timeval.c:489]
>>>                                vlog_fatal_valist [lib/vlog.c:1229]
Thread 2: 
 1102|            const char *message, va_list args)
 1103|{
>1104|    bool log_to_console = module->levels[VLF_CONSOLE] >= level;
 1105|    bool log_to_syslog = module->levels[VLF_SYSLOG] >= level;
 1106|    bool log_to_file = module->levels[VLF_FILE]  >= level;
>>>Stack Trace:
>>>dp_netdev_flow_offload_main
>>>  ovsrcu_quiesce_start [lib/dpif-netdev.c:2740]
>>>    ovsrcu_quiesced [lib/ovs-rcu.c:143]
>>>      ovs_thread_create [lib/ovs-rcu.c:123]
>>>        ovsrcu_quiesce_end [lib/ovs-thread.c:428]
>>>          ovsrcu_perthread_get [lib/ovs-rcu.c:110]
>>>            ovsrcu_init_module [lib/ovs-rcu.c:80]
>>>              fatal_signal_add_hook [lib/ovs-rcu.c:440]
>>>                vlog_fatal [lib/signals.c:71]
>>>                  vlog_fatal_valist [lib/vlog.c:1229]
>>>                    vlog_valist [lib/vlog.c:1213]

==== Found a race between: 
line 113, column 18 in ./include/openvswitch/list.h AND line 206, column 12 in 
./include/openvswitch/list.h
Shared variable: 
flushed_cbsets at line 62 of lib/ovs-rcu.c
 62|static struct guarded_list flushed_cbsets;
shared field: ->list->prev
Thread 1: 
 111|ovs_list_init(struct ovs_list *list)
 112|{
>113|    list->next = list->prev = list;
 114|}
 115|
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsrcu_quiesce_end [lib/ovs-thread.c:381]
>>>      ovsrcu_perthread_get [lib/ovs-rcu.c:110]
>>>        ovsrcu_init_module [lib/ovs-rcu.c:80]
>>>          guarded_list_init [lib/ovs-rcu.c:444]
>>>            ovs_list_init.3035 [lib/guarded-list.c:25]
Thread 2: 
 204|ovs_list_move(struct ovs_list *dst, struct ovs_list *src)
 205|{
>206|    *dst = *src;
 207|    ovs_list_moved(dst, src);
 208|}
>>>Stack Trace:
>>>ovsrcu_postpone_thread
>>>  ovsrcu_call_postponed [lib/ovs-rcu.c:364]
>>>    guarded_list_pop_all [lib/ovs-rcu.c:337]
>>>      ovs_list_move [lib/guarded-list.c:89]

==== Found an Order Violation between: 
line 156, column 5 in lib/coverage.c AND line 142, column 14 in lib/coverage.c
Thread 1: 
 154|    }
 155|
>156|    free(c);
 157|
 158|    return hash_int(n_groups, hash);
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsrcu_postpone_thread [lib/ovs-thread.c:383]
>>>      ovsrcu_call_postponed [lib/ovs-rcu.c:364]
>>>        ovsrcu_synchronize [lib/ovs-rcu.c:342]
>>>          poll_block [lib/ovs-rcu.c:239]
>>>            time_poll [lib/poll-loop.c:364]
>>>              log_poll_interval [lib/timeval.c:298]
>>>                coverage_log [lib/timeval.c:677]
>>>                  coverage_hash [lib/coverage.c:201]
Thread 2: 
 140|        int j;
 141|
>142|        if (!c[i]->total) {
 143|            break;
 144|        }
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper [lib/ovs-thread.c:447]
>>>    ovsrcu_postpone_thread [lib/ovs-thread.c:383]
>>>      ovsrcu_call_postponed [lib/ovs-rcu.c:364]
>>>        ovsrcu_synchronize [lib/ovs-rcu.c:342]
>>>          poll_block [lib/ovs-rcu.c:239]
>>>            time_poll [lib/poll-loop.c:364]
>>>              log_poll_interval [lib/timeval.c:298]
>>>                coverage_log [lib/timeval.c:677]
>>>                  coverage_hash [lib/coverage.c:201]



==== Found a race between: 
line 378, column 9 in lib/coverage.c AND line 255, column 39 in lib/coverage.c
Shared variable: 
 at line 0 of 
 0|
Thread 1: 
 376|
 377|        /* Updates the global index variables. */
>378|        idx_count = (idx_count + slots) % (MIN_AVG_LEN * HR_AVG_LEN);
 379|        /* Updates the run time. */
 380|        coverage_run_time = now + COVERAGE_RUN_INTERVAL;
>>>Stack Trace:
>>>pthread_create [lib/ovs-thread.c:447]
>>>  ovsthread_wrapper.16273 [lib/ovs-thread.c:447]
>>>    ovsrcu_postpone_thread.15980 [lib/ovs-thread.c:383]
>>>      ovsrcu_call_postponed.15979 [lib/ovs-rcu.c:364]
>>>        ovsrcu_synchronize [lib/ovs-rcu.c:342]
>>>          poll_block [lib/ovs-rcu.c:239]
>>>            time_poll [lib/poll-loop.c:364]
>>>              coverage_run [lib/timeval.c:296]
Thread 2: 
 253|                          "%13.4f/sec   total: %llu",
 254|                          c[i]->name,
>255|                          (c[i]->min[(idx_count - 1) % MIN_AVG_LEN]
 256|                           * 1000.0 / COVERAGE_RUN_INTERVAL),
 257|                          coverage_array_sum(c[i]->min, MIN_AVG_LEN) / 
60.0,
>>>Stack Trace:
>>>udpif_upcall_handler.3656
>>>  recv_upcalls.3707 [ofproto/ofproto-dpif-upcall.c:749]
>>>    dpif_recv [ofproto/ofproto-dpif-upcall.c:784]
>>>      coverage_unixctl_show.2073 [lib/dpif.c:1586]
>>>        coverage_read.2076 [lib/coverage.c:70]


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to