1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Added VALGRIND_YIELD to be able to abort from busy loops

Valgrind is single threaded and only changes threads as part of
system calls or waits.

I found some busy loops where the server assumes that some other
thread will change the state, which will not happen with valgrind.

Added VALGRIND_YIELD to the loops, which calls pthread_yield() if
HAVE_VALGRIND is defined.

Added pthread_yield() to the loops in table_cache.

We should consider changing some of the VALGRIND_YIELD calls to call
pthread_yield() as busy loop without any sleep() is usually a bad
thing.

Reviewer: svojtovich@gmail.com
This commit is contained in:
Monty
2025-01-20 19:30:19 +02:00
parent d9c3b775b8
commit aae9b50a53
4 changed files with 11 additions and 0 deletions

View File

@@ -901,6 +901,7 @@ retry:
{
mysql_mutex_unlock(&element->LOCK_table_share);
lf_hash_search_unpin(thd->tdc_hash_pins);
VALGRIND_YIELD;
goto retry;
}
lf_hash_search_unpin(thd->tdc_hash_pins);