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