Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-36482

cmake -DWITH_MSAN=ON does not work with asynchronous I/O

Details

    • Sprint 7 (07.04.2025), Sprint 8 (21.04.2025)

    Description

      So far, as per MDEV-20377, we got MemorySanitizer to work only for the traditional synchronous file I/O.

      Ideally, we should deviate from the default build options as little as possible. It turns out that with a few minor tweaks, the libaio code path can be made MSAN clean. For liburing, some additional changes to /usr/include/liburing/*.h seem to be necessary.

      Attachments

        Issue Links

          Activity

            https://github.com/MariaDB/server/pull/3949/ implements most of this. The liburing part needs some work, that is, tweaking the headers of that library, or figuring out how to build a MemorySanitizer instrumented version of the library.

            I tested that this works with libaio, but that one is rather useless, because libaio will refuse to work on tmpfs, and therefore the code would not be exercised on most CI systems.

            marko Marko Mäkelä added a comment - https://github.com/MariaDB/server/pull/3949/ implements most of this. The liburing part needs some work, that is, tweaking the headers of that library, or figuring out how to build a MemorySanitizer instrumented version of the library. I tested that this works with libaio , but that one is rather useless, because libaio will refuse to work on tmpfs , and therefore the code would not be exercised on most CI systems.

            Running MSAN, or anything on CI on Linux on tmpfs currently has already somewhat reduced value, because important parts of the code (innodb mmaped redo log) are only active when database runs on shared memory "disk"". Those parts would never run in production.

            wlad Vladislav Vaintroub added a comment - Running MSAN, or anything on CI on Linux on tmpfs currently has already somewhat reduced value, because important parts of the code (innodb mmaped redo log) are only active when database runs on shared memory "disk"". Those parts would never run in production.

            People

              danblack Daniel Black
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.