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

Memory loss in CONNECT from handler::ha_rnd_init

    XMLWordPrintable

Details

    • Can result in data loss

    Description

      INSTALL SONAME 'ha_connect';
      CREATE TABLE t (a INT) ENGINE=CONNECT table_type=ODBC CATFUNC=Drivers;
      SELECT * FROM t;
      SHUTDOWN;
      

      Show many memory losses (repeated/similar stacks removed):

      CS 12.3.0 fa36b269f139252b81d4384fbed07b167855cabb (Debug, UBASAN, Clang 21.1.3-20250923) Build 05/02/2026

      ==1453211==ERROR: LeakSanitizer: detected memory leaks
       
      Direct leak of 72 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd62a5d in calloc (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3d01a5d) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a02d  (<unknown module>)
          #2 0x734d837629f4  (<unknown module>)
          #3 0x734d83724a96  (<unknown module>)
          #4 0x734ca844e586  (<unknown module>)
          #5 0x734ca844deb0  (<unknown module>)
          #6 0x734ca8277622  (<unknown module>)
          #7 0x734ca8277ba2  (<unknown module>)
          #8 0x734ca80fb95e  (<unknown module>)
          #9 0x734ca80bb4ea  (<unknown module>)
          #10 0x734ca80d2e86  (<unknown module>)
          #11 0x5db2afefb219 in handler::ha_rnd_init(bool) /test/12.3_dbg_san/sql/handler.h:3741:22
          #12 0x5db2afeb526e in handler::ha_rnd_init_with_error(bool) /test/12.3_dbg_san/sql/handler.cc:4325:7
          #13 0x5db2b073c368 in init_read_record(READ_RECORD*, THD*, TABLE*, SQL_SELECT*, SORT_INFO*, int, bool, bool) /test/12.3_dbg_san/sql/records.cc:323:9
          #14 0x5db2b105b51f in join_init_read_record(st_join_table*) /test/12.3_dbg_san/sql/sql_select.cc:25629:9
          #15 0x5db2b0fb9ac6 in sub_select(JOIN*, st_join_table*, bool) /test/12.3_dbg_san/sql/sql_select.cc:24554:12
          #16 0x5db2b1068288 in do_select(JOIN*, Procedure*) /test/12.3_dbg_san/sql/sql_select.cc:24068:14
          #17 0x5db2b106527f in JOIN::exec_inner() /test/12.3_dbg_san/sql/sql_select.cc:5125:50
          #18 0x5db2b1062448 in JOIN::exec() /test/12.3_dbg_san/sql/sql_select.cc:4913:8
          #19 0x5db2b0fbe4a9 in mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) /test/12.3_dbg_san/sql/sql_select.cc:5439:21
          #20 0x5db2b0fbd1da in handle_select(THD*, LEX*, select_result*, unsigned long long) /test/12.3_dbg_san/sql/sql_select.cc:636:10
          #21 0x5db2b0e65f9d in execute_sqlcom_select(THD*, TABLE_LIST*) /test/12.3_dbg_san/sql/sql_parse.cc:6222:12
          #22 0x5db2b0e50230 in mysql_execute_command(THD*, bool) /test/12.3_dbg_san/sql/sql_parse.cc:3972:12
          #23 0x5db2b0e29d98 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /test/12.3_dbg_san/sql/sql_parse.cc:7950:18
          #24 0x5db2b0e21a9f in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /test/12.3_dbg_san/sql/sql_parse.cc:1896:7
          #25 0x5db2b0e2c1da in do_command(THD*, bool) /test/12.3_dbg_san/sql/sql_parse.cc:1432:17
          #26 0x5db2b16498bc in do_handle_one_connection(CONNECT*, bool) /test/12.3_dbg_san/sql/sql_connect.cc:1503:11
          #27 0x5db2b16493c5 in handle_one_connection /test/12.3_dbg_san/sql/sql_connect.cc:1415:5
          #28 0x5db2afd6010a in asan_thread_start(void*) crtstuff.c
       
      Indirect leak of 216 byte(s) in 3 object(s) allocated from:
          #0 0x5db2afd62a5d in calloc (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3d01a5d) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a02d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 96 byte(s) in 4 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a0c0  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 72 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd62a5d in calloc (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3d01a5d) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a02d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 72 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd62a5d in calloc (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3d01a5d) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a02d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 52 byte(s) in 4 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a03d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 13 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a03d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 13 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a03d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 8 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a05e  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 6 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a05e  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 5 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a04d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 5 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a04d  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 3 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a07a  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 3 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a0c0  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 2 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a07a  (<unknown module>)
      <...repeatd stack...>
       
      Indirect leak of 2 byte(s) in 1 object(s) allocated from:
          #0 0x5db2afd48cee in strdup (/test/UBASAN_MD050226-mariadb-12.3.0-linux-x86_64-dbg/bin/mariadbd+0x3ce7cee) (BuildId: 9435e27c92f1749c36f9f0ea617960c9bb7f3915)
          #1 0x734d8375a0c0  (<unknown module>)
      <...repeatd stack...>
       
      SUMMARY: AddressSanitizer: 640 byte(s) leaked in 24 allocation(s).
      

      Setup:

      Compiled with a recent version of Clang and LLVM. Ubuntu instructions for Clang/LLVM 18:
        # Note: It is strongly recommended to uninstall all old Clang & LLVM packages (ref  dpkg --list | grep -iE 'clang|llvm'  and use  apt purge  and  dpkg --purge  to remove the packages), before installing Clang/LLVM 18
           sudo apt install clang llvm-18 llvm-18-linker-tools llvm-18-runtime llvm-18-tools llvm-18-dev libstdc++-14-dev llvm-dev lld-18
      Compiled with: "-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_C{,XX}_FLAGS='-march=native -mtune=native'" and:
          -DWITH_ASAN=ON -DWITH_ASAN_SCOPE=ON -DWITH_UBSAN=ON -DWSREP_LIB_WITH_ASAN=ON
      Set before execution:
          export ASAN_OPTIONS=quarantine_size_mb=512:atexit=0:detect_invalid_pointer_pairs=3:dump_instruction_bytes=1:abort_on_error=1:allocator_may_return_null=1
      

      SAN Bug Detection Matrix

          Rel    o/d  Build   Commit                                    UniqueID observed             
      CS  10.6   dbg  230126  cd02709a315c9f08965d6b8fb7e75baaae17a4f4  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  10.6   opt  230126  cd02709a315c9f08965d6b8fb7e75baaae17a4f4  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  10.11  dbg  230126  b061b5ab1f2cd2a6993e53dc24a865304ced14cd  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  10.11  opt  230126  b061b5ab1f2cd2a6993e53dc24a865304ced14cd  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  11.4   dbg  260126  b6d0e23d76fe5936b6a29379ab494852e4d493b1  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  11.4   opt  260126  b6d0e23d76fe5936b6a29379ab494852e4d493b1  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  11.8   dbg  230126  01ff5ae6b677bead4c41d91bf5afb25c593a1d02  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  11.8   opt  230126  01ff5ae6b677bead4c41d91bf5afb25c593a1d02  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  12.2   dbg  230126  6ca70dd64ce56da40fad3bcd0641493210dd0a4c  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  12.2   opt  230126  6ca70dd64ce56da40fad3bcd0641493210dd0a4c  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  12.3   dbg  050226  fa36b269f139252b81d4384fbed07b167855cabb  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      CS  12.3   opt  050226  fa36b269f139252b81d4384fbed07b167855cabb  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      ES  10.6   dbg  260126  0fe345fff3a0463224ca714831303d40fb83648b  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      ES  10.6   opt  230126  0fe345fff3a0463224ca714831303d40fb83648b  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      ES  11.4   dbg  260126  34f616d5fd2c649d0c79acb4e2423c90b8f10436  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      ES  11.4   opt  260126  34f616d5fd2c649d0c79acb4e2423c90b8f10436  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      ES  11.8   dbg  230126  405ee76b60c4ab82155f339136ed20d3b7363717  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      ES  11.8   opt  230126  405ee76b60c4ab82155f339136ed20d3b7363717  LSAN|memory leak|<unknown_module>|calloc|handler::ha_rnd_init(bool)|handler::ha_rnd_init_with_error(bool)|init_read_record
      

      Attachments

        Activity

          People

            danblack Daniel Black
            Roel Roel Van de Paar
            Votes:
            0 Vote for this issue
            Watchers:
            1 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.