Skip to content

Commit 536703e

Browse files
committed
Fixed that valgrind can be used with InnoDB using aio on Linux.
Fixed by calling MEM_MAKE_DEFINED() when InnoDB has read a page. Author: Vladislav Lesin vladislav.lesin@mariadb.com
1 parent d2ce065 commit 536703e

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

tpool/aio_libaio.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ along with this program; if not, write to the Free Software
1414
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 - 1301 USA*/
1515

1616
#include "tpool.h"
17+
#include "my_valgrind.h"
1718
#include <thread>
1819
#include <sys/syscall.h>
1920
#include <libaio.h>
@@ -136,6 +137,10 @@ class aio_libaio final : public aio
136137
#endif
137138
iocb->m_ret_len= event.res;
138139
iocb->m_err= 0;
140+
#if __has_feature(memory_sanitizer) || defined HAVE_valgrind
141+
if (iocb->m_opcode == aio_opcode::AIO_PREAD)
142+
MEM_MAKE_DEFINED(iocb->m_buffer, iocb->m_ret_len);
143+
#endif
139144
finish_synchronous(iocb);
140145
}
141146
iocb->m_internal_task.m_func= iocb->m_callback;

tpool/aio_liburing.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 - 1301 USA*/
1818
#include "my_valgrind.h"
1919
#include "mysql/service_my_print_error.h"
2020
#include "mysqld_error.h"
21+
#include "my_valgrind.h"
2122

2223
#include <liburing.h>
2324

@@ -179,7 +180,7 @@ class aio_uring final : public aio
179180
{
180181
iocb->m_err= 0;
181182
iocb->m_ret_len= res;
182-
#if __has_feature(memory_sanitizer)
183+
#if __has_feature(memory_sanitizer) || defined HAVE_valgrind
183184
if (iocb->m_opcode == aio_opcode::AIO_PREAD)
184185
MEM_MAKE_DEFINED(iocb->m_buffer, res);
185186
#endif

0 commit comments

Comments
 (0)