TSAN warnings: destroy of a locked mutex
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- c
- Ambito
- operating-systems, testing-qa
Direzione di ricerca
Inizia con il trace TSAN in src/platform_linux/platform.c:153 e con il percorso di shutdown attraverso src/task.c:317, 342 e 346. Riproduci l’avviso utilizzando il percorso del test funzionale in tests/functional/kvstore_basic_test.c, in particolare test_kvstore_iterator_with_startkey. Il lavoro è completato quando l’avviso relativo al mutex bloccato e le race condition rilevanti segnalate nel task system non compaiono più sotto ThreadSanitizer.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Building with ThreadSanitizer and running tests shows this error:
SUMMARY: ThreadSanitizer: destroy of a locked mutex src/platform_linux/platform.c:153 in platform_mutex_destroy
==================
==================
WARNING: ThreadSanitizer: destroy of a locked mutex (pid=205274)
#0 pthread_mutex_destroy ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1237 (libtsan.so.0+0x3725c)
#1 platform_mutex_destroy src/platform_linux/platform.c:153 (libsplinterdb.so+0x4312e)
#2 task_group_deinit src/task.c:346 (libsplinterdb.so+0x465e2)
#3 task_system_destroy src/task.c:646 (libsplinterdb.so+0x4790f)
#4 kvstore_close src/kvstore.c:321 (libsplinterdb.so+0x174e1)
#5 kvstore_basic_close src/kvstore_basic.c:338 (libsplinterdb.so+0x9e461)
#6 test_kvstore_iterator_with_startkey tests/functional/kvstore_basic_test.c:705 (driver_test+0x1a5bd)
#7 kvstore_basic_test tests/functional/kvstore_basic_test.c:1226 (driver_test+0x1d7bb)
#8 test_dispatcher tests/functional/test_dispatcher.c:49 (driver_test+0x45d71)
#9 main tests/functional/driver_test.c:13 (driver_test+0x45765)
and:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4165 (libtsan.so.0+0x526fc)
#1 platform_mutex_lock src/platform_linux/platform_inline.h:158 (libsplinterdb.so+0x451bc)
#2 task_group_stop_and_wait_for_threads src/task.c:317 (libsplinterdb.so+0x463f7)
#3 task_group_deinit src/task.c:342 (libsplinterdb.so+0x465a1)
#4 task_system_destroy src/task.c:646 (libsplinterdb.so+0x4790f)
#5 kvstore_close src/kvstore.c:321 (libsplinterdb.so+0x174e1)
#6 kvstore_basic_close src/kvstore_basic.c:338 (libsplinterdb.so+0x9e461)
#7 test_kvstore_iterator_with_startkey tests/functional/kvstore_basic_test.c:705 (driver_test+0x1a5bd)
#8 kvstore_basic_test tests/functional/kvstore_basic_test.c:1226 (driver_test+0x1d7bb)
#9 test_dispatcher tests/functional/test_dispatcher.c:49 (driver_test+0x45d71)
#10 main tests/functional/driver_test.c:13 (driver_test+0x45765)
Location is heap block of size 1250240 at 0x7f9951cce000 allocated by main thread:
#0 aligned_alloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:799 (libtsan.so.0+0x300a8)
#1 platform_aligned_malloc src/platform_linux/platform_inline.h:390 (libsplinterdb.so+0x45372)
#2 platform_aligned_zalloc src/platform_linux/platform.h:599 (libsplinterdb.so+0x4546e)
#3 task_system_create src/task.c:595 (libsplinterdb.so+0x47629)
#4 kvstore_create_or_open src/kvstore.c:191 (libsplinterdb.so+0x16d55)
#5 kvstore_create src/kvstore.c:284 (libsplinterdb.so+0x173af)
#6 kvstore_basic_create_or_open src/kvstore_basic.c:309 (libsplinterdb.so+0x9e2d7)
#7 kvstore_basic_create src/kvstore_basic.c:324 (libsplinterdb.so+0x9e3cb)
#8 setup_kvstore_basic tests/functional/kvstore_basic_test.c:63 (driver_test+0x16226)
#9 test_kvstore_iterator_with_startkey tests/functional/kvstore_basic_test.c:677 (driver_test+0x1a1e5)
#10 kvstore_basic_test tests/functional/kvstore_basic_test.c:1226 (driver_test+0x1d7bb)
#11 test_dispatcher tests/functional/test_dispatcher.c:49 (driver_test+0x45d71)
#12 main tests/functional/driver_test.c:13 (driver_test+0x45765)
Mutex M1346 (0x7f9951ccf528) created at:
#0 pthread_mutex_init ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1220 (libtsan.so.0+0x4a616)
#1 platform_mutex_init src/platform_linux/platform.c:143 (libsplinterdb.so+0x430ef)
#2 task_group_init src/task.c:380 (libsplinterdb.so+0x467c9)
#3 task_system_create src/task.c:613 (libsplinterdb.so+0x47768)
#4 kvstore_create_or_open src/kvstore.c:191 (libsplinterdb.so+0x16d55)
#5 kvstore_create src/kvstore.c:284 (libsplinterdb.so+0x173af)
#6 kvstore_basic_create_or_open src/kvstore_basic.c:309 (libsplinterdb.so+0x9e2d7)
#7 kvstore_basic_create src/kvstore_basic.c:324 (libsplinterdb.so+0x9e3cb)
#8 setup_kvstore_basic tests/functional/kvstore_basic_test.c:63 (driver_test+0x16226)
#9 test_kvstore_iterator_with_startkey tests/functional/kvstore_basic_test.c:677 (driver_test+0x1a1e5)
#10 kvstore_basic_test tests/functional/kvstore_basic_test.c:1226 (driver_test+0x1d7bb)
#11 test_dispatcher tests/functional/test_dispatcher.c:49 (driver_test+0x45d71)
#12 main tests/functional/driver_test.c:13 (driver_test+0x45765)
Apparently that's undefined behavior
TSAN also complains about lots of data races, which are too numerous to list here.
- Lingua principale
- C
- Stelle
- 733
- Fork
- 68
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di vmware/splinterdb
-
Error On Running ExamplesAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
vmware/splinterdb#600 · 5 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
vmware/splinterdb#597 ·
-
Is macOS support considered?Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
vmware/splinterdb#591 · 2 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
vmware/splinterdb#589 · 1 reazione ·
-
A segmentation fault in routing_filter_lookupForse di nuovo libera @ajhconway l’ha presa 1221 giorni fa e non c’è nessuna pull request aperta. Aperta
vmware/splinterdb#585 · 1 assegnatario ·
Tutte le issue di vmware/splinterdb
Issue simili
-
backlog
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
EchoTools/nevr-runtime#454 ·
I maintainer di solito rispondono entro 1 giorno
-
initramfs: -type f (#18686) skips the libcurl.so.4 symlink, libcurl no longer copied into initramfsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
UNIVERSE-HPC/course-material#283 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ashvardanian/NumKong#397 · 1 commento · 1 reazione ·