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

Indefinite loop or assertion failure upon modifying a column to zero length

Details

    Description

      --source include/have_innodb.inc
       
      CREATE TABLE t (a INT KEY) ENGINE=InnoDB;
      ALTER TABLE t MODIFY a CHAR(0);
      UPDATE t SET a = 1;
       
      DROP TABLE t;
      

      10.5 0fa141ebb4639c5c6c4b5d990f448a932fd095a8 debug

      mariadbd: /data/bld/10.5-asan/storage/innobase/handler/ha_innodb.cc:8859: virtual int ha_innobase::index_read(uchar*, const uchar*, uint, ha_rkey_function): Assertion `key_len != 0 || find_flag != HA_READ_KEY_EXACT' failed.
      250226 13:49:06 [ERROR] /share8t/bld/10.5-asan/sql/mariadbd got signal 6 ;
       
      #9  0x00007fa826e53eb2 in __GI___assert_fail (assertion=0x5586ab615780 "key_len != 0 || find_flag != HA_READ_KEY_EXACT", file=0x5586ab6081e0 "/data/bld/10.5-asan/storage/innobase/handler/ha_innodb.cc", line=8859, function=0x5586ab6157e0 "virtual int ha_innobase::index_read(uchar*, const uchar*, uint, ha_rkey_function)") at ./assert/assert.c:101
      #10 0x00005586a9cbca4a in ha_innobase::index_read (this=0x61d0002af8b8, buf=0x6190000fc3c8 "\377", '\276' <repeats 23 times>, "8\304\017", key_ptr=0x6190000fc648 '\276' <repeats 200 times>..., key_len=0, find_flag=HA_READ_KEY_EXACT) at /data/bld/10.5-asan/storage/innobase/handler/ha_innodb.cc:8859
      #11 0x00005586a9cc0f27 in ha_innobase::rnd_pos (this=0x61d0002af8b8, buf=0x6190000fc3c8 "\377", '\276' <repeats 23 times>, "8\304\017", pos=0x6190000fc648 '\276' <repeats 200 times>...) at /data/bld/10.5-asan/storage/innobase/handler/ha_innodb.cc:9428
      #12 0x00005586a9240b0c in handler::ha_rnd_pos (this=0x61d0002af8b8, buf=0x6190000fc3c8 "\377", '\276' <repeats 23 times>, "8\304\017", pos=0x6190000fc648 '\276' <repeats 200 times>...) at /data/bld/10.5-asan/sql/handler.cc:3221
      #13 0x00005586a96a573f in rr_from_tempfile (info=0x7fa813efe8e0) at /data/bld/10.5-asan/sql/records.cc:535
      #14 0x00005586a88175e4 in READ_RECORD::read_record (this=0x7fa813efe8e0) at /data/bld/10.5-asan/sql/records.h:80
      #15 0x00005586a8cf7fe3 in mysql_update (thd=0x62b00007e218, table_list=0x62b000085338, fields=..., values=..., conds=0x0, order_num=0, order=0x0, limit=18446744073709551615, ignore=false, found_return=0x7fa813eff030, updated_return=0x7fa813eff050) at /data/bld/10.5-asan/sql/sql_update.cc:1024
      #16 0x00005586a89de463 in mysql_execute_command (thd=0x62b00007e218) at /data/bld/10.5-asan/sql/sql_parse.cc:4507
      #17 0x00005586a89f7f3f in mysql_parse (thd=0x62b00007e218, rawbuf=0x62b000085238 "UPDATE t SET a = 1", length=18, parser_state=0x7fa813effc70, is_com_multi=false, is_next_command=false) at /data/bld/10.5-asan/sql/sql_parse.cc:8252
      #18 0x00005586a89cd102 in dispatch_command (command=COM_QUERY, thd=0x62b00007e218, packet=0x62900026c219 "UPDATE t SET a = 1", packet_length=18, is_com_multi=false, is_next_command=false) at /data/bld/10.5-asan/sql/sql_parse.cc:1891
      #19 0x00005586a89c9a95 in do_command (thd=0x62b00007e218) at /data/bld/10.5-asan/sql/sql_parse.cc:1375
      #20 0x00005586a8e27171 in do_handle_one_connection (connect=0x608000003eb8, put_in_cache=true) at /data/bld/10.5-asan/sql/sql_connect.cc:1386
      #21 0x00005586a8e26cd7 in handle_one_connection (arg=0x608000003e38) at /data/bld/10.5-asan/sql/sql_connect.cc:1298
      #22 0x00005586a9a86d4c in pfs_spawn_thread (arg=0x61500000e198) at /data/bld/10.5-asan/storage/perfschema/pfs.cc:2201
      #23 0x00007fa826ea81c4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #24 0x00007fa826f2885c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      On a non-debug build, the test hangs upon UPDATE seemingly forever, with mariadbd spinning on high CPU usage. Three consequent stack traces from the running process are attached.

      The failure started happening after this commit in 10.5.28

      commit ecaedbe299fe11372c36319f9b732b81e9f54883
      Author: Nikita Malyavin
      Date:   Sat Oct 12 21:32:18 2024 +0200
       
          MDEV-33658 1/2 Refactoring: extract Key length initialization
      

      Attachments

        1. threads1.txt
          14 kB
        2. threads2.txt
          17 kB
        3. threads3.txt
          17 kB

        Issue Links

          Activity

            There are no comments yet on this issue.

            People

              nikitamalyavin Nikita Malyavin
              elenst Elena Stepanova
              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.