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

InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX, or !cursor->index->is_committed()

Details

    Description

      A Windows user upgraded from MariaDB 10.0.21 to MariaDB 10.1.11. After running mysql_upgrade, the user saw errors like this in the error log:

      InnoDB: tried to purge sec index entry not marked for deletion in
      InnoDB: index "column" of table "db1"."tab1"
      InnoDB: tuple DATA TUPLE: 3 fields;
       0: len 15; hex XXXX; asc field1;;
       1: len 3; hex XXXX; asc sum;;
       2: len 33; hex XXXX; asc field3;;
       
      InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0
       0: len 15; hex XXXX; asc field1;;
       1: len 3; hex XXXX; asc sum;;
       2: len 30; hex XXXX; asc field3; (total 33 bytes);
      

      Some time after that, the user tried inserting more records into the database, and this caused an assertion failure:

      2016-02-12 14:58:34 4428  InnoDB: Assertion failure in thread 17448 in file row0ins.cc line 283
      InnoDB: Failing assertion: *cursor->index->name == TEMP_INDEX_PREFIX
      InnoDB: We intentionally generate a memory trap.
      InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
      InnoDB: If you get repeated assertion failures or crashes, even
      InnoDB: immediately after the mysqld startup, there may be
      InnoDB: corruption in the InnoDB tablespace. Please refer to
      InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
      InnoDB: about forcing recovery.
      

      Attachments

        Issue Links

          Activity

            GeoffMontee Geoff Montee (Inactive) created issue -

            jplindst, could you please look into it?

            elenst Elena Stepanova added a comment - jplindst , could you please look into it?
            elenst Elena Stepanova made changes -
            Field Original Value New Value
            Fix Version/s 10.1 [ 16100 ]
            Assignee Jan Lindström [ jplindst ]

            I found this: https://bugs.launchpad.net/percona-server/+bug/1195614 and https://bugs.mysql.com/bug.php?id=59845

            Not sure if directly related but assertion does look same. Issue does not look familiar to me.

            jplindst Jan Lindström (Inactive) added a comment - I found this: https://bugs.launchpad.net/percona-server/+bug/1195614 and https://bugs.mysql.com/bug.php?id=59845 Not sure if directly related but assertion does look same. Issue does not look familiar to me.
            wlad Vladislav Vaintroub added a comment - - edited

            Backtrace

            3 mysqld.exe!abort Line 81
            *4 mysqld.exe!row_ins_sec_index_entry_by_modify Line 285
            5 mysqld.exe!row_ins_sec_index_entry_low Line 2868
            6 mysqld.exe!row_ins_sec_index_entry Line 3062
            7 mysqld.exe!row_ins Line 3318
            8 mysqld.exe!row_ins_step Line 3444
            9 mysqld.exe!row_insert_for_mysql Line 1377
            10 mysqld.exe!ha_innobase::write_row Line 8505
            11 mysqld.exe!handler::ha_write_row Line 5875
            12 mysqld.exe!write_record Line 1881
            13 mysqld.exe!mysql_insert Line 991
            14 mysqld.exe!mysql_execute_command Line 3898
            15 mysqld.exe!mysql_parse Line 7308
            16 mysqld.exe!dispatch_command Line 1491
            17 mysqld.exe!do_command Line 1109
            18 mysqld.exe!threadpool_process_request Line 239
            19 mysqld.exe!io_completion_callback Line 568

            wlad Vladislav Vaintroub added a comment - - edited Backtrace 3 mysqld.exe!abort Line 81 *4 mysqld.exe!row_ins_sec_index_entry_by_modify Line 285 5 mysqld.exe!row_ins_sec_index_entry_low Line 2868 6 mysqld.exe!row_ins_sec_index_entry Line 3062 7 mysqld.exe!row_ins Line 3318 8 mysqld.exe!row_ins_step Line 3444 9 mysqld.exe!row_insert_for_mysql Line 1377 10 mysqld.exe!ha_innobase::write_row Line 8505 11 mysqld.exe!handler::ha_write_row Line 5875 12 mysqld.exe!write_record Line 1881 13 mysqld.exe!mysql_insert Line 991 14 mysqld.exe!mysql_execute_command Line 3898 15 mysqld.exe!mysql_parse Line 7308 16 mysqld.exe!dispatch_command Line 1491 17 mysqld.exe!do_command Line 1109 18 mysqld.exe!threadpool_process_request Line 239 19 mysqld.exe!io_completion_callback Line 568
            nirbhay_c Nirbhay Choubey (Inactive) made changes -

            The user upgraded to 10.1.18, and is now seeing the following:

            InnoDB: tried to purge sec index entry not marked for deletion in
            InnoDB: index "column" of table "db1"."tab1"
            InnoDB: tuple DATA TUPLE: 3 fields;
             0: len 15; hex XXXX; asc field1;
             1: len 3; hex XXXX; asc sum;;
             2: len 33; hex XXXX; asc field3;;
             
            InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0
             0: len 15; hex XXXX; asc field1;
             1: len 3; hex XXXX; asc sum;;
             2: len 30; hex XXXX; asc field3; (total 33 bytes);
             
            InnoDB: tried to purge sec index entry not marked for deletion in
            InnoDB: index "column" of table "db1"."tab1"
            InnoDB: tuple DATA TUPLE: 3 fields;
             0: len 15; hex XXXX; asc field1;;
             1: len 13; hex XXXX; asc notemptycount;;
             2: len 33; hex XXXX; asc field3;;
             
            InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0
             0: len 15; hex XXXX; asc field1;;
             1: len 13; hex XXXX; asc notemptycount;;
             2: len 30; hex XXXX; asc field3; (total 33 bytes);
             
            InnoDB: tried to purge sec index entry not marked for deletion in
            InnoDB: index "column" of table "db1"."tab1"
            InnoDB: tuple DATA TUPLE: 3 fields;
             0: len 32; hex XXXX; asc field1s1;;
             1: len 3; hex XXXX; asc min;;
             2: len 33; hex XXXX; asc field3;;
             
            InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0
             0: len 30; hex XXXX; asc field1; (total 32 bytes);
             1: len 3; hex XXXX; asc min;;
             2: len 30; hex XXXX; asc field3; (total 33 bytes);
             
            2016-10-12 14:51:44 47a8  InnoDB: Assertion failure in thread 18344 in file row0ins.cc line 283
            InnoDB: Failing assertion: *cursor->index->name == TEMP_INDEX_PREFIX
            InnoDB: We intentionally generate a memory trap.
            InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
            InnoDB: If you get repeated assertion failures or crashes, even
            InnoDB: immediately after the mysqld startup, there may be
            InnoDB: corruption in the InnoDB tablespace. Please refer to
            InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
            InnoDB: about forcing recovery.
            161012 14:51:44 [ERROR] mysqld got exception 0x80000003 ;
            This could be because you hit a bug. It is also possible that this binary
            or one of the libraries it was linked against is corrupt, improperly built,
            or misconfigured. This error can also be caused by malfunctioning hardware.
             
            To report this bug, see https://mariadb.com/kb/en/reporting-bugs
             
            We will try our best to scrape up some info that will hopefully help
            diagnose the problem, but since we have already crashed, 
            something is definitely wrong and this may fail.
             
            Server version: 10.1.18-MariaDB
            key_buffer_size=0
            read_buffer_size=2097152
            max_used_connections=10
            max_threads=1001
            thread_count=9
            It is possible that mysqld could use up to 
            key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 544537 K  bytes of memory
            Hope that's ok; if not, decrease some variables in the equation.
             
            Thread pointer: 0x0x7ebdc0f88
            Attempting backtrace. You can use the following information to find out
            where mysqld died. If you see no messages after this, something went
            terribly wrong...
            mysqld.exe!my_parameter_handler()[my_init.c:259]
            mysqld.exe!raise()[winsig.c:587]
            mysqld.exe!abort()[abort.c:82]
            mysqld.exe!row_ins_sec_index_entry_by_modify()[row0ins.cc:283]
            mysqld.exe!row_ins_sec_index_entry_low()[row0ins.cc:2868]
            mysqld.exe!row_ins_sec_index_entry()[row0ins.cc:3062]
            mysqld.exe!row_ins()[row0ins.cc:3318]
            mysqld.exe!row_ins_step()[row0ins.cc:3444]
            mysqld.exe!row_insert_for_mysql()[row0mysql.cc:1377]
            mysqld.exe!ha_innobase::write_row()[ha_innodb.cc:8748]
            mysqld.exe!handler::ha_write_row()[handler.cc:5916]
            mysqld.exe!write_record()[sql_insert.cc:1882]
            mysqld.exe!mysql_insert()[sql_insert.cc:991]
            mysqld.exe!mysql_execute_command()[sql_parse.cc:3897]
            mysqld.exe!mysql_parse()[sql_parse.cc:7323]
            mysqld.exe!dispatch_command()[sql_parse.cc:1490]
            mysqld.exe!do_command()[sql_parse.cc:1108]
            mysqld.exe!threadpool_process_request()[threadpool_common.cc:238]
            mysqld.exe!io_completion_callback()[threadpool_win.cc:568]
            kernel32.dll!BaseFormatTimeOut()
            ntdll.dll!RtlEqualDomainName()
            ntdll.dll!TpIsTimerSet()
            kernel32.dll!BaseThreadInitThunk()
            ntdll.dll!RtlUserThreadStart()
            

            GeoffMontee Geoff Montee (Inactive) added a comment - The user upgraded to 10.1.18, and is now seeing the following: InnoDB: tried to purge sec index entry not marked for deletion in InnoDB: index "column" of table "db1"."tab1" InnoDB: tuple DATA TUPLE: 3 fields; 0: len 15; hex XXXX; asc field1; 1: len 3; hex XXXX; asc sum;; 2: len 33; hex XXXX; asc field3;;   InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0 0: len 15; hex XXXX; asc field1; 1: len 3; hex XXXX; asc sum;; 2: len 30; hex XXXX; asc field3; (total 33 bytes);   InnoDB: tried to purge sec index entry not marked for deletion in InnoDB: index "column" of table "db1"."tab1" InnoDB: tuple DATA TUPLE: 3 fields; 0: len 15; hex XXXX; asc field1;; 1: len 13; hex XXXX; asc notemptycount;; 2: len 33; hex XXXX; asc field3;;   InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0 0: len 15; hex XXXX; asc field1;; 1: len 13; hex XXXX; asc notemptycount;; 2: len 30; hex XXXX; asc field3; (total 33 bytes);   InnoDB: tried to purge sec index entry not marked for deletion in InnoDB: index "column" of table "db1"."tab1" InnoDB: tuple DATA TUPLE: 3 fields; 0: len 32; hex XXXX; asc field1s1;; 1: len 3; hex XXXX; asc min;; 2: len 33; hex XXXX; asc field3;;   InnoDB: record PHYSICAL RECORD: n_fields 3; compact format; info bits 0 0: len 30; hex XXXX; asc field1; (total 32 bytes); 1: len 3; hex XXXX; asc min;; 2: len 30; hex XXXX; asc field3; (total 33 bytes);   2016-10-12 14:51:44 47a8 InnoDB: Assertion failure in thread 18344 in file row0ins.cc line 283 InnoDB: Failing assertion: *cursor->index->name == TEMP_INDEX_PREFIX InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 161012 14:51:44 [ERROR] mysqld got exception 0x80000003 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware.   To report this bug, see https://mariadb.com/kb/en/reporting-bugs   We will try our best to scrape up some info that will hopefully help diagnose the problem, but since we have already crashed, something is definitely wrong and this may fail.   Server version: 10.1.18-MariaDB key_buffer_size=0 read_buffer_size=2097152 max_used_connections=10 max_threads=1001 thread_count=9 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 544537 K bytes of memory Hope that's ok; if not, decrease some variables in the equation.   Thread pointer: 0x0x7ebdc0f88 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... mysqld.exe!my_parameter_handler()[my_init.c:259] mysqld.exe!raise()[winsig.c:587] mysqld.exe!abort()[abort.c:82] mysqld.exe!row_ins_sec_index_entry_by_modify()[row0ins.cc:283] mysqld.exe!row_ins_sec_index_entry_low()[row0ins.cc:2868] mysqld.exe!row_ins_sec_index_entry()[row0ins.cc:3062] mysqld.exe!row_ins()[row0ins.cc:3318] mysqld.exe!row_ins_step()[row0ins.cc:3444] mysqld.exe!row_insert_for_mysql()[row0mysql.cc:1377] mysqld.exe!ha_innobase::write_row()[ha_innodb.cc:8748] mysqld.exe!handler::ha_write_row()[handler.cc:5916] mysqld.exe!write_record()[sql_insert.cc:1882] mysqld.exe!mysql_insert()[sql_insert.cc:991] mysqld.exe!mysql_execute_command()[sql_parse.cc:3897] mysqld.exe!mysql_parse()[sql_parse.cc:7323] mysqld.exe!dispatch_command()[sql_parse.cc:1490] mysqld.exe!do_command()[sql_parse.cc:1108] mysqld.exe!threadpool_process_request()[threadpool_common.cc:238] mysqld.exe!io_completion_callback()[threadpool_win.cc:568] kernel32.dll!BaseFormatTimeOut() ntdll.dll!RtlEqualDomainName() ntdll.dll!TpIsTimerSet() kernel32.dll!BaseThreadInitThunk() ntdll.dll!RtlUserThreadStart()
            GeoffMontee Geoff Montee (Inactive) made changes -
            Affects Version/s 10.1.18 [ 22110 ]
            daniel.rimal@cldn.cz Dan Rimal added a comment - - edited

            I have hit probably the same bug on 10.1.18 on Centos 6:

            InnoDB: tried to purge sec index entry not marked for deletion in
            InnoDB: index "ts_db_tbl" of table "percona"."checksum"
            InnoDB: tuple DATA TUPLE: 4 fields;
             0: len 4; hex 5822da8f; asc X"  ;;
             1: len 64; hex 494d4720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020; asc IMG                                                             ;;
             2: len 64; hex 70686f746f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020; asc photo                                                           ;;
             3: len 4; hex 80000001; asc     ;;
             
            InnoDB: record PHYSICAL RECORD: n_fields 4; compact format; info bits 0
             0: len 4; hex 5822da8f; asc X"  ;;
             1: len 30; hex 494d47202020202020202020202020202020202020202020202020202020; asc IMG                           ; (total 64 bytes);
             2: len 30; hex 70686f746f20202020202020202020202020202020202020202020202020; asc photo                         ; (total 64 bytes);
             3: len 4; hex 80000001; asc     ;;
            

            No strack trace. This MDB run as replication slave. Replication master run on 10.1.17 and was upgraded from 5.5.xx. Master doesn't hit this issue for now.

            daniel.rimal@cldn.cz Dan Rimal added a comment - - edited I have hit probably the same bug on 10.1.18 on Centos 6: InnoDB: tried to purge sec index entry not marked for deletion in InnoDB: index "ts_db_tbl" of table "percona"."checksum" InnoDB: tuple DATA TUPLE: 4 fields; 0: len 4; hex 5822da8f; asc X" ;; 1: len 64; hex 494d4720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020; asc IMG ;; 2: len 64; hex 70686f746f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020; asc photo ;; 3: len 4; hex 80000001; asc ;;   InnoDB: record PHYSICAL RECORD: n_fields 4; compact format; info bits 0 0: len 4; hex 5822da8f; asc X" ;; 1: len 30; hex 494d47202020202020202020202020202020202020202020202020202020; asc IMG ; (total 64 bytes); 2: len 30; hex 70686f746f20202020202020202020202020202020202020202020202020; asc photo ; (total 64 bytes); 3: len 4; hex 80000001; asc ;; No strack trace. This MDB run as replication slave. Replication master run on 10.1.17 and was upgraded from 5.5.xx. Master doesn't hit this issue for now.
            ratzpo Rasmus Johansson (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Marko Mäkelä [ marko ]
            marko Marko Mäkelä made changes -

            Please see the comments that I made in MDEV-11756.
            Also, note that these assertion failures are just the ‘messenger’ that we should not shoot. The logical corruption of the dataset may have been introduced much earlier. I suspect that the InnoDB change buffering could be to blame.
            It is also possible that the corruption was originally introduced to the data files by an old version of MariaDB or MySQL that did not have the fixes for the bugs that I have listed at the end of the MySQL Bug #61104 page.

            marko Marko Mäkelä added a comment - Please see the comments that I made in MDEV-11756 . Also, note that these assertion failures are just the ‘messenger’ that we should not shoot. The logical corruption of the dataset may have been introduced much earlier. I suspect that the InnoDB change buffering could be to blame. It is also possible that the corruption was originally introduced to the data files by an old version of MariaDB or MySQL that did not have the fixes for the bugs that I have listed at the end of the MySQL Bug #61104 page.
            marko Marko Mäkelä made changes -
            Summary InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX, or !cursor->index->is_committed()
            murrayw24 Murray Williams added a comment - - edited

            We seem to have hit the same bug using 10.1.20 on CentOS 5:

            InnoDB: tried to purge sec index entry not marked for deletion in
            InnoDB: index "REF_IND" of table "SYS_FOREIGN"
            InnoDB: tuple DATA TUPLE: 2 fields;
             0: len 17; hex 763464657670622f646f63756d656e7473; asc v4devpb/documents;;
             1: len 26; hex 763464657670622f464b41353134353838303634364233343331; asc v4devpb/FKA5145880646B3431;;
             
            InnoDB: record PHYSICAL RECORD: n_fields 2; 1-byte offsets; info bits 0
             0: len 17; hex 763464657670622f646f63756d656e7473; asc v4devpb/documents;;
             1: len 26; hex 763464657670622f464b41353134353838303634364233343331; asc v4devpb/FKA5145880646B3431;;
            

            This happened after upgrading the database from MySQL 5.6 to MariaDB 10.1.20 earlier in the day.
            After the upgrade, I ran mysql_upgrade which reported OK for all the tables in this database.
            Later in the day, when attempting to drop some foreign key and indexes, the above error occurred in the DB log, along with the following in our application log:

            SQL state [HY000]; error code [1025]; Error on rename of './v4devpb/#sql-1534_2c5' to './v4devpb/documents'

            The following day, Maria crashed with the following message:

            2017-01-05 11:59:08 2b72eec48d40  InnoDB: Assertion failure in thread 47772632124736 in file row0ins.cc line 283
            InnoDB: Failing assertion: *cursor->index->name == TEMP_INDEX_PREFIX
            170105 11:59:08 [ERROR] mysqld got signal 6 ;
            ...
            stack_bottom = 0x2b72eec48468 thread_stack 0x48400
            InnoDB: Warning: a long semaphore wait:
            --Thread 47772428119360 has waited at dict0dict.cc line 1172 for 241.00 seconds the semaphore:
            Mutex at 0x2b72070112e8 '&dict_sys->mutex', lock var 1
            Last time reserved by thread 47772632124736 in file not yet reserved line 0, waiters flag 1
            InnoDB: Warning: semaphore wait:
            --Thread 47772428119360 has waited at dict0dict.cc line 1172 for 241.00 seconds the semaphore:
            Mutex at 0x2b72070112e8 '&dict_sys->mutex', lock var 1
            Last time reserved by thread 47772632124736 in file not yet reserved line 0, waiters flag 1
            InnoDB: Warning: semaphore wait:
            ...
            --Thread 47772616559936 has waited at dict0dict.cc line 1172 for 33.000 seconds the semaphore:
            Mutex at 0x2b72070112e8 '&dict_sys->mutex', lock var 1
            Last time reserved by thread 47772632124736 in file not yet reserved line 0, waiters flag 1
            InnoDB: ###### Starts InnoDB Monitor for 30 secs to print diagnostic info:
            InnoDB: Pending preads 0, pwrites 0
            
            

            Subsequently, MariaDB hung or crashed whenever I tried to drop a recreate a database with the same name.

            About two weeks later, when attempting to alter the schema of another database on the same server, we saw a very similar issue.

            murrayw24 Murray Williams added a comment - - edited We seem to have hit the same bug using 10.1.20 on CentOS 5: InnoDB: tried to purge sec index entry not marked for deletion in InnoDB: index "REF_IND" of table "SYS_FOREIGN" InnoDB: tuple DATA TUPLE: 2 fields; 0: len 17; hex 763464657670622f646f63756d656e7473; asc v4devpb/documents;; 1: len 26; hex 763464657670622f464b41353134353838303634364233343331; asc v4devpb/FKA5145880646B3431;;   InnoDB: record PHYSICAL RECORD: n_fields 2; 1-byte offsets; info bits 0 0: len 17; hex 763464657670622f646f63756d656e7473; asc v4devpb/documents;; 1: len 26; hex 763464657670622f464b41353134353838303634364233343331; asc v4devpb/FKA5145880646B3431;; This happened after upgrading the database from MySQL 5.6 to MariaDB 10.1.20 earlier in the day. After the upgrade, I ran mysql_upgrade which reported OK for all the tables in this database. Later in the day, when attempting to drop some foreign key and indexes, the above error occurred in the DB log, along with the following in our application log: SQL state [HY000]; error code [1025]; Error on rename of './v4devpb/#sql-1534_2c5' to './v4devpb/documents' The following day, Maria crashed with the following message: 2017-01-05 11:59:08 2b72eec48d40 InnoDB: Assertion failure in thread 47772632124736 in file row0ins.cc line 283 InnoDB: Failing assertion: *cursor->index->name == TEMP_INDEX_PREFIX 170105 11:59:08 [ERROR] mysqld got signal 6 ; ... stack_bottom = 0x2b72eec48468 thread_stack 0x48400 InnoDB: Warning: a long semaphore wait: --Thread 47772428119360 has waited at dict0dict.cc line 1172 for 241.00 seconds the semaphore: Mutex at 0x2b72070112e8 '&dict_sys->mutex', lock var 1 Last time reserved by thread 47772632124736 in file not yet reserved line 0, waiters flag 1 InnoDB: Warning: semaphore wait: --Thread 47772428119360 has waited at dict0dict.cc line 1172 for 241.00 seconds the semaphore: Mutex at 0x2b72070112e8 '&dict_sys->mutex', lock var 1 Last time reserved by thread 47772632124736 in file not yet reserved line 0, waiters flag 1 InnoDB: Warning: semaphore wait: ... --Thread 47772616559936 has waited at dict0dict.cc line 1172 for 33.000 seconds the semaphore: Mutex at 0x2b72070112e8 '&dict_sys->mutex', lock var 1 Last time reserved by thread 47772632124736 in file not yet reserved line 0, waiters flag 1 InnoDB: ###### Starts InnoDB Monitor for 30 secs to print diagnostic info: InnoDB: Pending preads 0, pwrites 0 Subsequently, MariaDB hung or crashed whenever I tried to drop a recreate a database with the same name. About two weeks later, when attempting to alter the schema of another database on the same server, we saw a very similar issue.

            It seems MySQL 5.7.5 fixes a similar looking bug that was introduced in MySQL 5.7.4 for cursor->index->name == TEMP_INDEX_PREFIX assertion failure. Bug #18723872): https://forums.mysql.com/read.php?3,621060,621060

            murrayw24 Murray Williams added a comment - It seems MySQL 5.7.5 fixes a similar looking bug that was introduced in MySQL 5.7.4 for cursor->index->name == TEMP_INDEX_PREFIX assertion failure. Bug #18723872): https://forums.mysql.com/read.php?3,621060,621060

            murrayw24, I do not think that the one-line change that I reviewed or the fix that introduced the regression are related to this. MySQL 5.7.9 (which contains the fix) was merged to MariaDB Server 10.2.2, while MariaDB Server 10.1 is based on the InnoDB of MySQL 5.6.

            While there have been bugs that easily cause inconsistency between indexes (MDEV-11927 could be one of them), I believe that there exists a hard-to-reproduce bug in all InnoDB versions. We never got a reproducible reasonably small test case internally at Oracle either. If only we could reproduce it more easily, we could test if it goes away with innodb_change_buffering=none.

            marko Marko Mäkelä added a comment - murrayw24 , I do not think that the one-line change that I reviewed or the fix that introduced the regression are related to this. MySQL 5.7.9 (which contains the fix) was merged to MariaDB Server 10.2.2, while MariaDB Server 10.1 is based on the InnoDB of MySQL 5.6. While there have been bugs that easily cause inconsistency between indexes ( MDEV-11927 could be one of them), I believe that there exists a hard-to-reproduce bug in all InnoDB versions. We never got a reproducible reasonably small test case internally at Oracle either. If only we could reproduce it more easily, we could test if it goes away with innodb_change_buffering=none.
            marko Marko Mäkelä added a comment - - edited

            murrayw24, given that you are using 10.1, you cannot be hitting MDEV-11927, which affects 10.2.3 and 10.2.4 only.
            Do you have a backup of the files right before they were updated to MariaDB 10.1.20? I would like to repeat this in a controlled fashion, so that I can start work on a reduced test case and a fix.

            marko Marko Mäkelä added a comment - - edited murrayw24 , given that you are using 10.1, you cannot be hitting MDEV-11927 , which affects 10.2.3 and 10.2.4 only. Do you have a backup of the files right before they were updated to MariaDB 10.1.20? I would like to repeat this in a controlled fashion, so that I can start work on a reduced test case and a fix.
            murrayw24 Murray Williams added a comment - - edited

            marko, given that it was several weeks between the upgrade and this problem appearing, I'm not sure we still have any backups, but I will take a look

            murrayw24 Murray Williams added a comment - - edited marko , given that it was several weeks between the upgrade and this problem appearing, I'm not sure we still have any backups, but I will take a look

            Hi marko,
            I have the following artifacts still available:

            • The results of running mysql_upgrade after the MariaDB installation
            • The full .err log file since installing MariaDB
            • Backups of the mysql DB and the actual DB schemas post-installation but before any corruption in the schema became apparent
            • The server in it's current state with 2 db schemas corrupted
            • A backup of the entire database from December 201*5* which was probably taken prior to an upgrade from MySQL 5.5 to 5.6

            Please let me know if any of this is of any use to you in diagnosing what has gone wrong.
            Thanks,
            Murray

            murrayw24 Murray Williams added a comment - Hi marko , I have the following artifacts still available: The results of running mysql_upgrade after the MariaDB installation The full .err log file since installing MariaDB Backups of the mysql DB and the actual DB schemas post-installation but before any corruption in the schema became apparent The server in it's current state with 2 db schemas corrupted A backup of the entire database from December 201*5* which was probably taken prior to an upgrade from MySQL 5.5 to 5.6 Please let me know if any of this is of any use to you in diagnosing what has gone wrong. Thanks, Murray

            murrayw24, could you create a new instance using the backup from December 2015? Issue CHECK TABLE on every InnoDB table.
            If no corruption is reported, we should perhaps look at later query logs or binlogs to figure out what kind of a combination of SQL operations could have caused the corruption.
            If the backup fails these CHECK TABLE checks, then it should have been corrupted earlier. Theoretically, there could also be a bug in MariaDB 10.1 that corrupts the backup straight away. To rule this out, you could try the CHECK TABLE using MySQL 5.5 or 5.6, after restoring the backup again, of course.

            marko Marko Mäkelä added a comment - murrayw24 , could you create a new instance using the backup from December 2015? Issue CHECK TABLE on every InnoDB table. If no corruption is reported, we should perhaps look at later query logs or binlogs to figure out what kind of a combination of SQL operations could have caused the corruption. If the backup fails these CHECK TABLE checks, then it should have been corrupted earlier. Theoretically, there could also be a bug in MariaDB 10.1 that corrupts the backup straight away. To rule this out, you could try the CHECK TABLE using MySQL 5.5 or 5.6, after restoring the backup again, of course.
            murrayw24 Murray Williams added a comment - - edited

            Hi marko,
            Here's what I think you're asking me to do:

            1. Create a new instance of MariaDB 10.1.20 (on the server where we have seen this problem) using MySQL Sandbox
            2. Import the December 2015 backups for the mysql schema and the schemas that have become corrupted in the current instance
            3. Run CHECK TABLE against all tables in all schemas
            4. If any of the CHECK TABLE statements fail:
              • Create a new instance of MySQL 5.6 (on the server where we have seen this problem) using MySQL Sandbox
              • Import the December 2015 backups for the mysql schema and the schemas that have become corrupted in the current instance
              • Run CHECK TABLE against all tables in all schemas

            Please could you let me know if I've correctly understood and let me know either way.

            murrayw24 Murray Williams added a comment - - edited Hi marko , Here's what I think you're asking me to do: Create a new instance of MariaDB 10.1.20 (on the server where we have seen this problem) using MySQL Sandbox Import the December 2015 backups for the mysql schema and the schemas that have become corrupted in the current instance Run CHECK TABLE against all tables in all schemas If any of the CHECK TABLE statements fail: Create a new instance of MySQL 5.6 (on the server where we have seen this problem) using MySQL Sandbox Import the December 2015 backups for the mysql schema and the schemas that have become corrupted in the current instance Run CHECK TABLE against all tables in all schemas Please could you let me know if I've correctly understood and let me know either way.

            Hi murrayw24, yes, that is what I am asking you to do.

            marko Marko Mäkelä added a comment - Hi murrayw24 , yes, that is what I am asking you to do.
            murrayw24 Murray Williams added a comment - - edited

            Hi marko,
            I decided to follow a more thorough path as follows:

            1. Created a new instance of MySQL 5.6.34 (on the server where we have seen this problem) using MySQL Sandbox
            2. Configured it as per our typical config settings
            3. Imported the December 2015 mysqldump of the mysql schema and one of the schemas ("v4stgrelnest") that had become corrupted in the current instance
            4. Ran mysql_check against mysql and v4stgrelnest schemas
              • All reported OK
            5. Stopped the new MySQL 5.6.34 instance
            6. Created a new instance of MariaDB 10.1.20 (on the server where we have seen this problem) using MySQL Sandbox
            7. Configured it as per our typical config settings
            8. Pointed it at the data folder from the MySQL 5.6.34
            9. Started this new MariaDB 10.1.20 instance. Got the following errors (which I assume are minor):
              • Missing system table mysql.roles_mapping; please run mysql_upgrade to create it
              • Incorrect definition of table mysql.event: expected column 'sql_mode' at position 14 to have type...
              • mysqld: Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler
              • Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table 'mysql.gtid_slave_pos' doesn't exist
            10. Ran mysql_upgrade
              • There were a few errors for views but all tables reported OK
              • The err file had the following error: Incorrect definition of table mysql.proc: expected column 'sql_mode' at position 14 to have type...
            11. Ran mysql_check against mysql and v4stgrelnest schemas
              • All reported OK
            12. Deleted the incorrectly defined views
            13. Restarted the database
              • No errors in logs
            14. Ran mysql_upgrade --force
              • Everything reported OK, no errors in logs
            15. Ran the alter table scripts that caused/revealed the schema corruption last time
              • Everything reported OK, no errors in logs
            16. Ran mysql_check against mysql and v4stgrelnest schemas
              • All reported OK

            I have kept a detailed record of the commands that I ran and the output from the checks, etc. Please let me know if you'd like me to email these to you.

            Is there anything else you would like me to try?

            Thanks,
            Murray

            murrayw24 Murray Williams added a comment - - edited Hi marko , I decided to follow a more thorough path as follows: Created a new instance of MySQL 5.6.34 (on the server where we have seen this problem) using MySQL Sandbox Configured it as per our typical config settings Imported the December 2015 mysqldump of the mysql schema and one of the schemas ("v4stgrelnest") that had become corrupted in the current instance Ran mysql_check against mysql and v4stgrelnest schemas All reported OK Stopped the new MySQL 5.6.34 instance Created a new instance of MariaDB 10.1.20 (on the server where we have seen this problem) using MySQL Sandbox Configured it as per our typical config settings Pointed it at the data folder from the MySQL 5.6.34 Started this new MariaDB 10.1.20 instance. Got the following errors (which I assume are minor): Missing system table mysql.roles_mapping; please run mysql_upgrade to create it Incorrect definition of table mysql.event: expected column 'sql_mode' at position 14 to have type... mysqld: Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table 'mysql.gtid_slave_pos' doesn't exist Ran mysql_upgrade There were a few errors for views but all tables reported OK The err file had the following error: Incorrect definition of table mysql.proc: expected column 'sql_mode' at position 14 to have type... Ran mysql_check against mysql and v4stgrelnest schemas All reported OK Deleted the incorrectly defined views Restarted the database No errors in logs Ran mysql_upgrade --force Everything reported OK, no errors in logs Ran the alter table scripts that caused/revealed the schema corruption last time Everything reported OK, no errors in logs Ran mysql_check against mysql and v4stgrelnest schemas All reported OK I have kept a detailed record of the commands that I ran and the output from the checks, etc. Please let me know if you'd like me to email these to you. Is there anything else you would like me to try? Thanks, Murray

            Hi Murray, thank you very much for your efforts.
            I am afraid that this corruption is very difficult to trigger. If it is related to change buffering like I suspect, it would only trigger in specific workloads.
            The InnoDB change buffer is used for buffering changes to the leaf pages of non-unique secondary indexes when those leaf pages do not happen to be already in the buffer pool. If there are index scans or lookups, the pages would be read into the buffer pool and any previously buffered changes would be merged, and any future changes would be applied directly to the pages as long as they reside in the buffer pool.

            To add insult to the injury, one source of input to the change buffer (starting with MySQL 5.5) is the purge of transaction history. This purge process is nondeterministic as well. So, we would have two background processes that are designed to be invisible to the SQL connections but whose scheduling is dependent on the SQL workload.

            I have no evidence that my hypothesis is correct. I can only hope that someone who hits this bug reasonably often could

            SET GLOBAL innodb_change_buffering=none;
            

            and report if this makes the problem go away. Note: if the dataset is already corrupted, this will not heal it (DROP INDEX followed by ALTER TABLE…ADD INDEX… will). It might only prevent future corruption.

            marko Marko Mäkelä added a comment - Hi Murray, thank you very much for your efforts. I am afraid that this corruption is very difficult to trigger. If it is related to change buffering like I suspect, it would only trigger in specific workloads. The InnoDB change buffer is used for buffering changes to the leaf pages of non-unique secondary indexes when those leaf pages do not happen to be already in the buffer pool. If there are index scans or lookups, the pages would be read into the buffer pool and any previously buffered changes would be merged, and any future changes would be applied directly to the pages as long as they reside in the buffer pool. To add insult to the injury, one source of input to the change buffer ( starting with MySQL 5.5 ) is the purge of transaction history. This purge process is nondeterministic as well. So, we would have two background processes that are designed to be invisible to the SQL connections but whose scheduling is dependent on the SQL workload. I have no evidence that my hypothesis is correct. I can only hope that someone who hits this bug reasonably often could SET GLOBAL innodb_change_buffering=none; and report if this makes the problem go away. Note: if the dataset is already corrupted, this will not heal it (DROP INDEX followed by ALTER TABLE…ADD INDEX… will). It might only prevent future corruption.

            Hi marko,
            Thanks for getting back to me.
            The corruption happened when we were running a script which dropped a lot of (duplicate) indexes and foreign keys in quick succession, which sounds like it would fit with your theory of a problem with change buffering. I am pretty sure the corruption happened on different tables for different databases, even though the schemas and the schema change scripts would have been pretty much the same, which again would appear to fit with a concurrency issue.
            Thanks,
            Murray

            murrayw24 Murray Williams added a comment - Hi marko , Thanks for getting back to me. The corruption happened when we were running a script which dropped a lot of (duplicate) indexes and foreign keys in quick succession, which sounds like it would fit with your theory of a problem with change buffering. I am pretty sure the corruption happened on different tables for different databases, even though the schemas and the schema change scripts would have been pretty much the same, which again would appear to fit with a concurrency issue. Thanks, Murray

            Hi again marko,
            Just one other thought: I believe that some of the schemas that got corrupted did so when foreign keys (rather than indexes) were being dropped (although the drop foreign key statements were interleaved with drop index statements). Does this still fit with your theory?
            Thanks,
            Murray

            murrayw24 Murray Williams added a comment - Hi again marko , Just one other thought: I believe that some of the schemas that got corrupted did so when foreign keys (rather than indexes) were being dropped (although the drop foreign key statements were interleaved with drop index statements). Does this still fit with your theory? Thanks, Murray
            marko Marko Mäkelä made changes -

            Hi murrayw24, sorry, I missed your updates.
            DROP FOREIGN KEY should be a fast schema-only change.
            Also, dropping secondary indexes should actually be the correct course of action. You would want to drop the secondary indexes that are inconsistent with the clustered index. In the original reported message, it would be

            ALTER TABLE db1.tab1 DROP INDEX `column`;
            

            The clustered index is where the actual data is stored.

            One idea why the issues might only have been reported after the ALTER TABLE operations would be if one of the ALTER TABLE statements was executed with ALGORITHM=COPY instead of ALGORITHM=INPLACE. This could for example be because of old_alter_table=0 being in effect (if MariaDB supports that option). Another idea would be that the operations caused a ‘stuck’ purge (MDEV-11802) to be ‘unstuck’.

            marko Marko Mäkelä added a comment - Hi murrayw24 , sorry, I missed your updates. DROP FOREIGN KEY should be a fast schema-only change. Also, dropping secondary indexes should actually be the correct course of action. You would want to drop the secondary indexes that are inconsistent with the clustered index. In the original reported message, it would be ALTER TABLE db1.tab1 DROP INDEX `column`; The clustered index is where the actual data is stored. One idea why the issues might only have been reported after the ALTER TABLE operations would be if one of the ALTER TABLE statements was executed with ALGORITHM=COPY instead of ALGORITHM=INPLACE. This could for example be because of old_alter_table=0 being in effect (if MariaDB supports that option). Another idea would be that the operations caused a ‘stuck’ purge ( MDEV-11802 ) to be ‘unstuck’.
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            thuben Thomas Nilsson made changes -
            Attachment error.log [ 44008 ]

            FYI: I am still seeing a lot of these crashes in 10.1.26-MariaDB-1~stretch. I am on a Debian 9 system were I have downloaded the Mariadb from the official repository to try to fix the same problem in the native Debian version. My understanding is the it should be fixed by now but obviously not?

            error.log

            thuben Thomas Nilsson added a comment - FYI: I am still seeing a lot of these crashes in 10.1.26-MariaDB-1~stretch. I am on a Debian 9 system were I have downloaded the Mariadb from the official repository to try to fix the same problem in the native Debian version. My understanding is the it should be fixed by now but obviously not? error.log

            thuben, there has been no fix to address this issue, either in MySQL or MariaDB.
            My comment from 2017-01-23 is still the latest information on this.
            The corruption is very hard to repeat.
            My hypothesis is that setting innodb_change_buffering=none could prevent these problems. My thinking is that because the change buffer only kicks in when the dataset is too big to fit in the buffer pool. triggering this bug would require very suitable access patterns and timing.
            Of course, setting innodb_change_buffering=none would not help against any hidden corruption that previous use of the change buffer may have caused.

            Even if we got a test case contribution for repeating this problem, it would likely take considerable effort to track down the problem, because considerable time might pass between the original writes to the change buffer and the merge followed by the detection of the corruption.

            marko Marko Mäkelä added a comment - thuben , there has been no fix to address this issue, either in MySQL or MariaDB. My comment from 2017-01-23 is still the latest information on this. The corruption is very hard to repeat. My hypothesis is that setting innodb_change_buffering=none could prevent these problems. My thinking is that because the change buffer only kicks in when the dataset is too big to fit in the buffer pool. triggering this bug would require very suitable access patterns and timing. Of course, setting innodb_change_buffering=none would not help against any hidden corruption that previous use of the change buffer may have caused. Even if we got a test case contribution for repeating this problem, it would likely take considerable effort to track down the problem, because considerable time might pass between the original writes to the change buffer and the merge followed by the detection of the corruption.

            Thank you for your quick answer!

            In my case it seems to have happen when I did the Debian 8 to Debian 9 were Mariadb is introduced in Debian. My experience is in line with what described by @Murray Williams above.

            Nor setting innodb_change_buffering=none or any of the other workaround mentioned worked for me. I am more into that the tables are being corrupted during the transition from Mysql to MariaDB...

            I have now wiped the failing database completely and re-installed a backup, Since then I have not seen the crashes: I will continue to more actively monitor the logs to see what is happening.

            thuben Thomas Nilsson added a comment - Thank you for your quick answer! In my case it seems to have happen when I did the Debian 8 to Debian 9 were Mariadb is introduced in Debian. My experience is in line with what described by @Murray Williams above. Nor setting innodb_change_buffering=none or any of the other workaround mentioned worked for me. I am more into that the tables are being corrupted during the transition from Mysql to MariaDB... I have now wiped the failing database completely and re-installed a backup, Since then I have not seen the crashes: I will continue to more actively monitor the logs to see what is happening.

            thuben, I believe that you experienced a corruption that had been hidden for a long time before upgrading.
            My history of InnoDB internals development dates back to 2003, and I was developing InnoDB under MySQL until I joined MariaDB late 2016. I implemented the delete buffering in MySQL 5.5.

            There are a few internal Oracle bugs (unaccessible to the public) on this same issue, and to my knowledge, no progress has been made, because the corruption is so hard to repeat and narrow down.
            While there are some file format differences between MariaDB and MySQL (mostly related to encryption and page_compressed, which were introduced in MariaDB 10.1), I do not believe that the problems could be caused by that. As far as I can tell, the last bug fix for the change buffer ([ignoring the two changes in MySQL 5.7 that were mentioned earlier) is this comment clarification in MySQL 5.5.44, 5.6.25, 5.7.8, approved by me in March 2015.
            At the end of MySQL Bug #61104 there is a list of fixed bugs that have caused change buffer corruption. If you were running a server version with one of these bugs present, it is of course possible that some data got corrupted. In addition to these fixed bugs, I believe that there may still be some open bug that causes such corruption.

            Once more, setting innodb_change_buffering=none does not help if the database was already corrupted. It only prevents future use of the change buffer.

            I would very much appreciate a copy of a database before the failed upgrade, so that I could at least confirm my educated guess that the change buffer is playing a role in the corruption.

            marko Marko Mäkelä added a comment - thuben , I believe that you experienced a corruption that had been hidden for a long time before upgrading. My history of InnoDB internals development dates back to 2003, and I was developing InnoDB under MySQL until I joined MariaDB late 2016 . I implemented the delete buffering in MySQL 5.5. There are a few internal Oracle bugs (unaccessible to the public) on this same issue, and to my knowledge, no progress has been made, because the corruption is so hard to repeat and narrow down. While there are some file format differences between MariaDB and MySQL (mostly related to encryption and page_compressed, which were introduced in MariaDB 10.1), I do not believe that the problems could be caused by that. As far as I can tell, the last bug fix for the change buffer ([ignoring the two changes in MySQL 5.7 that were mentioned earlier ) is this comment clarification in MySQL 5.5.44, 5.6.25, 5.7.8 , approved by me in March 2015. At the end of MySQL Bug #61104 there is a list of fixed bugs that have caused change buffer corruption. If you were running a server version with one of these bugs present, it is of course possible that some data got corrupted. In addition to these fixed bugs, I believe that there may still be some open bug that causes such corruption. Once more, setting innodb_change_buffering=none does not help if the database was already corrupted. It only prevents future use of the change buffer. I would very much appreciate a copy of a database before the failed upgrade, so that I could at least confirm my educated guess that the change buffer is playing a role in the corruption.

            Thanks for your interesting insights!

            My reason for believing that is was related to the upgrade is that I have now seen the same kind of problem on another of the databases on the same server running the same instance of mysql / mariadb. I think I solved the second onet by dumping the database using mysqldump, deleting the database, creating it again, and read back the mysqldump.

            I don't have a copy of the database before the "failing" mysql -> mariadb upgrade. I do however have a image of the virtual machine were this database is as it was before the crash from last week. I assume you need the raw database files? If so I will try to dig them out!

            thuben Thomas Nilsson added a comment - Thanks for your interesting insights! My reason for believing that is was related to the upgrade is that I have now seen the same kind of problem on another of the databases on the same server running the same instance of mysql / mariadb. I think I solved the second onet by dumping the database using mysqldump, deleting the database, creating it again, and read back the mysqldump. I don't have a copy of the database before the "failing" mysql -> mariadb upgrade. I do however have a image of the virtual machine were this database is as it was before the crash from last week. I assume you need the raw database files? If so I will try to dig them out!

            thuben, yes, I would want the raw database files as they were after shutdown. The minimum would be the system tablespace (ibdata* files) and the *.ibd of one table for which corruption would be reported by shutdown. Ideally, I would want a set of files with which the problem can be reproduced.

            By the way, mysqldump avoids accessing the secondary indexes. Change buffering only applies to non-unique secondary indexes.
            (Side note: if you SET unique_checks=0 and then insert duplicate keys to unique secondary indexes, the duplicates will not be detected if the inserts were buffered.
            mysqldump is generating this risky statement. By using unique_checks=0 and inserting duplicates into secondary indexes you could get corrupted unique indexes.
            But I believe that this form of corruption has been reported for non-unique indexes too, so the unique_checks=0 cannot explain all this.)

            marko Marko Mäkelä added a comment - thuben , yes, I would want the raw database files as they were after shutdown. The minimum would be the system tablespace (ibdata* files) and the *.ibd of one table for which corruption would be reported by shutdown. Ideally, I would want a set of files with which the problem can be reproduced. By the way, mysqldump avoids accessing the secondary indexes. Change buffering only applies to non-unique secondary indexes. (Side note: if you SET unique_checks=0 and then insert duplicate keys to unique secondary indexes, the duplicates will not be detected if the inserts were buffered. mysqldump is generating this risky statement. By using unique_checks=0 and inserting duplicates into secondary indexes you could get corrupted unique indexes. But I believe that this form of corruption has been reported for non-unique indexes too, so the unique_checks=0 cannot explain all this.)

            I will send you a private mail in order to discuss how to send the files to you.

            thuben Thomas Nilsson added a comment - I will send you a private mail in order to discuss how to send the files to you.

            In the dataset that thuben submitted, CHECK TABLE in MariaDB 10.1 reported 3 corrupted tables, each with corrupted non-unique secondary indexes, so the change buffer could be possible to blame.

            For table 1, "Index 'A' contains 1693 entries, should be 1698."
            For table 2, "Index 'B' contains 60577 entries, should be 60576."
            For table 3: "Index 'C' contains 28437 entries, should be 28438.", "Index 'D' contains 28437 entries, should be 28438."

            I obfuscated the table and index names to protect any confidential data.

            Next, I will try to see if the CHECK TABLE triggered any change buffer merge for these tables. If not, it will be very challenging to guess where the corruption could come from. I can also try to dump and match the 1693+1698 records for the first table, because it is so small.

            marko Marko Mäkelä added a comment - In the dataset that thuben submitted, CHECK TABLE in MariaDB 10.1 reported 3 corrupted tables, each with corrupted non-unique secondary indexes, so the change buffer could be possible to blame. For table 1, "Index 'A' contains 1693 entries, should be 1698." For table 2, "Index 'B' contains 60577 entries, should be 60576." For table 3: "Index 'C' contains 28437 entries, should be 28438.", "Index 'D' contains 28437 entries, should be 28438." I obfuscated the table and index names to protect any confidential data. Next, I will try to see if the CHECK TABLE triggered any change buffer merge for these tables. If not, it will be very challenging to guess where the corruption could come from. I can also try to dump and match the 1693+1698 records for the first table, because it is so small.

            In the submitted dataset, the change buffer was already empty.
            I dumped the contents of both indexes (PRIMARY and the secondary index) of the first table, using CHECK TABLE and this patch:

            diff --git a/storage/xtradb/btr/btr0btr.cc b/storage/xtradb/btr/btr0btr.cc
            index 85a083aaee0..be737de336c 100644
            --- a/storage/xtradb/btr/btr0btr.cc
            +++ b/storage/xtradb/btr/btr0btr.cc
            @@ -4698,6 +4698,9 @@ btr_index_page_validate(
             
             	page_cur_move_to_next(&cur);
             
            +	fprintf(stderr, "index %s page %u\n",
            +		index->name, cur.block->page.offset);
            +
             	for (;;) {
             		if (page_cur_is_after_last(&cur)) {
             
            @@ -4709,6 +4712,9 @@ btr_index_page_validate(
             			return(FALSE);
             		}
             
            +		rec_print(stderr, cur.rec, index);
            +		putc('\n', stderr);
            +
             		/* Verify that page_rec_get_nth_const() is correctly
             		retrieving each record. */
             		DBUG_EXECUTE_IF("check_table_rec_next",
            

            Next, I will try to find the non-matching records (ones that only exist in the PRIMARY index, but not in the secondary index, or vice versa).

            marko Marko Mäkelä added a comment - In the submitted dataset, the change buffer was already empty. I dumped the contents of both indexes (PRIMARY and the secondary index) of the first table, using CHECK TABLE and this patch: diff --git a/storage/xtradb/btr/btr0btr.cc b/storage/xtradb/btr/btr0btr.cc index 85a083aaee0..be737de336c 100644 --- a/storage/xtradb/btr/btr0btr.cc +++ b/storage/xtradb/btr/btr0btr.cc @@ -4698,6 +4698,9 @@ btr_index_page_validate( page_cur_move_to_next(&cur); + fprintf(stderr, "index %s page %u\n", + index->name, cur.block->page.offset); + for (;;) { if (page_cur_is_after_last(&cur)) { @@ -4709,6 +4712,9 @@ btr_index_page_validate( return(FALSE); } + rec_print(stderr, cur.rec, index); + putc('\n', stderr); + /* Verify that page_rec_get_nth_const() is correctly retrieving each record. */ DBUG_EXECUTE_IF("check_table_rec_next", Next, I will try to find the non-matching records (ones that only exist in the PRIMARY index, but not in the secondary index, or vice versa).

            I copied the error log output for the CHECK TABLE with the above patch into two files.
            In the PRIMARY KEY of the first table, only one value (0) has been assigned to the INT NOT NULL DEFAULT 0 column of the corrupted secondary index:

            grep '^ 4:' mdev-9663-primary.txt|uniq -c
               1698  4: len 4; hex 80000000; asc     ;;
            

            In the secondary index, there is also one value for this column:

            grep '^ 0:' mdev-9663-secondary.txt|uniq -c
               1693  0: len 4; hex 80000000; asc     ;;
            

            None of the records are delete-marked (info_bits is always 0, never 32). Most records in the PRIMARY key were inserted; 10 were updated (or inserted on top of purgeable delete-marked records):

            grep '^ 2:.*hex [0-7]' mdev-9663-primary.txt|wc -l
            10
            

            To match the records, it suffices to extract the single PRIMARY KEY column (varchar(255) NOT NULL) from both indexes, and match them with each other:

            diff -u <(sed -ne 's/^ 0: .*; hex \([0-9a-f]*\);.*/\1/p' mdev-9663-primary.txt) <(sed -ne 's/^ 1: .*; hex \([0-9a-f]*\);.*/\1/p' mdev-9663-secondary.txt)
            

            Because all secondary index key values are the same, these keys must be in the same order in both indexes (no sorting needed).
            There are 5 records in the PRIMARY index that are missing from the secondary index. There are no ‘extra’ records in the secondary index.

            For the first such key, I made a very alarming finding: there are 10 binary-equal copies of the same PRIMARY KEY in the clustered index. This should be simply impossible. Why was a duplicate key error not reported? An attempt to insert a record when the key already exists should have one of two outcomes (assuming that there is no locking conflict): If the existing record was not delete-marked, report a duplicate key error. Else, it must be a purgeable delete-marked record that was not yet purged, and we would "update in place" this delete-marked record to insert our own record.

            All the 10 copies of the first key were fresh inserts (the most significant bit of DB_ROLL_PTR is set).
            2 of these copies were missing from the secondary index.

            For the second problematic key, there are 6 copies, again fresh inserts.
            1 copy is missing from the secondary index.

            For the third problematic key, there are 15 copies in the PRIMARY index, 14 in the secondary index. Again, fresh inserts.

            For the fourth problematic key, there are 5 copies in the PRIMARY index, 4 in the secondary index.

            We must find out why the PRIMARY KEY was corrupted (duplicates were inserted). And we must add a check for these duplicates to CHECK TABLE and possibly other B-tree code.
            In logic, anything can be inferred from a controversy. In computer science, this is often formulated as ‘garbage in, garbage out’. Once something gets corrupted and we carry on, the corruption can get worse from that point on. For this corruption, I would not blame the change buffer; this must be caused by something else.

            marko Marko Mäkelä added a comment - I copied the error log output for the CHECK TABLE with the above patch into two files. In the PRIMARY KEY of the first table, only one value (0) has been assigned to the INT NOT NULL DEFAULT 0 column of the corrupted secondary index: grep '^ 4:' mdev-9663-primary.txt|uniq -c 1698 4: len 4; hex 80000000; asc ;; In the secondary index, there is also one value for this column: grep '^ 0:' mdev-9663-secondary.txt|uniq -c 1693 0: len 4; hex 80000000; asc ;; None of the records are delete-marked (info_bits is always 0, never 32). Most records in the PRIMARY key were inserted; 10 were updated (or inserted on top of purgeable delete-marked records): grep '^ 2:.*hex [0-7]' mdev-9663-primary.txt|wc -l 10 To match the records, it suffices to extract the single PRIMARY KEY column (varchar(255) NOT NULL) from both indexes, and match them with each other: diff -u <(sed -ne 's/^ 0: .*; hex \([0-9a-f]*\);.*/\1/p' mdev-9663-primary.txt) <(sed -ne 's/^ 1: .*; hex \([0-9a-f]*\);.*/\1/p' mdev-9663-secondary.txt) Because all secondary index key values are the same, these keys must be in the same order in both indexes (no sorting needed). There are 5 records in the PRIMARY index that are missing from the secondary index. There are no ‘extra’ records in the secondary index. For the first such key, I made a very alarming finding: there are 10 binary-equal copies of the same PRIMARY KEY in the clustered index. This should be simply impossible. Why was a duplicate key error not reported? An attempt to insert a record when the key already exists should have one of two outcomes (assuming that there is no locking conflict): If the existing record was not delete-marked, report a duplicate key error. Else, it must be a purgeable delete-marked record that was not yet purged, and we would "update in place" this delete-marked record to insert our own record. All the 10 copies of the first key were fresh inserts (the most significant bit of DB_ROLL_PTR is set). 2 of these copies were missing from the secondary index. For the second problematic key, there are 6 copies, again fresh inserts. 1 copy is missing from the secondary index. For the third problematic key, there are 15 copies in the PRIMARY index, 14 in the secondary index. Again, fresh inserts. For the fourth problematic key, there are 5 copies in the PRIMARY index, 4 in the secondary index. We must find out why the PRIMARY KEY was corrupted (duplicates were inserted). And we must add a check for these duplicates to CHECK TABLE and possibly other B-tree code. In logic, anything can be inferred from a controversy. In computer science, this is often formulated as ‘garbage in, garbage out’. Once something gets corrupted and we carry on, the corruption can get worse from that point on. For this corruption, I would not blame the change buffer; this must be caused by something else.

            Sorry, my above analysis is flawed. I missed that the diagnostic function rec_print() is only displaying the first 30 bytes of the data. I must redump all of the data, and not just compare the 30-byte prefixes of the VARCHAR(255) column.

            marko Marko Mäkelä added a comment - Sorry, my above analysis is flawed. I missed that the diagnostic function rec_print() is only displaying the first 30 bytes of the data. I must redump all of the data, and not just compare the 30-byte prefixes of the VARCHAR(255) column.

            With this additional patch, I see 5 unique primary keys records that are only present in the PRIMARY index, and missing from the secondary index:

            diff --git a/storage/xtradb/rem/rem0rec.cc b/storage/xtradb/rem/rem0rec.cc
            index c62e8c90434..1875fac0cd6 100644
            --- a/storage/xtradb/rem/rem0rec.cc
            +++ b/storage/xtradb/rem/rem0rec.cc
            @@ -1849,7 +1849,7 @@ rec_print_comp(
             		fprintf(file, " %lu:", (ulong) i);
             
             		if (len != UNIV_SQL_NULL) {
            -			if (len <= 30) {
            +			if (len <= 768) {
             
             				ut_print_buf(file, data, len);
             			} else if (rec_offs_nth_extern(offsets, i)) {
            

            All 5 records were fresh inserts in the PRIMARY index (the high-order bit of DB_ROLL_PTR is set, that is, no updates to these records were ever committed, and the original inserts did not replace any purgeable delete-marked record).
            How could the records end up missing from the secondary index? InnoDB would implement INSERT operations like this:

            1. Write an insert_undo record (so that the record can be removed in case of ROLLBACK)
            2. Insert into the PRIMARY index
            3. Insert into each secondary index (one mini-transaction per index), possibly via the change buffer.
            4. On commit, discard the insert_undo records.

            If the transaction were rolled back, InnoDB would process the undo log, look up the index records corresponding to each undo record, and undo the changes. Finally, after the undo log was emptied, the ‘empty’ transaction would be committed.

            In the dataset, there were no recovered (incomplete) transactions, so the inserts must have completed. We could lose buffered inserts if innodb_force_recovery was ever set to the value 4 or more, but I do not think that this would be the case. Perhaps a buffered insert was lost due to some other reason (perhaps it was never written to the change buffer tree)?

            We are a little wiser now, but we still need a way to reproduce this corruption. My primary suspect is the change buffer.

            marko Marko Mäkelä added a comment - With this additional patch, I see 5 unique primary keys records that are only present in the PRIMARY index, and missing from the secondary index: diff --git a/storage/xtradb/rem/rem0rec.cc b/storage/xtradb/rem/rem0rec.cc index c62e8c90434..1875fac0cd6 100644 --- a/storage/xtradb/rem/rem0rec.cc +++ b/storage/xtradb/rem/rem0rec.cc @@ -1849,7 +1849,7 @@ rec_print_comp( fprintf(file, " %lu:", (ulong) i); if (len != UNIV_SQL_NULL) { - if (len <= 30) { + if (len <= 768) { ut_print_buf(file, data, len); } else if (rec_offs_nth_extern(offsets, i)) { All 5 records were fresh inserts in the PRIMARY index (the high-order bit of DB_ROLL_PTR is set, that is, no updates to these records were ever committed, and the original inserts did not replace any purgeable delete-marked record). How could the records end up missing from the secondary index? InnoDB would implement INSERT operations like this: Write an insert_undo record (so that the record can be removed in case of ROLLBACK) Insert into the PRIMARY index Insert into each secondary index (one mini-transaction per index), possibly via the change buffer. On commit, discard the insert_undo records. If the transaction were rolled back, InnoDB would process the undo log, look up the index records corresponding to each undo record, and undo the changes. Finally, after the undo log was emptied, the ‘empty’ transaction would be committed. In the dataset, there were no recovered (incomplete) transactions, so the inserts must have completed. We could lose buffered inserts if innodb_force_recovery was ever set to the value 4 or more, but I do not think that this would be the case. Perhaps a buffered insert was lost due to some other reason (perhaps it was never written to the change buffer tree)? We are a little wiser now, but we still need a way to reproduce this corruption. My primary suspect is the change buffer.

            One thing that I forgot: While the inserts are normally only buffered for non-unique secondary indexes (SET unique_checks=0 overrides that and risks corrupting unique indexes if duplicates are inserted), delete-marks and purges can be buffered for any secondary index, including unique ones.

            marko Marko Mäkelä added a comment - One thing that I forgot: While the inserts are normally only buffered for non-unique secondary indexes (SET unique_checks=0 overrides that and risks corrupting unique indexes if duplicates are inserted), delete-marks and purges can be buffered for any secondary index, including unique ones.

            As discussed separately in a private mail thread the following was run as a part of daily maintenance on the mysql instance where I originally saw the crash:

            mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log flush-engine-log flush-general-log flush-slow-log
            

            (I assume that flush and purge are equal in this context)

            thuben Thomas Nilsson added a comment - As discussed separately in a private mail thread the following was run as a part of daily maintenance on the mysql instance where I originally saw the crash: mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log flush-engine-log flush-general-log flush-slow-log (I assume that flush and purge are equal in this context)

            thuben, the InnoDB change buffer merge and the InnoDB purge of old transaction history are background operations that are mostly invisible to the user. The mysqladmin command that you quoted would appear to control some informational or diagnostic logs that have no direct connection with the InnoDB data or log files.

            marko Marko Mäkelä added a comment - thuben , the InnoDB change buffer merge and the InnoDB purge of old transaction history are background operations that are mostly invisible to the user. The mysqladmin command that you quoted would appear to control some informational or diagnostic logs that have no direct connection with the InnoDB data or log files.

            A possible (certainly not the only) cause of this bug is MDEV-13899 IMPORT TABLESPACE may corrupt ROW_FORMAT=REDUNDANT tables

            It is definitely not the only cause, because in the bug description, the diagnostic output says 'compact format'.

            marko Marko Mäkelä added a comment - A possible (certainly not the only) cause of this bug is MDEV-13899 IMPORT TABLESPACE may corrupt ROW_FORMAT=REDUNDANT tables It is definitely not the only cause, because in the bug description, the diagnostic output says 'compact format'.
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -

            thuben, I might have found an explanation to the corruption that you experienced. It is a bug that is present in all InnoDB versions:
            MDEV-13980 InnoDB fails to discard record lock when discarding an index page

            Unfortunately I have no test case. As far as I can tell, it requires a very improbable sequence of events. It is already very difficult to come up with an insertion and deletion sequence that causes a record deletion to lead into btr_discard_page() instead of a page merge. And you would need something (I do not know what) to be executed in the same transaction after the btr_discard_page() that would exploit the wrongly granted record lock.

            marko Marko Mäkelä added a comment - thuben , I might have found an explanation to the corruption that you experienced. It is a bug that is present in all InnoDB versions: MDEV-13980 InnoDB fails to discard record lock when discarding an index page Unfortunately I have no test case. As far as I can tell, it requires a very improbable sequence of events. It is already very difficult to come up with an insertion and deletion sequence that causes a record deletion to lead into btr_discard_page() instead of a page merge. And you would need something (I do not know what) to be executed in the same transaction after the btr_discard_page() that would exploit the wrongly granted record lock.
            thuben Thomas Nilsson added a comment - - edited

            marko thanks for the info. Unfortunately I have not seen anything in my test installation yet. If you find a test case, please let me know and I will give it a try!

            thuben Thomas Nilsson added a comment - - edited marko thanks for the info. Unfortunately I have not seen anything in my test installation yet. If you find a test case, please let me know and I will give it a try!

            thuben, I wonder if your corruption matches the comments in this corruption bug fix in MySQL 5.7.4 which is part of MariaDB 10.2 (and which is related to MDEV-13206).

            1. The table has one primary index, one unique secondary index and one non-unique secondary index.
            2. The INSERT ... ON DUPLICATE UPDATE ... is executed on the table.
            3. Insert into the clustered index reported DB_DUPLICATE_KEY. This error information is saved. We proceed to take gap locks in all
            unique secondary indexes.
            4. Insert into the unique secondary index reported DB_LOCK_WAIT.
            5. Step 4 is repeated from a higher layer row_ins(). When this is done, the earlier error information saved in step 3 is lost.
            6. Next instead of taking just gap locks or skipping non-unique secondary indexes, because of loss of information regarding the error already saved, an actual insert is performed on the non-unique secondary index. This triggers the assert.

            I plan to run the test case on 5.5, 10.0, 10.1 to see if this scenario is possible in those versions. So far, we did not seem to get reports of this bug for 10.2, but maybe earlier versions are being used more widely.

            marko Marko Mäkelä added a comment - thuben , I wonder if your corruption matches the comments in this corruption bug fix in MySQL 5.7.4 which is part of MariaDB 10.2 (and which is related to MDEV-13206 ). 1. The table has one primary index, one unique secondary index and one non-unique secondary index. 2. The INSERT ... ON DUPLICATE UPDATE ... is executed on the table. 3. Insert into the clustered index reported DB_DUPLICATE_KEY. This error information is saved. We proceed to take gap locks in all unique secondary indexes. 4. Insert into the unique secondary index reported DB_LOCK_WAIT. 5. Step 4 is repeated from a higher layer row_ins(). When this is done, the earlier error information saved in step 3 is lost. 6. Next instead of taking just gap locks or skipping non-unique secondary indexes, because of loss of information regarding the error already saved, an actual insert is performed on the non-unique secondary index. This triggers the assert. I plan to run the test case on 5.5, 10.0, 10.1 to see if this scenario is possible in those versions. So far, we did not seem to get reports of this bug for 10.2, but maybe earlier versions are being used more widely.
            marko Marko Mäkelä made changes -
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Marko Mäkelä [ marko ] Jan Lindström [ jplindst ]
            jplindst Jan Lindström (Inactive) made changes -
            Status Open [ 1 ] In Progress [ 3 ]

            commit c44ece7342f14498630e4ab403ae125971137457
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 12:56:54 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            MariaDB adjustments to test case innodb-replace-debug.

            commit f7b110bdc1fb0eb6b383f9647caa299de9d64aba
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 12:39:41 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            Imported missing test case from MySQL 5.7 for

            commit 25781c154396dbbc21023786aa3be070057d6999
            Author: Annamalai Gurusami <annamalai.gurusami@oracle.com>
            Date: Mon Feb 24 14:00:03 2014 +0530

            Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX

            MariaDB 5.5 does not seem to be affected.

            jplindst Jan Lindström (Inactive) added a comment - commit c44ece7342f14498630e4ab403ae125971137457 Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 12:56:54 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX MariaDB adjustments to test case innodb-replace-debug. commit f7b110bdc1fb0eb6b383f9647caa299de9d64aba Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 12:39:41 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX Imported missing test case from MySQL 5.7 for commit 25781c154396dbbc21023786aa3be070057d6999 Author: Annamalai Gurusami <annamalai.gurusami@oracle.com> Date: Mon Feb 24 14:00:03 2014 +0530 Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX MariaDB 5.5 does not seem to be affected.

            commit d8ccc61f76d56b761e52564701814739abc190d1
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 14:03:02 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            Add missing instrumentation to row0ins.cc.

            commit 93326ef051350787a3b289f68137365224a5e77a
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 13:21:07 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            MariaDB adjustments to test case innodb-replace-debug.

            MariaDB 10.0 does not seem to be affected.

            commit 923ea5dbf6644fab088e35122523b2b8ef03b7ea
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 13:18:22 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            Imported missing test case from MySQL 5.7 for

            commit 25781c154396dbbc21023786aa3be070057d6999
            Author: Annamalai Gurusami <annamalai.gurusami@oracle.com>
            Date: Mon Feb 24 14:00:03 2014 +0530

            Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX

            jplindst Jan Lindström (Inactive) added a comment - commit d8ccc61f76d56b761e52564701814739abc190d1 Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 14:03:02 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX Add missing instrumentation to row0ins.cc. commit 93326ef051350787a3b289f68137365224a5e77a Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 13:21:07 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX MariaDB adjustments to test case innodb-replace-debug. MariaDB 10.0 does not seem to be affected. commit 923ea5dbf6644fab088e35122523b2b8ef03b7ea Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 13:18:22 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX Imported missing test case from MySQL 5.7 for commit 25781c154396dbbc21023786aa3be070057d6999 Author: Annamalai Gurusami <annamalai.gurusami@oracle.com> Date: Mon Feb 24 14:00:03 2014 +0530 Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX

            commit d7349e204b873cd882666c2598b1ec1bf1490563
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 13:21:07 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            MariaDB adjustments to test case innodb-replace-debug and
            add missing instrumentation to row0ins.cc.

            MariaDB 10.1 does not seem to be affected.

            commit eeec64d75eb39155e0080f464c9f2103897dd809
            Author: Jan Lindström <jan.lindstrom@mariadb.com>
            Date: Thu Nov 16 13:18:22 2017 +0200

            MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX

            Imported missing test case from MySQL 5.7 for

            commit 25781c154396dbbc21023786aa3be070057d6999
            Author: Annamalai Gurusami <annamalai.gurusami@oracle.com>
            Date: Mon Feb 24 14:00:03 2014 +0530

            Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX

            jplindst Jan Lindström (Inactive) added a comment - commit d7349e204b873cd882666c2598b1ec1bf1490563 Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 13:21:07 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX MariaDB adjustments to test case innodb-replace-debug and add missing instrumentation to row0ins.cc. MariaDB 10.1 does not seem to be affected. commit eeec64d75eb39155e0080f464c9f2103897dd809 Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Thu Nov 16 13:18:22 2017 +0200 MDEV-9663 : InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX Imported missing test case from MySQL 5.7 for commit 25781c154396dbbc21023786aa3be070057d6999 Author: Annamalai Gurusami <annamalai.gurusami@oracle.com> Date: Mon Feb 24 14:00:03 2014 +0530 Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX

            Thus, 5,5, 10.0 and 10.1 are not effected.

            jplindst Jan Lindström (Inactive) added a comment - Thus, 5,5, 10.0 and 10.1 are not effected.

            Thank you, jplindst.
            So, MySQL 5.7.4 (and now MariaDB 10.2) fixed one source of secondary index corruption bugs.
            But there definitely are others, because all the corruptions reported here in MDEV-9663 seem to have been originated earlier than 10.2.

            Please continue by doing

            git bisect
            

            in MySQL 5.7 to see when Bug #17604730 was originally introduced. Maybe it will lead us to the right track to fixing the remaining issue.
            The bisect script will have to apply a source code patch. The last revision to bisect is 25781c154396dbbc21023786aa3be070057d6999~ (the parent of the bug fix in MySQL 5.7.4). Assuming that MySQL 5.6 is not affected, the first one is commit 8c603abc635d63e69ea55aefd15318160af89d8a (the very first commit to 5.7 that is not in 5.6).

            marko Marko Mäkelä added a comment - Thank you, jplindst . So, MySQL 5.7.4 (and now MariaDB 10.2) fixed one source of secondary index corruption bugs. But there definitely are others, because all the corruptions reported here in MDEV-9663 seem to have been originated earlier than 10.2. Please continue by doing git bisect in MySQL 5.7 to see when Bug #17604730 was originally introduced. Maybe it will lead us to the right track to fixing the remaining issue. The bisect script will have to apply a source code patch. The last revision to bisect is 25781c154396dbbc21023786aa3be070057d6999~ (the parent of the bug fix in MySQL 5.7.4). Assuming that MySQL 5.6 is not affected, the first one is commit 8c603abc635d63e69ea55aefd15318160af89d8a (the very first commit to 5.7 that is not in 5.6).
            marko Marko Mäkelä made changes -

            For the record, as noted in MDEV-15199, secondary indexes can also become corrupted in MariaDB 10.2.2 to 10.2.13 (and MySQL 5.7.2 to 5.7.21) because of FOREIGN KEY constraints with CASCADE or SET NULL options. Furthermore, MariaDB 10.2.8 introduced another related FOREIGN KEY bug that was also fixed in 10.2.13 by MDEV-15219.

            That said, we still have some secondary index corruption bug that exists at least since MySQL 5.5 and MariaDB 5.5.

            marko Marko Mäkelä added a comment - For the record, as noted in MDEV-15199 , secondary indexes can also become corrupted in MariaDB 10.2.2 to 10.2.13 (and MySQL 5.7.2 to 5.7.21) because of FOREIGN KEY constraints with CASCADE or SET NULL options. Furthermore, MariaDB 10.2.8 introduced another related FOREIGN KEY bug that was also fixed in 10.2.13 by MDEV-15219 . That said, we still have some secondary index corruption bug that exists at least since MySQL 5.5 and MariaDB 5.5.
            marko Marko Mäkelä made changes -

            It seems to me that the InnoDB change buffer in its current form is fundamentally broken (not crash-safe, unsafe with hot backup).
            InnoDB crash recovery implements a shortcut: In the last batch of applying redo log records to pages, it will merge any buffered changes to the pages, in the function recv_apply_hashed_log_recs().

            InnoDB would first merge any buffered changes to the page in buf_page_get_gen(), then apply redo log records by invoking recv_recover_page().
            This is fine, as long as the very last persisted changes to the secondary index leaf page were direcltly via the redo log, and not via the change buffer (or redo log records for the change buffer).

            There should be a problem in the following scenario:

            1. The leaf page is modified directly.
            2. The leaf page is evicted from the buffer pool.
            3. Some change to the page is made via the change buffer
            4. All buffered redo log records are written to the redo log up to this point.
            5. The server is killed, without any redo log checkpoint occurring in this time frame. (Alternatively, a hot backup completes after this point, but before redo log records for change buffer merge for this leaf page are written.)
            6. InnoDB would now apply changes to the leaf page in the wrong order (first, the newer changes from the change buffer, then the older ones from the redo log). This can corrupt the page!

            The above is a very unlikely sequence of events. Normally redo log checkpoints are performed periodically. The page eviction, the redo log flush and the server kill should be timed very carefully.

            With hot backup (xtrabackup or mariabackup), the scenario is much more likely. The log would be applied from an older checkpoint that was the latest when the backup process was started.

            Because change buffer merge is writing redo log records, it should always be safe to first apply the log records, and then merge the change buffer.

            It is cleanest to defer the change buffer merge until all log records have been applied. In this way, the redo log apply will not generate any redo log records and cannot possibly trigger a redo log checkpoint (which could lead to a deadlock or infinite loop when the checkpoint needs to complete the last batch of redo log apply).

            Before allowing "normal user access" to buf_page_get_gen() the buffered changes must be merged, or pages with buffered changes must be evicted from the buffer pool. This constraint will make it harder to implement crash recovery in the background (MDEV-14481).

            marko Marko Mäkelä added a comment - It seems to me that the InnoDB change buffer in its current form is fundamentally broken (not crash-safe, unsafe with hot backup). InnoDB crash recovery implements a shortcut: In the last batch of applying redo log records to pages, it will merge any buffered changes to the pages, in the function recv_apply_hashed_log_recs() . InnoDB would first merge any buffered changes to the page in buf_page_get_gen() , then apply redo log records by invoking recv_recover_page() . This is fine, as long as the very last persisted changes to the secondary index leaf page were direcltly via the redo log, and not via the change buffer (or redo log records for the change buffer). There should be a problem in the following scenario: The leaf page is modified directly. The leaf page is evicted from the buffer pool. Some change to the page is made via the change buffer All buffered redo log records are written to the redo log up to this point. The server is killed, without any redo log checkpoint occurring in this time frame. (Alternatively, a hot backup completes after this point, but before redo log records for change buffer merge for this leaf page are written.) InnoDB would now apply changes to the leaf page in the wrong order (first, the newer changes from the change buffer, then the older ones from the redo log). This can corrupt the page! The above is a very unlikely sequence of events. Normally redo log checkpoints are performed periodically. The page eviction, the redo log flush and the server kill should be timed very carefully. With hot backup ( xtrabackup or mariabackup ), the scenario is much more likely. The log would be applied from an older checkpoint that was the latest when the backup process was started. Because change buffer merge is writing redo log records, it should always be safe to first apply the log records, and then merge the change buffer. It is cleanest to defer the change buffer merge until all log records have been applied. In this way, the redo log apply will not generate any redo log records and cannot possibly trigger a redo log checkpoint (which could lead to a deadlock or infinite loop when the checkpoint needs to complete the last batch of redo log apply). Before allowing "normal user access" to buf_page_get_gen() the buffered changes must be merged, or pages with buffered changes must be evicted from the buffer pool. This constraint will make it harder to implement crash recovery in the background ( MDEV-14481 ).

            As yinfeng-zwx pointed to me privately, normally the change buffer is being merged in buf_page_io_complete(). That function first invokes recv_recover_page() to apply any redo log records, and then invokes ibuf_merge_or_delete_for_page() to merge any buffered changes. That is the correct order.

            The only other caller that invokes ibuf_merge_or_delete_for_page() with a non-NULL block (that is, merging changes, not discarding them) is buf_page_get_gen(). That code path is only invoked for ROW_FORMAT=COMPRESSED tables. So, my above analysis of the change buffer not being crash-safe should only apply to ROW_FORMAT=COMPRESSED tables.

            marko Marko Mäkelä added a comment - As yinfeng-zwx pointed to me privately, normally the change buffer is being merged in buf_page_io_complete() . That function first invokes recv_recover_page() to apply any redo log records, and then invokes ibuf_merge_or_delete_for_page() to merge any buffered changes. That is the correct order. The only other caller that invokes ibuf_merge_or_delete_for_page() with a non-NULL block (that is, merging changes, not discarding them) is buf_page_get_gen() . That code path is only invoked for ROW_FORMAT=COMPRESSED tables. So, my above analysis of the change buffer not being crash-safe should only apply to ROW_FORMAT=COMPRESSED tables.
            marko Marko Mäkelä made changes -
            alice Alice Sherepa made changes -
            marko Marko Mäkelä made changes -
            ratzpo Rasmus Johansson (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Thirunarayanan B [ thiru ]
            julien.fritsch Julien Fritsch made changes -
            Priority Major [ 3 ] Critical [ 2 ]

            We have another bug report about the same assertion failure: MDEV-16759
            The reporter provided everything he could, it's not enough to reproduce the issue, but maybe looking at these two reports together will help.

            elenst Elena Stepanova added a comment - We have another bug report about the same assertion failure: MDEV-16759 The reporter provided everything he could, it's not enough to reproduce the issue, but maybe looking at these two reports together will help.
            elenst Elena Stepanova made changes -
            elenst Elena Stepanova made changes -
            Comment [ According to [~marko], the failure below is a representation of the same problem, so I'm adding there for the record and searchability
            {noformat:title=10.2 94e00da9f1fbff710b5ebf9a7d63e1aad8fdb789}
            Version: '10.2.14-MariaDB-log' socket: '' port: 11400 Source distribution
            2018-03-13 11:45:08 6088 [ERROR] InnoDB: Record in index `vcol_blob` of table `test`.`t7` was not found on update: TUPLE (info_bits=0, 4 fields): {[64]Z ` test t7 (0x0A03010000000000000005000000000007000000000001000404050304000204070009030E0602010D0F0E0C020C0D0E020A000003080A0601030F0E0C000701),[3] O(0x0F010F),[8] f+ (0x090C0C060B000B00),[4] (0x00000001)} at: COMPACT RECORD(info_bits=0, 1 fields): {[8]infimum (0x090E06090D050D00)}
            2018-03-13 11:45:09 352 [ERROR] InnoDB: Record in index `vcol_blob` of table `test`.`t7` was not found on update: TUPLE (info_bits=0, 4 fields): {[64] 5 , fely radio rat about ceo se(0x01030F0E0C000701050A06080108020403030E0A05000207070C00060003010E0B04090D0106050C0900020104090F000201040001020F05040003050F000305),[3] O(0x0F010F),[8] f+ (0x090C0C060B000B00),[4] (0x00000001)} at: COMPACT RECORD(info_bits=0, 1 fields): {[8]infimum (0x090E06090D050D00)}
            2018-03-13 11:45:17 664 [ERROR] InnoDB: Record in index `vcol_blob` of table `test`.`t7` was not found on update: TUPLE (info_bits=0, 4 fields): {[64]t ceo seal prominent associated flat beginning post missionary f(0x040003050F000305010C0000020F0D090E050E04000103030F03090104050400060C010400020507090E0E090E0700000F0304000D090303090F0E0102090006),[3] O(0x0F010F),[8] f+ (0x090C0C060B000B00),[4] (0x00000001)} at: COMPACT RECORD(info_bits=0, 4 fields): {[64]surprised vs brick spy prescription federal leather coach vast m(0x03050200020903050400060300020209030B0003000900000205030302090004090F0E000605040502010C000C05010408050200030F0103080006010304000D),[3] O(0x0F010F),[8] f+ (0x090C0C060B000B00),[4] (0x00000001)}
            2018-03-13 11:46:22 352 [Warning] Sort aborted, host: localhost, user: rqg, thread: 15, query: SELECT BIT_COUNT( NULL ) AS field1, BIT_XOR( -32273 ) AS field2 FROM `t2` GROUP BY FORMAT( ( COS( -4811533251891953664 ) ), '2011-10-23', 'en_US' ) WITH ROLLUP LIMIT 68 /* QNO 5141 CON_ID 15 */
            2018-03-13 11:46:24 2948 [Warning] Sort aborted, host: localhost, user: rqg, thread: 18, query: SELECT NOT 0 AS field1 FROM `t2` GROUP BY DATABASE(), CONVERT( ( OLD_PASSWORD( ( TO_DAYS( 0 ) ) ) ) USING utf8 ) WITH ROLLUP /* QNO 5083 CON_ID 18 */
            2018-03-13 11:46:54 1528 [Warning] Sort aborted, host: localhost, user: rqg, thread: 20, query: CREATE TABLE tmp157 AS SELECT DISTINCT STD( NULL ) AS field1, BIT_COUNT( '1997-11-25' ) AS field2, ExtractValue( NULL, '/cabbbaeca/dcadbcdabcad/aebddeeaaabad/ceeadecbaaed/be/eaaaebeeadcccd/cb/e/d/edddedaadcccbc/bbaacb' ) AS field3 FROM `t7` GROUP BY ATAN( '08:12:19.033555' ), `vcol_int` % ( UpdateXML( 'ktnnnlapgrenancbqmpkteeonmoqshxleuwygxbdjxdyvepdbnaqaknebjddragffnxuzserxzymuluttcahxjyadqrasypbvfaseqygaescsotczvgimqxxxpdbylzrsqhodylmwcneclcgicv', '/bcea/ba/ad/ccabccabbbb/edb/ceb/dbc/ee/c/cccaabc/bcbadebdec/b/ca', 5691142554112753664 ) ) WITH ROLLUP /* QNO 4895 CON_ID 20 */
            2018-03-13 11:46:59 1528 [ERROR] InnoDB: Record in index `vcol_blob` of table `test`.`t7` was not found on update: TUPLE (info_bits=0, 4 fields): {[64]pict merely recently harm creature here broadcast structure depu(0x00090304000D0502050C0900020503050E040C09000801020D00030205010405020500080502050002020F010403010304000304020503040502050004050005),[3] O(0x0F010F),[8] f+ (0x090C0C060B000B00),[4] (0x00000001)} at: COMPACT RECORD(info_bits=0, 4 fields): {[64]Z ` test t7 (0x0A03010000000000000005000000000007000000000001000404050304000204070009030E0602010D0F0E0C020C0D0E020A000003080A0601030F0E0C000701),[3] O(0x0F010F),[8] f+ (0x090C0C060B000B00),[4] (0x00000001)}
            2018-03-13 11:47:01 3084 [ERROR] [FATAL] InnoDB: InnoDB is trying to free page [page id: space=34, page number=12] though it is already marked as free in the tablespace! The tablespace free space info is corrupt. You may need to dump your tables and recreate the whole database!Please refer to https://mariadb.com/kb/en/library/xtradbinnodb-recovery-modes/ for information about forcing recovery.
            180313 11:47:01 [ERROR] mysqld got exception 0x80000003 ;
            This could be because you hit a bug. It is also possible that this binary
            or one of the libraries it was linked against is corrupt, improperly built,
            or misconfigured. This error can also be caused by malfunctioning hardware.

            To report this bug, see https://mariadb.com/kb/en/reporting-bugs

            We will try our best to scrape up some info that will hopefully help
            diagnose the problem, but since we have already crashed,
            something is definitely wrong and this may fail.

            Server version: 10.2.14-MariaDB-log
            key_buffer_size=134217728
            read_buffer_size=131072
            max_used_connections=7
            max_threads=65537
            thread_count=14
            It is possible that mysqld could use up to
            key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 136058 K bytes of memory
            Hope that's ok; if not, decrease some variables in the equation.

            Thread pointer: 0x98fd996b98
            Attempting backtrace. You can use the following information to find out
            where mysqld died. If you see no messages after this, something went
            terribly wrong...
            mysqld.exe!my_sigabrt_handler()[my_thr_init.c:487]
            mysqld.exe!raise()[signal.cpp:516]
            mysqld.exe!abort()[abort.cpp:71]
            mysqld.exe!ib::fatal::~fatal()[ut0ut.cc:794]
            mysqld.exe!fseg_free_page_low()[fsp0fsp.cc:3068]
            mysqld.exe!fseg_free_page_func()[fsp0fsp.cc:3183]
            mysqld.exe!btr_page_free_low()[btr0btr.cc:849]
            mysqld.exe!btr_free_externally_stored_field()[btr0cur.cc:7348]
            mysqld.exe!row_purge_upd_exist_or_extern_func()[row0purge.cc:795]
            mysqld.exe!row_purge_record_func()[row0purge.cc:974]
            mysqld.exe!row_purge()[row0purge.cc:1020]
            mysqld.exe!row_purge_step()[row0purge.cc:1098]
            mysqld.exe!que_thr_step()[que0que.cc:1049]
            mysqld.exe!que_run_threads_low()[que0que.cc:1114]
            mysqld.exe!que_run_threads()[que0que.cc:1153]
            mysqld.exe!srv_task_execute()[srv0srv.cc:2547]
            mysqld.exe!srv_worker_thread()[srv0srv.cc:2592]
            KERNEL32.DLL!BaseThreadInitThunk()
            ntdll.dll!RtlUserThreadStart()

            Trying to get some variables.
            Some pointers may be invalid and cause the dump to abort.
            Query (0x0):
            Connection ID (thread ID): 4
            Status: NOT_KILLED

            Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on
            {noformat}

            {noformat}
            Microsoft (R) Windows Debugger Version 10.0.14321.1024 AMD64
            Copyright (c) Microsoft Corporation. All rights reserved.


            Loading Dump File [E:\buildbot\vardirs\qa-win-rel\10.2-4770\optim-combo\current1_1\data\mysqld.dmp]
            User Mini Dump File: Only registers, stack and portions of memory are available


            ************* Symbol Path validation summary **************
            Response Time (ms) Location
            OK D:\qa-win-rel\install\bin

            ************* Symbol Path validation summary **************
            Response Time (ms) Location
            OK D:\qa-win-rel\install\bin
            Deferred srv*C:\cdb_symbols*http://msdl.microsoft.com/download/symbols
            Symbol search path is: D:\qa-win-rel\install\bin;srv*C:\cdb_symbols*http://msdl.microsoft.com/download/symbols
            Executable search path is: D:\qa-win-rel\install\bin
            Windows 8.1 Version 9600 MP (4 procs) Free x64
            Product: Server, suite: TerminalServer DataCenter SingleUserTS
            Built by: 6.3.9600.17031 (winblue_gdr.140221-1952)
            Machine Name:
            Debug session time: Tue Mar 13 11:47:03.000 2018 (UTC + 0:00)
            System Uptime: not available
            Process Uptime: 0 days 0:02:05.000
            ........................
            This dump file has a breakpoint exception stored in it.
            The stored exception information can be accessed via .ecxr.
            ntdll!NtGetContextThread+0xa:
            00007ff8`224814ca c3 ret
            0:022> cdb: Reading initial command '!sym prompts off; !analyze -v; .ecxr; !for_each_frame dv /t;~*k;q'
            quiet mode - symbol prompts off
            *******************************************************************************
            * *
            * Exception Analysis *
            * *
            *******************************************************************************

            GetUrlPageData2 (WinHttp) failed: 12002.

            DUMP_CLASS: 2

            DUMP_QUALIFIER: 400

            CONTEXT: (.ecxr)
            rax=00007ff7131148a0 rbx=00007ff7141306b0 rcx=0000000000000016
            rdx=0000cde1238bcf99 rsi=0000000000000001 rdi=0000000000000016
            rip=00007ff7130e1532 rsp=000000989022ea58 rbp=000000989022ec70
             r8=000000989022eae0 r9=000000989022eae8 r10=00007ff8223f57d0
            r11=000000989022ead8 r12=0000000000000910 r13=0000000000000000
            r14=000000989022ee30 r15=00007ff7130e1530
            iopl=0 nv up ei pl nz ac pe nc
            cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000212
            mysqld!my_sigabrt_handler+0x2:
            00007ff7`130e1532 cc int 3
            Resetting default scope

            FAULTING_IP:
            mysqld!my_sigabrt_handler+2 [d:\qa-win-rel\build\mysys\my_thr_init.c @ 487]
            00007ff7`130e1532 cc int 3

            EXCEPTION_RECORD: (.exr -1)
            ExceptionAddress: 00007ff7130e1532 (mysqld!my_sigabrt_handler+0x0000000000000002)
               ExceptionCode: 80000003 (Break instruction exception)
              ExceptionFlags: 00000000
            NumberParameters: 1
               Parameter[0]: 0000000000000000

            DEFAULT_BUCKET_ID: STATUS_BREAKPOINT

            PROCESS_NAME: mysqld.exe

            ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.

            EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid

            EXCEPTION_CODE_STR: 80000003

            EXCEPTION_PARAMETER1: 0000000000000000

            WATSON_BKT_PROCSTAMP: 5aa786ff

            WATSON_BKT_PROCVER: 10.2.14.0

            WATSON_BKT_MODULE: mysqld.exe

            WATSON_BKT_MODSTAMP: 5aa786ff

            WATSON_BKT_MODOFFSET: 591532

            WATSON_BKT_MODVER: 10.2.14.0

            BUILD_VERSION_STRING: 6.3.9600.17415 (winblue_r4.141028-1500)

            MODLIST_WITH_TSCHKSUM_HASH: 40890ae3b49bf864f23bcdddbc2938684aebf7b6

            MODLIST_SHA1_HASH: 3c31441283b9990ffe76461c725d39699eff3652

            DUMP_FLAGS: 0

            DUMP_TYPE: 2

            ANALYSIS_SESSION_HOST: MARIADB-04

            ANALYSIS_SESSION_TIME: 03-13-2018 11:47:08.0948

            ANALYSIS_VERSION: 10.0.14321.1024 amd64fre

            THREAD_ATTRIBUTES:
            PROBLEM_CLASSES:




                Tid [0x0]
                Frame [0x00]
                String [STATUS_BREAKPOINT]
                Data Bucketing


            BUGCHECK_STR: STATUS_BREAKPOINT

            LAST_CONTROL_TRANSFER: from 00007ff71318a8a6 to 00007ff7130e1532

            STACK_TEXT:
            00000098`9022ea58 00007ff7`1318a8a6 : 00000000`00000016 00000098`fdbb3a00 00007ff7`130e1530 00007ff7`1318a503 : mysqld!my_sigabrt_handler+0x2
            00000098`9022ea60 00007ff7`13188a90 : 00000098`9022eb01 00007ff7`00000000 00000000`00000000 00000000`00000000 : mysqld!raise+0x25e
            00000098`9022eae0 00007ff7`12e64e30 : 00007ff7`1332aac8 00000098`99766630 00000098`fad260d0 00000000`00000004 : mysqld!abort+0x18
            00000098`9022eb10 00007ff7`12f90df1 : 00000098`fdbb3a20 00000000`00000001 00000098`fdbb3a20 00000000`0000000c : mysqld!ib::fatal::~fatal+0x90
            00000098`9022eb70 00007ff7`12f90c71 : 00000098`9022ee30 00000098`fdbb3a20 00000098`8771004a 00000098`9022ed00 : mysqld!fseg_free_page_low+0x161
            00000098`9022ecd0 00007ff7`12ed2c88 : 00000098`86906cd0 00000000`00000000 00000098`8771004a 00007ff7`133424d8 : mysqld!fseg_free_page_func+0x131
            00000098`9022ed30 00007ff7`12ecc423 : 00000098`87734000 00000098`9022ee80 00000098`87184a36 00000098`fd9a7890 : mysqld!btr_page_free_low+0x1a8
            00000098`9022ed80 00007ff7`12fec7c2 : 00000098`9022f3d0 00007ff7`138edee8 00000000`00000002 00000000`00000000 : mysqld!btr_free_externally_stored_field+0x4b3
            00000098`9022f360 00007ff7`12feb514 : 00000000`00000000 00000098`fde8edd0 00000098`fd6ce4b8 00000098`fd6ce400 : mysqld!row_purge_upd_exist_or_extern_func+0x422
            00000098`9022f940 00007ff7`12feacc2 : 00000098`fd6ce4b8 00000098`fd6ce4b8 00000098`fd6ce4b8 00000098`fdc74af0 : mysqld!row_purge_record_func+0x44
            00000098`9022f970 00007ff7`12fec2cd : 00000098`fd6ce4b8 00000098`fd6ce001 00000098`fd6ce400 00000000`00000006 : mysqld!row_purge+0x52
            00000098`9022f9b0 00007ff7`12eea1db : 00000098`fd6ce400 00000000`00000000 00000098`fd6ce400 00000000`00000000 : mysqld!row_purge_step+0x9d
            00000098`9022f9e0 00007ff7`12ee99cd : 00000098`fd6ce400 00000098`fd6ce400 00000098`fd6ce400 00007ff7`12e8d2f8 : mysqld!que_thr_step+0x25b
            00000098`9022fa10 00007ff7`12ee97ad : 00000098`fd6ce400 00000000`00000000 00000098`fd996b98 00000000`00000000 : mysqld!que_run_threads_low+0x5d
            00000098`9022faa0 00007ff7`12ef2417 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : mysqld!que_run_threads+0x3d
            00000098`9022fb20 00007ff7`12ef2eed : 00000000`00000000 00000000`00000000 00000098`fd996b98 00007ff7`138ee068 : mysqld!srv_task_execute+0x137
            00000098`9022fb90 00007ff8`21bb13d2 : 00007ff7`12ef2e20 00000000`00000000 00000000`00000000 00000000`00000000 : mysqld!srv_worker_thread+0xcd
            00000098`9022fbc0 00007ff8`224054e4 : 00007ff8`21bb13b0 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x22
            00000098`9022fbf0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x34


            THREAD_SHA1_HASH_MOD_FUNC: 89f88dfcc257da1c0d497d690584ddfb734f217a

            THREAD_SHA1_HASH_MOD_FUNC_OFFSET: 994008dcc44565cf3a7b5c7ebf46c0f592cc5cf5

            THREAD_SHA1_HASH_MOD: df3ce59f5538dbb1987404667a41ec339cc9b754

            FOLLOWUP_IP:
            mysqld!my_sigabrt_handler+2 [d:\qa-win-rel\build\mysys\my_thr_init.c @ 487]
            00007ff7`130e1532 cc int 3

            FAULT_INSTR_CODE: ccccc3cc

            FAULTING_SOURCE_LINE: d:\qa-win-rel\build\mysys\my_thr_init.c

            FAULTING_SOURCE_FILE: d:\qa-win-rel\build\mysys\my_thr_init.c

            FAULTING_SOURCE_LINE_NUMBER: 487

            FAULTING_SOURCE_CODE:
               483:
               484: #if (_MSC_VER >= 1400)
               485: static void my_sigabrt_handler(int sig)
               486: {
            > 487: __debugbreak();
               488: }
               489: #endif /*_MSC_VER >=1400 */
               490:
               491: static void install_sigabrt_handler(void)
               492: {


            SYMBOL_STACK_INDEX: 0

            SYMBOL_NAME: mysqld!my_sigabrt_handler+2

            FOLLOWUP_NAME: MachineOwner

            MODULE_NAME: mysqld

            IMAGE_NAME: mysqld.exe

            DEBUG_FLR_IMAGE_TIMESTAMP: 5aa786ff

            STACK_COMMAND: .ecxr ; kb

            BUCKET_ID: STATUS_BREAKPOINT_mysqld!my_sigabrt_handler+2

            PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT_mysqld!my_sigabrt_handler+2

            FAILURE_EXCEPTION_CODE: 80000003

            FAILURE_IMAGE_NAME: mysqld.exe

            BUCKET_ID_IMAGE_STR: mysqld.exe

            FAILURE_MODULE_NAME: mysqld

            BUCKET_ID_MODULE_STR: mysqld

            FAILURE_FUNCTION_NAME: my_sigabrt_handler

            BUCKET_ID_FUNCTION_STR: my_sigabrt_handler

            BUCKET_ID_OFFSET: 2

            BUCKET_ID_MODTIMEDATESTAMP: 5aa786ff

            BUCKET_ID_MODCHECKSUM: de8d43

            BUCKET_ID_MODVER_STR: 10.2.14.0

            BUCKET_ID_PREFIX_STR: STATUS_BREAKPOINT_

            FAILURE_PROBLEM_CLASS: STATUS_BREAKPOINT

            FAILURE_SYMBOL_NAME: mysqld.exe!my_sigabrt_handler

            FAILURE_BUCKET_ID: STATUS_BREAKPOINT_80000003_mysqld.exe!my_sigabrt_handler

            WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/mysqld.exe/10.2.14.0/5aa786ff/mysqld.exe/10.2.14.0/5aa786ff/80000003/00591532.htm?Retriage=1

            TARGET_TIME: 2018-03-13T11:47:03.000Z

            OSBUILD: 9600

            OSSERVICEPACK: 17415

            SERVICEPACK_NUMBER: 0

            OS_REVISION: 0

            SUITE_MASK: 400

            PRODUCT_TYPE: 3

            OSPLATFORM_TYPE: x64

            OSNAME: Windows 8.1

            OSEDITION: Windows 8.1 Server TerminalServer DataCenter SingleUserTS

            OS_LOCALE:

            USER_LCID: 0

            OSBUILD_TIMESTAMP: 2014-10-29 02:45:30

            BUILDDATESTAMP_STR: 141028-1500

            BUILDLAB_STR: winblue_r4

            BUILDOSVER_STR: 6.3.9600.17415

            ANALYSIS_SESSION_ELAPSED_TIME: 5eb0

            ANALYSIS_SOURCE: UM

            FAILURE_ID_HASH_STRING: um:status_breakpoint_80000003_mysqld.exe!my_sigabrt_handler

            FAILURE_ID_HASH: {f6294d5d-cc99-d322-9f92-e2c8a944cc10}

            Followup: MachineOwner
            ---------

            rax=00007ff7131148a0 rbx=00007ff7141306b0 rcx=0000000000000016
            rdx=0000cde1238bcf99 rsi=0000000000000001 rdi=0000000000000016
            rip=00007ff7130e1532 rsp=000000989022ea58 rbp=000000989022ec70
             r8=000000989022eae0 r9=000000989022eae8 r10=00007ff8223f57d0
            r11=000000989022ead8 r12=0000000000000910 r13=0000000000000000
            r14=000000989022ee30 r15=00007ff7130e1530
            iopl=0 nv up ei pl nz ac pe nc
            cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000212
            mysqld!my_sigabrt_handler+0x2:
            00007ff7`130e1532 cc int 3
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            00 00000098`9022ea58 00007ff7`1318a8a6 mysqld!my_sigabrt_handler+0x2 [d:\qa-win-rel\build\mysys\my_thr_init.c @ 487]
            int sig = 0n22
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            01 00000098`9022ea60 00007ff7`13188a90 mysqld!raise+0x25e [d:\th\minkernel\crts\ucrt\src\appcrt\misc\signal.cpp @ 516]
            int signum = 0n22
            int old_fpecode = 0n0
            struct _EXCEPTION_POINTERS * old_pxcptinfoptrs = 0x00000000`00000000
            bool return0 = false
            bool action_is_global = true
            <function> * action = 0x00007ff7`130e1530
            struct __acrt_ptd * ptd = 0x00000000`00000000
            <function> ** action_pointer = 0x00007ff7`141306b0
            struct __crt_signal_action_t * local_action = <value unavailable>
            int _Expr_val = <value unavailable>
            struct __crt_signal_action_t * last = <value unavailable>
            struct __crt_signal_action_t * first = <value unavailable>
            struct __crt_signal_action_t * p = 0x00007ff7`131853a1
            unsigned int64 __acrt_signal_action_table_count = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            02 00000098`9022eae0 00007ff7`12e64e30 mysqld!abort+0x18 [d:\th\minkernel\crts\ucrt\src\appcrt\startup\abort.cpp @ 71]
            <function> * sigabrt_action = 0x00007ff7`131148a0
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            03 00000098`9022eb10 00007ff7`12f90df1 mysqld!ib::fatal::~fatal+0x90 [d:\qa-win-rel\build\storage\innobase\ut\ut0ut.cc @ 794]
            class ib::fatal * this = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            04 00000098`9022eb70 00007ff7`12f90c71 mysqld!fseg_free_page_low+0x161 [d:\qa-win-rel\build\storage\innobase\fsp\fsp0fsp.cc @ 3068]
            unsigned char * seg_inode = 0x00000098`8770c0f2 "--- memory read error at address 0x00000098`8770c0f2 ---"
            struct fil_space_t * space = 0x00000098`fdbb3a20
            unsigned int64 offset = 0xc
            class page_size_t * page_size = 0x00000098`9022ed00
            bool ahi = true
            struct mtr_t * mtr = 0x00000098`9022ee30
            unsigned int64 i = <value unavailable>
            unsigned int64 bit = <value unavailable>
            unsigned char * descr = 0x00000098`87704096 "--- memory read error at address 0x00000098`87704096 ---"
            unsigned long srv_page_size = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            05 00000098`9022ecd0 00007ff7`12ed2c88 mysqld!fseg_free_page_func+0x131 [d:\qa-win-rel\build\storage\innobase\fsp\fsp0fsp.cc @ 3183]
            unsigned char * seg_header = 0x00000098`8771004a "--- memory read error at address 0x00000098`8771004a ---"
            unsigned int64 space_id = <value unavailable>
            unsigned int64 page = 0xc
            bool ahi = true
            struct mtr_t * mtr = 0x00000098`9022ee30
            class page_size_t page_size = class page_size_t
            unsigned char * seg_inode = 0x00000098`8770c0f2 "--- memory read error at address 0x00000098`8770c0f2 ---"
            struct buf_block_t * iblock = 0x00000098`86905d30
            struct fil_space_t * space = 0x00000098`fdbb3a20
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            06 00000098`9022ed30 00007ff7`12ecc423 mysqld!btr_page_free_low+0x1a8 [d:\qa-win-rel\build\storage\innobase\btr\btr0btr.cc @ 849]
            struct dict_index_t * index = 0x00000098`8771004a
            struct buf_block_t * block = 0x00000098`86906cd0
            unsigned int64 level = 0
            bool blob = <value unavailable>
            struct mtr_t * mtr = 0x00000098`9022ee30
            unsigned char * root = <value unavailable>
            bool scrub = false
            unsigned int64 * offsets = <value unavailable>
            struct mem_block_info_t * heap = 0x00000098`9022ee80
            unsigned char * page = <value unavailable>
            unsigned char * rec = 0x00000098`9022ee30 ""
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            07 00000098`9022ed80 00007ff7`12fec7c2 mysqld!btr_free_externally_stored_field+0x4b3 [d:\qa-win-rel\build\storage\innobase\btr\btr0cur.cc @ 7348]
            struct dict_index_t * index = 0x00000098`fd9a7890
            unsigned char * field_ref = 0x00000098`87184a36 "--- memory read error at address 0x00000098`87184a36 ---"
            unsigned char * rec = 0x00000000`00000000 ""
            unsigned int64 * offsets = 0x00000000`00000000
            struct page_zip_des_t * page_zip = 0x00000000`00000016
            unsigned int64 i = 0
            bool rollback = false
            struct mtr_t * local_mtr = 0x00000098`9022f420
            unsigned int64 space_id = 0x22
            class page_size_t ext_page_size = class page_size_t
            unsigned char * page = 0x00000098`87734000 "--- memory read error at address 0x00000098`87734000 ---"
            struct mtr_t mtr = struct mtr_t
            class page_size_t * rec_page_size = 0x00007ff7`138edee8
            class page_id_t page_id = class page_id_t
            struct buf_block_t * ext_block = 0x00000098`86906cd0
            unsigned char * p = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            08 00000098`9022f360 00007ff7`12feb514 mysqld!row_purge_upd_exist_or_extern_func+0x422 [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 795]
            struct purge_node_t * node = 0x00000098`fd6ce4b8
            unsigned char * undo_rec = 0x00000098`fde8edd0 "--- memory read error at address 0x00000098`fde8edd0 ---"
            struct mem_block_info_t * heap = <value unavailable>
            struct dtuple_t * entry = <value unavailable>
            unsigned int64 i = 0
            struct buf_block_t * block = <value unavailable>
            unsigned int64 internal_offset = 0x1f
            struct dict_index_t * index = 0x00000098`fd9a7890
            unsigned int64 page_no = 0x168
            unsigned char * data_field = <value unavailable>
            unsigned int64 offset = 0xa17
            struct trx_rseg_t * rseg = 0x00000098`fd92db50
            struct mtr_t mtr = struct mtr_t
            unsigned int64 rseg_id = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            09 00000098`9022f940 00007ff7`12feacc2 mysqld!row_purge_record_func+0x44 [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 974]
            struct purge_node_t * node = 0x00000098`fd6ce4b8
            unsigned char * undo_rec = <value unavailable>
            bool updated_extern = <value unavailable>
            bool purged = true
            struct monitor_value_t [273] innodb_counter_value = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            0a 00000098`9022f970 00007ff7`12fec2cd mysqld!row_purge+0x52 [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 1020]
            struct purge_node_t * node = 0x00000098`fd6ce4b8
            unsigned char * undo_rec = 0x00000098`fde8edd0 "--- memory read error at address 0x00000098`fde8edd0 ---"
            struct que_thr_t * thr = 0x00000098`fd6ce400
            bool updated_extern = true
            bool purged = true
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            0b 00000098`9022f9b0 00007ff7`12eea1db mysqld!row_purge_step+0x9d [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 1098]
            struct que_thr_t * thr = 0x00000098`fd6ce400
            struct purge_node_t * node = 0x00000098`fd6ce4b8
            struct trx_purge_rec_t * purge_rec = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            0c 00000098`9022f9e0 00007ff7`12ee99cd mysqld!que_thr_step+0x25b [d:\qa-win-rel\build\storage\innobase\que\que0que.cc @ 1049]
            struct que_thr_t * thr = 0x00007ff7`131148a0
            struct que_thr_t * old_thr = 0x00000098`fd6ce400
            struct trx_t * trx = <value unavailable>
            unsigned int64 type = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            0d 00000098`9022fa10 00007ff7`12ee97ad mysqld!que_run_threads_low+0x5d [d:\qa-win-rel\build\storage\innobase\que\que0que.cc @ 1114]
            struct que_thr_t * thr = 0x00000098`fd6ce400
            struct que_thr_t * next_thr = 0x00000098`fd6ce400
            struct trx_t * trx = 0x00000098`fcec7048
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            0e 00000098`9022faa0 00007ff7`12ef2417 mysqld!que_run_threads+0x3d [d:\qa-win-rel\build\storage\innobase\que\que0que.cc @ 1153]
            struct que_thr_t * thr = 0x00000098`fd6ce400
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            0f 00000098`9022fb20 00007ff7`12ef2eed mysqld!srv_task_execute+0x137 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2547]
            struct que_thr_t * thr = 0x00000098`fd6ce400
            struct srv_sys_t srv_sys = <value unavailable>
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            10 00000098`9022fb90 00007ff8`21bb13d2 mysqld!srv_worker_thread+0xcd [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2592]
            void * arg = 0x00007ff7`12ef2e20
            struct srv_slot_t * slot = 0x00007ff7`138ee068
            class THD * thd = 0x00000098`fd996b98
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            11 00000098`9022fbc0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            Unable to enumerate locals, HRESULT 0x80004005
            Private symbols (symbols.pri) are required for locals.
            Type ".hh dbgerr005" for details.
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            12 00000098`9022fbf0 00000000`00000000 ntdll!RtlUserThreadStart+0x34
            Unable to enumerate locals, HRESULT 0x80004005
            Private symbols (symbols.pri) are required for locals.
            Type ".hh dbgerr005" for details.
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            00 00000098`9022ea58 00007ff7`1318a8a6 mysqld!my_sigabrt_handler+0x2 [d:\qa-win-rel\build\mysys\my_thr_init.c @ 487]

               0 Id: 1c70.1dac Suspend: 0 Teb: 00007ff7`1236e000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`fabcf508 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`fabcf510 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`fabcf580 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`fabcf5b0 00007ff7`12b6f8e7 mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_wait+0x77 [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1149]
            00000098`fabcf5e0 00007ff7`12b75729 mysqld!handle_connections_methods+0x2a7 [d:\qa-win-rel\build\sql\mysqld.cc @ 5571]
            00000098`fabcf660 00007ff7`12b732d0 mysqld!win_main+0x6c9 [d:\qa-win-rel\build\sql\mysqld.cc @ 6075]
            00000098`fabcf800 00007ff7`12b736b0 mysqld!mysql_service+0x50 [d:\qa-win-rel\build\sql\mysqld.cc @ 6120]
            00000098`fabcf830 00007ff7`1317ea29 mysqld!mysqld_main+0x330 [d:\qa-win-rel\build\sql\mysqld.cc @ 6313]
            (Inline Function) --------`-------- mysqld!invoke_main+0x22 [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 64]
            00000098`fabcfaa0 00007ff8`21bb13d2 mysqld!__scrt_common_main_seh+0x11d [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 253]
            00000098`fabcfae0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`fabcfb10 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               1 Id: 1c70.15f4 Suspend: 0 Teb: 00007ff7`1236c000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`fb75f9d8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`fb75f9e0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`fb75fa50 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`fb75fa80 00007ff7`130f7a9c mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_timedwait+0x93 [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1186]
            00000098`fb75fab0 00007ff7`13105e7b mysqld!timer_handler+0x1ac [d:\qa-win-rel\build\mysys\thr_timer.c @ 274]
            00000098`fb75fb50 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`fb75fb80 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`fb75fbb0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`fb75fbe0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               2 Id: 1c70.8dc Suspend: 0 Teb: 00007ff7`1236a000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`fffdf708 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`fffdf710 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`fffdf770 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`fffdf820 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`fffdf860 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`fffdf9d0 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`fffdfa00 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`fffdfa30 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               3 Id: 1c70.2170 Suspend: 0 Teb: 00007ff7`12367000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f11f778 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f11f780 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f11f7e0 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f11f890 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f11f8d0 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f11fa40 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f11fa70 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f11faa0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               4 Id: 1c70.19c4 Suspend: 0 Teb: 00007ff7`12365000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f21f6d8 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f21f6e0 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f21f740 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f21f7f0 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f21f830 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f21f9a0 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f21f9d0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f21fa00 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               5 Id: 1c70.4e4 Suspend: 0 Teb: 00007ff7`12363000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f31fc58 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f31fc60 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f31fcc0 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f31fd70 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f31fdb0 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f31ff20 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f31ff50 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f31ff80 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               6 Id: 1c70.1db4 Suspend: 0 Teb: 00007ff7`1223e000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f41f828 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f41f830 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f41f890 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f41f940 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f41f980 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f41faf0 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f41fb20 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f41fb50 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               7 Id: 1c70.1cb8 Suspend: 0 Teb: 00007ff7`1223c000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f51f748 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f51f750 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f51f7b0 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f51f860 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f51f8a0 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f51fa10 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f51fa40 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f51fa70 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               8 Id: 1c70.106c Suspend: 0 Teb: 00007ff7`1223a000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f61fb18 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f61fb20 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f61fb80 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f61fc30 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f61fc70 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f61fde0 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f61fe10 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f61fe40 00000000`00000000 ntdll!RtlUserThreadStart+0x34

               9 Id: 1c70.18ec Suspend: 0 Teb: 00007ff7`12238000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f71f998 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f71f9a0 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f71fa00 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f71fab0 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f71faf0 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f71fc60 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f71fc90 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f71fcc0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              10 Id: 1c70.d80 Suspend: 0 Teb: 00007ff7`12236000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f81f9a8 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f81f9b0 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f81fa10 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f81fac0 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f81fb00 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f81fc70 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f81fca0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f81fcd0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              11 Id: 1c70.1014 Suspend: 0 Teb: 00007ff7`12234000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8f91f948 00007ff8`1f6423c3 ntdll!NtRemoveIoCompletion+0xa
            00000098`8f91f950 00007ff7`12f3c8f3 KERNELBASE!GetQueuedCompletionStatus+0x3f
            00000098`8f91f9b0 00007ff7`12f3bd5a mysqld!os_aio_windows_handler+0x73 [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 6521]
            00000098`8f91fa60 00007ff7`12e90ae8 mysqld!os_aio_handler+0x4a [d:\qa-win-rel\build\storage\innobase\os\os0file.cc @ 5729]
            00000098`8f91faa0 00007ff7`12f29287 mysqld!fil_aio_wait+0x48 [d:\qa-win-rel\build\storage\innobase\fil\fil0fil.cc @ 5352]
            00000098`8f91fc10 00007ff8`21bb13d2 mysqld!io_handler_thread+0xb7 [d:\qa-win-rel\build\storage\innobase\srv\srv0start.cc @ 343]
            00000098`8f91fc40 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8f91fc70 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              12 Id: 1c70.1790 Suspend: 0 Teb: 00007ff7`12232000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8fa1f138 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8fa1f140 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8fa1f1b0 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`8fa1f1e0 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`8fa1f210 00007ff7`12e8dc3d mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`8fa1f280 00007ff7`12f4349e mysqld!rw_lock_sx_lock_func+0x17d [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 866]
            (Inline Function) --------`-------- mysqld!pfs_rw_lock_sx_lock_func+0x80 [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 673]
            00000098`8fa1f320 00007ff7`12f4485d mysqld!buf_flush_page+0x24e [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 1232]
            00000098`8fa1f3f0 00007ff7`12f436fb mysqld!buf_flush_try_neighbors+0x4ad [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 1468]
            00000098`8fa1f510 00007ff7`12f419b7 mysqld!buf_flush_page_and_try_neighbors+0x16b [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 1540]
            00000098`8fa1f5b0 00007ff7`12f420dc mysqld!buf_do_flush_list_batch+0x157 [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 1803]
            00000098`8fa1f680 00007ff7`12f424a5 mysqld!buf_flush_batch+0xbc [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 1870]
            00000098`8fa1f710 00007ff7`12f431f5 mysqld!buf_flush_do_batch+0x55 [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 2042]
            00000098`8fa1f750 00007ff7`12f4753c mysqld!buf_flush_lists+0xc5 [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 2146]
            00000098`8fa1f7c0 00007ff8`21bb13d2 mysqld!buf_flush_page_cleaner_coordinator+0x6ac [d:\qa-win-rel\build\storage\innobase\buf\buf0flu.cc @ 3316]
            00000098`8fa1f9c0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8fa1f9f0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              13 Id: 1c70.398 Suspend: 0 Teb: 00007ff7`1222e000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8eddfd58 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8eddfd60 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8eddfdd0 00007ff7`12e8b755 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`8eddfe00 00007ff7`12e8b895 mysqld!os_event::timed_wait+0x15 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 264]
            00000098`8eddfe30 00007ff7`12ffdec0 mysqld!os_event::wait_time_low+0x75 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 415]
            00000098`8eddfe60 00007ff8`21bb13d2 mysqld!lock_wait_timeout_thread+0x70 [d:\qa-win-rel\build\storage\innobase\lock\lock0wait.cc @ 548]
            00000098`8eddfee0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8eddff10 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              14 Id: 1c70.152c Suspend: 0 Teb: 00007ff7`1222c000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8eedfae8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8eedfaf0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8eedfb60 00007ff7`12e8b755 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`8eedfb90 00007ff7`12e8b895 mysqld!os_event::timed_wait+0x15 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 264]
            00000098`8eedfbc0 00007ff7`12ef2764 mysqld!os_event::wait_time_low+0x75 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 415]
            00000098`8eedfbf0 00007ff8`21bb13d2 mysqld!srv_error_monitor_thread+0x234 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 1914]
            00000098`8eedfe20 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8eedfe50 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              15 Id: 1c70.16ec Suspend: 0 Teb: 00007ff7`1222a000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8efdfa28 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8efdfa30 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8efdfaa0 00007ff7`12e8b755 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`8efdfad0 00007ff7`12e8b895 mysqld!os_event::timed_wait+0x15 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 264]
            00000098`8efdfb00 00007ff7`12ef29d3 mysqld!os_event::wait_time_low+0x75 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 415]
            00000098`8efdfb30 00007ff8`21bb13d2 mysqld!srv_monitor_thread+0xa3 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 1745]
            00000098`8efdfbd0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8efdfc00 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              16 Id: 1c70.7a0 Suspend: 0 Teb: 00007ff7`12230000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8ecdf568 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8ecdf570 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8ecdf5e0 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`8ecdf610 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`8ecdf640 00007ff7`12e8e012 mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`8ecdf6b0 00007ff7`12eefb83 mysqld!rw_lock_x_lock_func+0x172 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 759]
            (Inline Function) --------`-------- mysqld!pfs_rw_lock_x_lock_func+0x7a [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 545]
            00000098`8ecdf740 00007ff7`12eefa0a mysqld!srv_master_evict_from_table_cache+0x93 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2087]
            00000098`8ecdf7b0 00007ff7`12ef28a8 mysqld!srv_master_do_idle_tasks+0x12a [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2330]
            00000098`8ecdf7e0 00007ff8`21bb13d2 mysqld!srv_master_thread+0x128 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2444]
            00000098`8ecdf810 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8ecdf840 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              17 Id: 1c70.b28 Suspend: 0 Teb: 00007ff7`12228000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8fd2fb08 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8fd2fb10 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8fd2fb80 00007ff7`12e8b755 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`8fd2fbb0 00007ff7`12e8b895 mysqld!os_event::timed_wait+0x15 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 264]
            00000098`8fd2fbe0 00007ff7`13004564 mysqld!os_event::wait_time_low+0x75 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 415]
            00000098`8fd2fc10 00007ff8`21bb13d2 mysqld!dict_stats_thread+0x54 [d:\qa-win-rel\build\storage\innobase\dict\dict0stats_bg.cc @ 464]
            00000098`8fd2fc40 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8fd2fc70 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              18 Id: 1c70.2058 Suspend: 0 Teb: 00007ff7`12226000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8fe2fbf8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`8fe2fc00 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`8fe2fc70 00007ff7`12e8b755 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`8fe2fca0 00007ff7`12e8b895 mysqld!os_event::timed_wait+0x15 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 264]
            00000098`8fe2fcd0 00007ff7`12ff1ce3 mysqld!os_event::wait_time_low+0x75 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 415]
            00000098`8fe2fd00 00007ff7`12f5ad39 mysqld!ib_wqueue_timedwait+0x103 [d:\qa-win-rel\build\storage\innobase\ut\ut0wqueue.cc @ 165]
            00000098`8fe2fd80 00007ff8`21bb13d2 mysqld!fts_optimize_thread+0x139 [d:\qa-win-rel\build\storage\innobase\fts\fts0opt.cc @ 3033]
            00000098`8fe2fec0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8fe2fef0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              19 Id: 1c70.1ed4 Suspend: 0 Teb: 00007ff7`12224000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`8ff2fa50 00007ff7`12eef3aa mysqld!TTASEventMutex<GenericPolicy>::enter+0x4 [d:\qa-win-rel\build\storage\innobase\include\ib0mutex.h @ 487]
            (Inline Function) --------`-------- mysqld!PolicyMutex<TTASEventMutex<GenericPolicy> >::enter+0x66 [d:\qa-win-rel\build\storage\innobase\include\ib0mutex.h @ 635]
            00000098`8ff2fa60 00007ff7`12f3aae5 mysqld!srv_get_task_queue_length+0x7a [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2914]
            00000098`8ff2fad0 00007ff7`12f379be mysqld!trx_purge_wait_for_workers_to_complete+0x35 [d:\qa-win-rel\build\storage\innobase\trx\trx0purge.cc @ 1607]
            00000098`8ff2fb00 00007ff7`12eeddf8 mysqld!trx_purge+0x18e [d:\qa-win-rel\build\storage\innobase\trx\trx0purge.cc @ 1697]
            00000098`8ff2fb40 00007ff7`12ef2d37 mysqld!srv_do_purge+0x118 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2700]
            00000098`8ff2fb70 00007ff8`21bb13d2 mysqld!srv_purge_coordinator_thread+0x197 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2842]
            00000098`8ff2fbb0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`8ff2fbe0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              20 Id: 1c70.1b24 Suspend: 0 Teb: 00007ff7`12222000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9002d7e8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9002d7f0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9002d860 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`9002d890 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`9002d8c0 00007ff7`12e8d974 mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`9002d930 00007ff7`13002fd0 mysqld!rw_lock_s_lock_spin+0x194 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 395]
            (Inline Function) --------`-------- mysqld!rw_lock_s_lock_func+0x23 [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 291]
            00000098`9002d9b0 00007ff7`12ea1ae1 mysqld!pfs_rw_lock_s_lock_func+0xf0 [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 638]
            00000098`9002da20 00007ff7`12fecdda mysqld!buf_page_get_gen+0x1011 [d:\qa-win-rel\build\storage\innobase\buf\buf0buf.cc @ 4798]
            (Inline Function) --------`-------- mysqld!trx_undo_page_get_s_latched+0x48 [d:\qa-win-rel\build\storage\innobase\include\trx0undo.ic @ 179]
            00000098`9002dd00 00007ff7`12fee4c9 mysqld!trx_undo_get_undo_rec_low+0xea [d:\qa-win-rel\build\storage\innobase\trx\trx0rec.cc @ 2119]
            00000098`9002e270 00007ff7`13006508 mysqld!trx_undo_prev_version_build+0xd9 [d:\qa-win-rel\build\storage\innobase\trx\trx0rec.cc @ 2252]
            00000098`9002e320 00007ff7`13005e36 mysqld!row_vers_vc_matches_cluster+0x308 [d:\qa-win-rel\build\storage\innobase\row\row0vers.cc @ 679]
            00000098`9002e840 00007ff7`12feb44d mysqld!row_vers_old_has_index_entry+0x206 [d:\qa-win-rel\build\storage\innobase\row\row0vers.cc @ 931]
            00000098`9002e920 00007ff7`12febb3d mysqld!row_purge_poss_sec+0x9d [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 261]
            00000098`9002ee70 00007ff7`12feb8c9 mysqld!row_purge_remove_sec_if_poss_leaf+0x1fd [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 477]
            00000098`9002f5d0 00007ff7`12feae75 mysqld!row_purge_remove_sec_if_poss+0x29 [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 584]
            00000098`9002f600 00007ff7`12feb59d mysqld!row_purge_del_mark+0x125 [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 655]
            00000098`9002f640 00007ff7`12feacc2 mysqld!row_purge_record_func+0xcd [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 958]
            00000098`9002f670 00007ff7`12fec2cd mysqld!row_purge+0x52 [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 1020]
            00000098`9002f6b0 00007ff7`12eea1db mysqld!row_purge_step+0x9d [d:\qa-win-rel\build\storage\innobase\row\row0purge.cc @ 1098]
            00000098`9002f6e0 00007ff7`12ee99cd mysqld!que_thr_step+0x25b [d:\qa-win-rel\build\storage\innobase\que\que0que.cc @ 1049]
            00000098`9002f710 00007ff7`12ee97ad mysqld!que_run_threads_low+0x5d [d:\qa-win-rel\build\storage\innobase\que\que0que.cc @ 1114]
            00000098`9002f7a0 00007ff7`12ef2417 mysqld!que_run_threads+0x3d [d:\qa-win-rel\build\storage\innobase\que\que0que.cc @ 1153]
            00000098`9002f820 00007ff7`12ef2eed mysqld!srv_task_execute+0x137 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2547]
            00000098`9002f890 00007ff8`21bb13d2 mysqld!srv_worker_thread+0xcd [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2592]
            00000098`9002f8c0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9002f8f0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              21 Id: 1c70.16a8 Suspend: 0 Teb: 00007ff7`12220000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9012fba8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9012fbb0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9012fc20 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`9012fc50 00007ff7`12ef1cfc mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`9012fc80 00007ff7`12ef2ee8 mysqld!srv_resume_thread+0x4c [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 927]
            00000098`9012fd00 00007ff8`21bb13d2 mysqld!srv_worker_thread+0xc8 [d:\qa-win-rel\build\storage\innobase\srv\srv0srv.cc @ 2592]
            00000098`9012fd30 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9012fd60 00000000`00000000 ntdll!RtlUserThreadStart+0x34

            # 22 Id: 1c70.c0c Suspend: 0 Teb: 00007ff7`1221e000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9022c508 000034d8`001a0018 ntdll!NtGetContextThread+0xa
            00000098`9022c510 00000001`00020060 0x000034d8`001a0018
            00000098`9022c518 00000000`00000000 0x00000001`00020060

              23 Id: 1c70.dbc Suspend: 0 Teb: 00007ff7`1221c000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9032f688 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9032f690 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9032f700 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`9032f730 00007ff7`12f96b4e mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`9032f760 00007ff8`21bb13d2 mysqld!buf_dump_thread+0x2e [d:\qa-win-rel\build\storage\innobase\buf\buf0dump.cc @ 779]
            00000098`9032f790 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9032f7c0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              24 Id: 1c70.2048 Suspend: 0 Teb: 00007ff7`1221a000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9042f608 00007ff8`1f64121a ntdll!NtDelayExecution+0xa
            00000098`9042f610 00007ff7`12f9cab6 KERNELBASE!SleepEx+0xa2
            00000098`9042f6b0 00007ff8`21bb13d2 mysqld!btr_defragment_thread+0xa6 [d:\qa-win-rel\build\storage\innobase\btr\btr0defragment.cc @ 761]
            00000098`9042fe30 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9042fe60 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              25 Id: 1c70.2084 Suspend: 0 Teb: 00007ff7`12218000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9052fc98 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9052fca0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9052fd10 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`9052fd40 00007ff7`12eabd7e mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`9052fd70 00007ff8`21bb13d2 mysqld!buf_resize_thread+0x7e [d:\qa-win-rel\build\storage\innobase\buf\buf0buf.cc @ 3084]
            00000098`9052ff00 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9052ff30 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              26 Id: 1c70.e74 Suspend: 0 Teb: 00007ff7`12216000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9062fcb8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9062fcc0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9062fd30 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`9062fd60 00007ff7`12e8b1cb mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_wait+0x64 [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1149]
            00000098`9062fd90 00007ff7`13105e7b mysqld!thd_destructor_proxy+0x17b [d:\qa-win-rel\build\storage\innobase\handler\ha_innodb.cc @ 337]
            00000098`9062fe80 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`9062feb0 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`9062fee0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9062ff10 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              27 Id: 1c70.1ecc Suspend: 0 Teb: 00007ff7`12214000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9893f988 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9893f990 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9893fa00 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`9893fa30 00007ff7`130530d8 mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_timedwait+0x6e [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1186]
            00000098`9893fa60 00007ff7`1301c562 mysqld!my_service_thread_sleep+0x178 [d:\qa-win-rel\build\storage\maria\ma_servicethread.c @ 115]
            00000098`9893fb00 00007ff7`13105e7b mysqld!ma_checkpoint_background+0x232 [d:\qa-win-rel\build\storage\maria\ma_checkpoint.c @ 709]
            00000098`9893fb80 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`9893fbb0 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`9893fbe0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9893fc10 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              28 Id: 1c70.6a0 Suspend: 0 Teb: 00007ff7`12212000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98a3f788 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`98a3f790 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`98a3f800 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`98a3f830 00007ff7`12d7e2d1 mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_wait+0x7e [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1149]
            00000098`98a3f860 00007ff7`13105e7b mysqld!binlog_background_thread+0x361 [d:\qa-win-rel\build\sql\log.cc @ 9858]
            00000098`98a3f940 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`98a3f970 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`98a3f9a0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98a3f9d0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              29 Id: 1c70.17c8 Suspend: 0 Teb: 00007ff7`12210000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98c38868 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`98c38870 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`98c388e0 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`98c38910 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`98c38940 00007ff7`12e8e012 mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`98c389b0 00007ff7`12fce61c mysqld!rw_lock_x_lock_func+0x172 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 759]
            00000098`98c38a40 00007ff7`12f618d9 mysqld!pfs_rw_lock_x_lock_func+0x9c [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 545]
            00000098`98c38ab0 00007ff7`12e7a1fb mysqld!row_mysql_lock_data_dictionary_func+0x29 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 2180]
            00000098`98c38af0 00007ff7`12d047ca mysqld!ha_innobase::create+0xab [d:\qa-win-rel\build\storage\innobase\handler\ha_innodb.cc @ 13240]
            00000098`98c38f80 00007ff7`12d04a1c mysqld!handler::ha_create+0x4a [d:\qa-win-rel\build\sql\handler.cc @ 4371]
            00000098`98c38fb0 00007ff7`12e26aa4 mysqld!ha_create_table+0x1bc [d:\qa-win-rel\build\sql\handler.cc @ 4742]
            00000098`98c3a0a0 00007ff7`12ce561c mysqld!rea_create_table+0xa4 [d:\qa-win-rel\build\sql\unireg.cc @ 428]
            00000098`98c3a0e0 00007ff7`12cec6f5 mysqld!create_table_impl+0x5dc [d:\qa-win-rel\build\sql\sql_table.cc @ 4899]
            00000098`98c3b630 00007ff7`12cf7507 mysqld!mysql_create_table_no_lock+0xe5 [d:\qa-win-rel\build\sql\sql_table.cc @ 5013]
            00000098`98c3b920 00007ff7`12cfb183 mysqld!create_table_from_items+0x297 [d:\qa-win-rel\build\sql\sql_insert.cc @ 4131]
            00000098`98c3c880 00007ff7`12c56dc1 mysqld!select_create::prepare+0xb3 [d:\qa-win-rel\build\sql\sql_insert.cc @ 4297]
            00000098`98c3c900 00007ff7`12c53780 mysqld!JOIN::prepare+0xc31 [d:\qa-win-rel\build\sql\sql_select.cc @ 1049]
            00000098`98c3c9c0 00007ff7`12c4c1ed mysqld!mysql_select+0x270 [d:\qa-win-rel\build\sql\sql_select.cc @ 3739]
            00000098`98c3ca70 00007ff7`12d67621 mysqld!handle_select+0x10d [d:\qa-win-rel\build\sql\sql_select.cc @ 364]
            00000098`98c3cb00 00007ff7`12d1017d mysqld!mysql_execute_command+0x1781 [d:\qa-win-rel\build\sql\sql_parse.cc @ 3936]
            00000098`98c3d7f0 00007ff7`12d109b7 mysqld!Prepared_statement::execute+0x24d [d:\qa-win-rel\build\sql\sql_prepare.cc @ 4773]
            00000098`98c3da20 00007ff7`12d11a5a mysqld!Prepared_statement::execute_loop+0xa7 [d:\qa-win-rel\build\sql\sql_prepare.cc @ 4203]
            00000098`98c3da70 00007ff7`12d66b65 mysqld!mysql_sql_stmt_execute+0x12a [d:\qa-win-rel\build\sql\sql_prepare.cc @ 3312]
            00000098`98c3db10 00007ff7`12d6ac84 mysqld!mysql_execute_command+0xcc5 [d:\qa-win-rel\build\sql\sql_parse.cc @ 3484]
            00000098`98c3e800 00007ff7`12d61b7f mysqld!mysql_parse+0x164 [d:\qa-win-rel\build\sql\sql_parse.cc @ 7907]
            00000098`98c3e860 00007ff7`12d62edc mysqld!dispatch_command+0x84f [d:\qa-win-rel\build\sql\sql_parse.cc @ 1808]
            00000098`98c3f780 00007ff7`12e50043 mysqld!do_command+0x16c [d:\qa-win-rel\build\sql\sql_parse.cc @ 1359]
            00000098`98c3f7c0 00007ff7`12e50200 mysqld!threadpool_process_request+0x53 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 366]
            00000098`98c3f7f0 00007ff8`21bb1d5d mysqld!tp_callback+0x70 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 192]
            00000098`98c3f820 00007ff8`2240c6d2 kernel32!BasepTpIoCallback+0x59
            00000098`98c3f870 00007ff8`22429264 ntdll!TppIopExecuteCallback+0x182
            00000098`98c3f900 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x8b4
            00000098`98c3fce0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98c3fd10 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              30 Id: 1c70.834 Suspend: 0 Teb: 00007ff7`1220e000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98d3fb78 00007ff8`1f641118 ntdll!NtWaitForSingleObject+0xa
            00000098`98d3fb80 00007ff7`12b76508 KERNELBASE!WaitForSingleObjectEx+0x94
            00000098`98d3fc20 00007ff7`13105e7b mysqld!handle_shutdown+0x38 [d:\qa-win-rel\build\sql\mysqld.cc @ 3670]
            00000098`98d3fc90 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`98d3fcc0 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`98d3fcf0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98d3fd20 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              31 Id: 1c70.f48 Suspend: 0 Teb: 00007ff7`1220c000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98e3fc68 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`98e3fc70 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`98e3fce0 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`98e3fd10 00007ff7`12df1f60 mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_wait+0x7d [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1149]
            00000098`98e3fd40 00007ff7`13105e7b mysqld!handle_slave_background+0x340 [d:\qa-win-rel\build\sql\slave.cc @ 335]
            00000098`98e3fec0 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`98e3fef0 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`98e3ff20 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98e3ff50 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              32 Id: 1c70.198c Suspend: 0 Teb: 00007ff7`1220a000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98f3eea8 00007ff8`1eea26eb ntdll!NtWaitForSingleObject+0xa
            00000098`98f3eeb0 00007ff8`1eeaaec5 mswsock!SockWaitForSingleObject+0x152
            00000098`98f3ef30 00007ff8`2184ffd3 mswsock!WSPSelect+0x79c
            00000098`98f3f0d0 00007ff7`12b6fa95 ws2_32!select+0x1db
            00000098`98f3f1c0 00007ff7`12b764be mysqld!handle_connections_sockets+0x155 [d:\qa-win-rel\build\sql\mysqld.cc @ 6596]
            00000098`98f3f7d0 00007ff7`13105e7b mysqld!handle_connections_sockets_thread+0xe [d:\qa-win-rel\build\sql\mysqld.cc @ 6795]
            00000098`98f3f800 00007ff7`13185781 mysqld!pthread_start+0x1b [d:\qa-win-rel\build\mysys\my_winthread.c @ 62]
            (Inline Function) --------`-------- mysqld!invoke_thread_procedure+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
            00000098`98f3f830 00007ff8`21bb13d2 mysqld!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x5d [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
            00000098`98f3f860 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98f3f890 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              33 Id: 1c70.dc4 Suspend: 0 Teb: 00007ff7`12208000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98f8b468 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`98f8b470 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`98f8b4e0 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`98f8b510 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`98f8b540 00007ff7`12e8e012 mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`98f8b5b0 00007ff7`12fce61c mysqld!rw_lock_x_lock_func+0x172 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 759]
            00000098`98f8b640 00007ff7`12f618d9 mysqld!pfs_rw_lock_x_lock_func+0x9c [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 545]
            00000098`98f8b6b0 00007ff7`12f5f299 mysqld!row_mysql_lock_data_dictionary_func+0x29 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 2180]
            00000098`98f8b6f0 00007ff7`12e7bd9f mysqld!row_drop_table_for_mysql+0xa9 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 3385]
            00000098`98f8bf80 00007ff7`12d04e4a mysqld!ha_innobase::delete_table+0x1ef [d:\qa-win-rel\build\storage\innobase\handler\ha_innodb.cc @ 13534]
            00000098`98f8c510 00007ff7`12cf0d2b mysqld!ha_delete_table+0xea [d:\qa-win-rel\build\sql\handler.cc @ 2352]
            00000098`98f8d5e0 00007ff7`12cf0764 mysqld!mysql_rm_table_no_locks+0x56b [d:\qa-win-rel\build\sql\sql_table.cc @ 2467]
            00000098`98f8dc60 00007ff7`12d6860e mysqld!mysql_rm_table+0x1e4 [d:\qa-win-rel\build\sql\sql_table.cc @ 2087]
            00000098`98f8dcf0 00007ff7`12d6ac84 mysqld!mysql_execute_command+0x276e [d:\qa-win-rel\build\sql\sql_parse.cc @ 4742]
            00000098`98f8e9e0 00007ff7`12d61b7f mysqld!mysql_parse+0x164 [d:\qa-win-rel\build\sql\sql_parse.cc @ 7907]
            00000098`98f8ea40 00007ff7`12d62edc mysqld!dispatch_command+0x84f [d:\qa-win-rel\build\sql\sql_parse.cc @ 1808]
            00000098`98f8f960 00007ff7`12e50043 mysqld!do_command+0x16c [d:\qa-win-rel\build\sql\sql_parse.cc @ 1359]
            00000098`98f8f9a0 00007ff7`12e50200 mysqld!threadpool_process_request+0x53 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 366]
            00000098`98f8f9d0 00007ff8`2242a9d7 mysqld!tp_callback+0x70 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 192]
            00000098`98f8fa00 00007ff8`22428df7 ntdll!TppWorkpExecuteCallback+0x2e7
            00000098`98f8fa70 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x447
            00000098`98f8fe50 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98f8fe80 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              34 Id: 1c70.b84 Suspend: 0 Teb: 00007ff7`12206000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`98fdab38 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`98fdab40 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`98fdabb0 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`98fdabe0 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`98fdac10 00007ff7`12e8dc3d mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`98fdac80 00007ff7`12ecde4c mysqld!rw_lock_sx_lock_func+0x17d [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 866]
            00000098`98fdad20 00007ff7`12ea1abe mysqld!pfs_rw_lock_sx_lock_func+0x9c [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 673]
            00000098`98fdad90 00007ff7`12ec8645 mysqld!buf_page_get_gen+0xfee [d:\qa-win-rel\build\storage\innobase\buf\buf0buf.cc @ 4804]
            00000098`98fdb070 00007ff7`12ff71ed mysqld!btr_cur_search_to_nth_level+0x855 [d:\qa-win-rel\build\storage\innobase\btr\btr0cur.cc @ 1115]
            00000098`98fdc100 00007ff7`12ff9351 mysqld!btr_pcur_open_low+0xbd [d:\qa-win-rel\build\storage\innobase\include\btr0pcur.ic @ 457]
            00000098`98fdc270 00007ff7`12ff8e8e mysqld!row_ins_clust_index_entry_low+0x231 [d:\qa-win-rel\build\storage\innobase\row\row0ins.cc @ 2576]
            00000098`98fdcc30 00007ff7`12ffb2f7 mysqld!row_ins_clust_index_entry+0xce [d:\qa-win-rel\build\storage\innobase\row\row0ins.cc @ 3174]
            00000098`98fdcc90 00007ff7`12ffb6b6 mysqld!row_ins_index_entry+0x17 [d:\qa-win-rel\build\storage\innobase\row\row0ins.cc @ 3294]
            00000098`98fdccd0 00007ff7`12ff79f0 mysqld!row_ins_index_entry_step+0x36 [d:\qa-win-rel\build\storage\innobase\row\row0ins.cc @ 3446]
            00000098`98fdcd00 00007ff7`12ffcf06 mysqld!row_ins+0x210 [d:\qa-win-rel\build\storage\innobase\row\row0ins.cc @ 3582]
            00000098`98fdcd40 00007ff7`12f609d0 mysqld!row_ins_step+0x106 [d:\qa-win-rel\build\storage\innobase\row\row0ins.cc @ 3821]
            00000098`98fdcd70 00007ff7`12e8ae9e mysqld!row_insert_for_mysql+0x240 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 1411]
            00000098`98fdd0d0 00007ff7`12d08a77 mysqld!ha_innobase::write_row+0x28e [d:\qa-win-rel\build\storage\innobase\handler\ha_innodb.cc @ 8442]
            00000098`98fdd210 00007ff7`12cfca83 mysqld!handler::ha_write_row+0x107 [d:\qa-win-rel\build\sql\handler.cc @ 6003]
            00000098`98fdd290 00007ff7`12d9c403 mysqld!write_record+0x83 [d:\qa-win-rel\build\sql\sql_insert.cc @ 1929]
            00000098`98fdd320 00007ff7`12d9ae24 mysqld!read_sep_field+0x4c3 [d:\qa-win-rel\build\sql\sql_load.cc @ 1256]
            00000098`98fdd3b0 00007ff7`12d68801 mysqld!mysql_load+0xc94 [d:\qa-win-rel\build\sql\sql_load.cc @ 647]
            00000098`98fddac0 00007ff7`12d6ac84 mysqld!mysql_execute_command+0x2961 [d:\qa-win-rel\build\sql\sql_parse.cc @ 4814]
            00000098`98fde7b0 00007ff7`12d61b7f mysqld!mysql_parse+0x164 [d:\qa-win-rel\build\sql\sql_parse.cc @ 7907]
            00000098`98fde810 00007ff7`12d62edc mysqld!dispatch_command+0x84f [d:\qa-win-rel\build\sql\sql_parse.cc @ 1808]
            00000098`98fdf730 00007ff7`12e50043 mysqld!do_command+0x16c [d:\qa-win-rel\build\sql\sql_parse.cc @ 1359]
            00000098`98fdf770 00007ff7`12e50200 mysqld!threadpool_process_request+0x53 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 366]
            00000098`98fdf7a0 00007ff8`21bb1d5d mysqld!tp_callback+0x70 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 192]
            00000098`98fdf7d0 00007ff8`2240c6d2 kernel32!BasepTpIoCallback+0x59
            00000098`98fdf820 00007ff8`22429264 ntdll!TppIopExecuteCallback+0x182
            00000098`98fdf8b0 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x8b4
            00000098`98fdfc90 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`98fdfcc0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              35 Id: 1c70.19d4 Suspend: 0 Teb: 00007ff7`12204000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9902f7d8 00007ff8`224290f6 ntdll!NtWaitForWorkViaWorkerFactory+0xa
            00000098`9902f7e0 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x746
            00000098`9902fbc0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9902fbf0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              36 Id: 1c70.298 Suspend: 0 Teb: 00007ff7`12202000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9907d758 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9907d760 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9907d7d0 00007ff7`13108b97 KERNELBASE!SleepConditionVariableCS+0x28
            00000098`9907d800 00007ff7`12c8cf7a mysqld!pthread_cond_timedwait+0x27 [d:\qa-win-rel\build\mysys\my_wincond.c @ 85]
            (Inline Function) --------`-------- mysqld!inline_mysql_cond_timedwait+0x6e [d:\qa-win-rel\build\include\mysql\psi\mysql_thread.h @ 1186]
            00000098`9907d830 00007ff7`12c8a1b1 mysqld!MDL_wait::timed_wait+0x16a [d:\qa-win-rel\build\sql\mdl.cc @ 1091]
            00000098`9907d8f0 00007ff7`12d49ee5 mysqld!TABLE_SHARE::wait_for_old_version+0xf1 [d:\qa-win-rel\build\sql\table.cc @ 4409]
            00000098`9907d9a0 00007ff7`12e467d3 mysqld!close_cached_tables+0x1c5 [d:\qa-win-rel\build\sql\sql_base.cc @ 452]
            00000098`9907da40 00007ff7`12d6947e mysqld!reload_acl_and_cache+0x4d3 [d:\qa-win-rel\build\sql\sql_reload.cc @ 334]
            00000098`9907db00 00007ff7`12d6ac84 mysqld!mysql_execute_command+0x35de [d:\qa-win-rel\build\sql\sql_parse.cc @ 5384]
            00000098`9907e7f0 00007ff7`12d61b7f mysqld!mysql_parse+0x164 [d:\qa-win-rel\build\sql\sql_parse.cc @ 7907]
            00000098`9907e850 00007ff7`12d62edc mysqld!dispatch_command+0x84f [d:\qa-win-rel\build\sql\sql_parse.cc @ 1808]
            00000098`9907f770 00007ff7`12e50043 mysqld!do_command+0x16c [d:\qa-win-rel\build\sql\sql_parse.cc @ 1359]
            00000098`9907f7b0 00007ff7`12e50200 mysqld!threadpool_process_request+0x53 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 366]
            00000098`9907f7e0 00007ff8`2242a9d7 mysqld!tp_callback+0x70 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 192]
            00000098`9907f810 00007ff8`22428df7 ntdll!TppWorkpExecuteCallback+0x2e7
            00000098`9907f880 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x447
            00000098`9907fc60 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9907fc90 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              37 Id: 1c70.160 Suspend: 0 Teb: 00007ff7`12200000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`990cf768 00007ff8`224290f6 ntdll!NtWaitForWorkViaWorkerFactory+0xa
            00000098`990cf770 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x746
            00000098`990cfb50 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`990cfb80 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              38 Id: 1c70.19ac Suspend: 0 Teb: 00007ff7`121fe000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9911b2a8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9911b2b0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9911b320 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`9911b350 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`9911b380 00007ff7`12e8e012 mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`9911b3f0 00007ff7`12fce61c mysqld!rw_lock_x_lock_func+0x172 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 759]
            00000098`9911b480 00007ff7`12f618d9 mysqld!pfs_rw_lock_x_lock_func+0x9c [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 545]
            00000098`9911b4f0 00007ff7`12f5f299 mysqld!row_mysql_lock_data_dictionary_func+0x29 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 2180]
            00000098`9911b530 00007ff7`12e7bd9f mysqld!row_drop_table_for_mysql+0xa9 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 3385]
            00000098`9911bdc0 00007ff7`12d04e4a mysqld!ha_innobase::delete_table+0x1ef [d:\qa-win-rel\build\storage\innobase\handler\ha_innodb.cc @ 13534]
            00000098`9911c350 00007ff7`12cf0d2b mysqld!ha_delete_table+0xea [d:\qa-win-rel\build\sql\handler.cc @ 2352]
            00000098`9911d420 00007ff7`12cf0764 mysqld!mysql_rm_table_no_locks+0x56b [d:\qa-win-rel\build\sql\sql_table.cc @ 2467]
            00000098`9911daa0 00007ff7`12d6860e mysqld!mysql_rm_table+0x1e4 [d:\qa-win-rel\build\sql\sql_table.cc @ 2087]
            00000098`9911db30 00007ff7`12d6ac84 mysqld!mysql_execute_command+0x276e [d:\qa-win-rel\build\sql\sql_parse.cc @ 4742]
            00000098`9911e820 00007ff7`12d61b7f mysqld!mysql_parse+0x164 [d:\qa-win-rel\build\sql\sql_parse.cc @ 7907]
            00000098`9911e880 00007ff7`12d62edc mysqld!dispatch_command+0x84f [d:\qa-win-rel\build\sql\sql_parse.cc @ 1808]
            00000098`9911f7a0 00007ff7`12e50043 mysqld!do_command+0x16c [d:\qa-win-rel\build\sql\sql_parse.cc @ 1359]
            00000098`9911f7e0 00007ff7`12e50200 mysqld!threadpool_process_request+0x53 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 366]
            00000098`9911f810 00007ff8`2242a9d7 mysqld!tp_callback+0x70 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 192]
            00000098`9911f840 00007ff8`22428df7 ntdll!TppWorkpExecuteCallback+0x2e7
            00000098`9911f8b0 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x447
            00000098`9911fc90 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9911fcc0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              39 Id: 1c70.5f8 Suspend: 0 Teb: 00007ff7`121fc000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9916bab8 00007ff8`2245a192 ntdll!NtWaitForAlertByThreadId+0xa
            00000098`9916bac0 00007ff8`1f64d508 ntdll!RtlSleepConditionVariableCS+0xc2
            00000098`9916bb30 00007ff7`12e8b7e8 KERNELBASE!SleepConditionVariableCS+0x28
            (Inline Function) --------`-------- mysqld!os_event::wait+0x12 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 159]
            00000098`9916bb60 00007ff7`12e8d2ed mysqld!os_event::wait_low+0x48 [d:\qa-win-rel\build\storage\innobase\os\os0event.cc @ 336]
            00000098`9916bb90 00007ff7`12e8e384 mysqld!sync_array_wait_event+0xad [d:\qa-win-rel\build\storage\innobase\sync\sync0arr.cc @ 477]
            00000098`9916bc00 00007ff7`12e8e1df mysqld!rw_lock_x_lock_wait_func+0x114 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 490]
            00000098`9916bc80 00007ff7`12e8dee4 mysqld!rw_lock_x_lock_low+0xbf [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 543]
            00000098`9916bcb0 00007ff7`12fce61c mysqld!rw_lock_x_lock_func+0x44 [d:\qa-win-rel\build\storage\innobase\sync\sync0rw.cc @ 692]
            00000098`9916bd40 00007ff7`12f618d9 mysqld!pfs_rw_lock_x_lock_func+0x9c [d:\qa-win-rel\build\storage\innobase\include\sync0rw.ic @ 545]
            00000098`9916bdb0 00007ff7`12f5f299 mysqld!row_mysql_lock_data_dictionary_func+0x29 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 2180]
            00000098`9916bdf0 00007ff7`12e7bd9f mysqld!row_drop_table_for_mysql+0xa9 [d:\qa-win-rel\build\storage\innobase\row\row0mysql.cc @ 3385]
            00000098`9916c680 00007ff7`12e398e4 mysqld!ha_innobase::delete_table+0x1ef [d:\qa-win-rel\build\storage\innobase\handler\ha_innodb.cc @ 13534]
            00000098`9916cc10 00007ff7`12e38a8a mysqld!THD::rm_temporary_table+0x104 [d:\qa-win-rel\build\sql\temporary_tables.cc @ 676]
            00000098`9916cee0 00007ff7`12e38485 mysqld!THD::free_tmp_table_share+0x3a [d:\qa-win-rel\build\sql\temporary_tables.cc @ 1447]
            00000098`9916cf10 00007ff7`12cf0a24 mysqld!THD::drop_temporary_table+0x125 [d:\qa-win-rel\build\sql\temporary_tables.cc @ 642]
            00000098`9916cf50 00007ff7`12cf0764 mysqld!mysql_rm_table_no_locks+0x264 [d:\qa-win-rel\build\sql\sql_table.cc @ 2295]
            00000098`9916d5d0 00007ff7`12d6860e mysqld!mysql_rm_table+0x1e4 [d:\qa-win-rel\build\sql\sql_table.cc @ 2087]
            00000098`9916d660 00007ff7`12d6ac84 mysqld!mysql_execute_command+0x276e [d:\qa-win-rel\build\sql\sql_parse.cc @ 4742]
            00000098`9916e350 00007ff7`12d61b7f mysqld!mysql_parse+0x164 [d:\qa-win-rel\build\sql\sql_parse.cc @ 7907]
            00000098`9916e3b0 00007ff7`12d62edc mysqld!dispatch_command+0x84f [d:\qa-win-rel\build\sql\sql_parse.cc @ 1808]
            00000098`9916f2d0 00007ff7`12e50043 mysqld!do_command+0x16c [d:\qa-win-rel\build\sql\sql_parse.cc @ 1359]
            00000098`9916f310 00007ff7`12e50200 mysqld!threadpool_process_request+0x53 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 366]
            00000098`9916f340 00007ff8`21bb1d5d mysqld!tp_callback+0x70 [d:\qa-win-rel\build\sql\threadpool_common.cc @ 192]
            00000098`9916f370 00007ff8`2240c6d2 kernel32!BasepTpIoCallback+0x59
            00000098`9916f3c0 00007ff8`22429264 ntdll!TppIopExecuteCallback+0x182
            00000098`9916f450 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x8b4
            00000098`9916f830 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9916f860 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              40 Id: 1c70.1da0 Suspend: 0 Teb: 00007ff7`121fa000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9926f8d8 00007ff8`224290f6 ntdll!NtWaitForWorkViaWorkerFactory+0xa
            00000098`9926f8e0 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x746
            00000098`9926fcc0 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9926fcf0 00000000`00000000 ntdll!RtlUserThreadStart+0x34

              41 Id: 1c70.71c Suspend: 0 Teb: 00007ff7`121f8000 Unfrozen
            Child-SP RetAddr Call Site
            00000098`9b32f878 00007ff8`224290f6 ntdll!NtWaitForWorkViaWorkerFactory+0xa
            00000098`9b32f880 00007ff8`21bb13d2 ntdll!TppWorkerThread+0x746
            00000098`9b32fc60 00007ff8`224054e4 kernel32!BaseThreadInitThunk+0x22
            00000098`9b32fc90 00000000`00000000 ntdll!RtlUserThreadStart+0x34
            quit:
            {noformat} ]

            MDEV-16759 was explained by the corruption of InnoDB adaptive hash index (AHI) during a TRUNCATE TABLE operation. It turned out to have been fixed by MDEV-16515 (MariaDB Server 10.1.35, 10.2.9, 10.3.8), which fixed a regression in an earlier fix of MDEV-16283 (which also fixes MDEV-14727 and MDEV-14491) in MariaDB Server 10.1.34, 10.2.16, 10.3.8.

            So, we have proof that the use of DDL operations and the InnoDB adaptive hash index could cause permanent corruption of data, which might go undetected for a long time (possibly detected after ugprading).
            I believe that MDEV-16759 case of TRUNCATE TABLE should trigger similar corruption in 5.5 and 10.0 (and also MySQL 5.6). Some forms of ALTER TABLE could be affected as well, maybe even DROP TABLE (but that would more likely result in a server crash when dereferencing a stale block->index pointer if the memory has been reused). In MariaDB 10.2 (and MySQL 5.7), TRUNCATE TABLE works in a different way, so the same mechanism for corruption might not work.

            For older versions, a work-around to prevent future corruption (not to heal any existing corruption) would be

            SET GLOBAL innodb_adaptive_hash_index=OFF;
            

            The corruption was repeated even with innodb_change_buffering=none, so it looks like I was wrong to suspect the InnoDB change buffer.

            marko Marko Mäkelä added a comment - MDEV-16759 was explained by the corruption of InnoDB adaptive hash index (AHI) during a TRUNCATE TABLE operation. It turned out to have been fixed by MDEV-16515 (MariaDB Server 10.1.35, 10.2.9, 10.3.8), which fixed a regression in an earlier fix of MDEV-16283 (which also fixes MDEV-14727 and MDEV-14491 ) in MariaDB Server 10.1.34, 10.2.16, 10.3.8. So, we have proof that the use of DDL operations and the InnoDB adaptive hash index could cause permanent corruption of data, which might go undetected for a long time (possibly detected after ugprading). I believe that MDEV-16759 case of TRUNCATE TABLE should trigger similar corruption in 5.5 and 10.0 (and also MySQL 5.6). Some forms of ALTER TABLE could be affected as well, maybe even DROP TABLE (but that would more likely result in a server crash when dereferencing a stale block->index pointer if the memory has been reused). In MariaDB 10.2 (and MySQL 5.7), TRUNCATE TABLE works in a different way, so the same mechanism for corruption might not work. For older versions, a work-around to prevent future corruption (not to heal any existing corruption) would be SET GLOBAL innodb_adaptive_hash_index= OFF ; The corruption was repeated even with innodb_change_buffering=none , so it looks like I was wrong to suspect the InnoDB change buffer.
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä added a comment - - edited

            In MariaDB 10.2.2 to 10.2.13, FOREIGN KEY constraints could cause corruption. See MDEV-15199.

            marko Marko Mäkelä added a comment - - edited In MariaDB 10.2.2 to 10.2.13, FOREIGN KEY constraints could cause corruption. See MDEV-15199 .
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            elenst Elena Stepanova made changes -

            I remember seeing this form of corruption starting from MySQL 5.5, not sure of the year, but something between 2010 and 2012. Now we have finally found a regression that was introduced by a MySQL bug fix in 2010. This could explain corruption for users of FOREIGN KEY constraints that include CASCADE or SET NULL rules:
            MDEV-18272 InnoDB fails to rollback after exceeding FOREIGN KEY recursion depth

            I do not have enough information to tell if this is the only remaining cause of such corruption. There have also been later corruption bugs introduced and fixed in later versions, as noted in earlier comments in this ticket. And the corruption would not necessarily be noticed until much later.

            marko Marko Mäkelä added a comment - I remember seeing this form of corruption starting from MySQL 5.5, not sure of the year, but something between 2010 and 2012. Now we have finally found a regression that was introduced by a MySQL bug fix in 2010. This could explain corruption for users of FOREIGN KEY constraints that include CASCADE or SET NULL rules: MDEV-18272 InnoDB fails to rollback after exceeding FOREIGN KEY recursion depth I do not have enough information to tell if this is the only remaining cause of such corruption. There have also been later corruption bugs introduced and fixed in later versions, as noted in earlier comments in this ticket. And the corruption would not necessarily be noticed until much later.

            MDEV-19338 is a newer regression causing !cursor->index->is_committed() to happen.

            The one is specific to VIRTUAL columns that are INDEXed, and replicated over Galera. No FOREIGN KEYs.

            darkain Vincent Milum Jr added a comment - MDEV-19338 is a newer regression causing !cursor->index->is_committed() to happen. The one is specific to VIRTUAL columns that are INDEXed, and replicated over Galera. No FOREIGN KEYs.
            marko Marko Mäkelä made changes -

            Starting with MariaDB 10.2.2 (and MariaDB 5.7.9), this class of corruption might be a consequence MDEV-15326, which is a race condition at transaction commit, which causes a corruption of the transactional locks. It is hard to reproduce that corruption, and I cannot say for sure if it could lead to indexes getting inconsistent with each other.

            Starting with MariaDB 10.3.2 (and MDEV-11369 instant ADD COLUMN), instantly added columns can get corrupted if a delete-marked record is replaced by another one (MDEV-20066). If the instantly added column is indexed, the value in the secondary index would not match the wrong value in the clustered index.

            marko Marko Mäkelä added a comment - Starting with MariaDB 10.2.2 (and MariaDB 5.7.9), this class of corruption might be a consequence MDEV-15326 , which is a race condition at transaction commit, which causes a corruption of the transactional locks. It is hard to reproduce that corruption, and I cannot say for sure if it could lead to indexes getting inconsistent with each other. Starting with MariaDB 10.3.2 (and MDEV-11369 instant ADD COLUMN ), instantly added columns can get corrupted if a delete-marked record is replaced by another one ( MDEV-20066 ). If the instantly added column is indexed, the value in the secondary index would not match the wrong value in the clustered index.
            marko Marko Mäkelä made changes -
            julien.fritsch Julien Fritsch made changes -
            Priority Critical [ 2 ] Major [ 3 ]
            marko Marko Mäkelä made changes -
            rpizzi Rick Pizzi (Inactive) made changes -
            Affects Version/s 10.2.31 [ 24017 ]
            Priority Major [ 3 ] Critical [ 2 ]
            thiru Thirunarayanan Balathandayuthapani made changes -
            Status In Progress [ 3 ] Stalled [ 10000 ]
            elenst Elena Stepanova made changes -
            marko Marko Mäkelä made changes -
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 10.2 [ 14601 ]
            Fix Version/s 10.1 [ 16100 ]
            thiru Thirunarayanan Balathandayuthapani made changes -
            Labels innodb innodb need_rr
            thiru Thirunarayanan Balathandayuthapani made changes -
            Labels innodb need_rr innodb need_feedback need_rr
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -

            Corruption can be caused by various things, and I am afraid that some cases (such as MDEV-23565) may always remain a mystery.

            Currently, MDEV-22924 looks most promising for this class of problems. It has been claimed there that we reproduced some corruption of secondary indexes in our internal testing. However, the initial rr replay trace that I analyzed there was a false start, because it involved a scenario similar to MDEV-15532 where an incorrect error handling for XA transactions would allow ALTER ONLINE TABLE to corrupt the table.

            It is hard to reproduce this failure, but I am confident that it will eventually happen. With an rr replay trace, it will be possible to follow the exact sequence of events.

            Note: I am not claiming that MDEV-22924 will fix all cases of this kind of secondary index index corruption. And the database will not be ‘uncorrupted’ automatically. It would have to be repaired by dropping and creating the secondary indexes, or by rebuilding the affected tables.

            marko Marko Mäkelä added a comment - Corruption can be caused by various things, and I am afraid that some cases (such as MDEV-23565 ) may always remain a mystery. Currently, MDEV-22924 looks most promising for this class of problems. It has been claimed there that we reproduced some corruption of secondary indexes in our internal testing. However, the initial rr replay trace that I analyzed there was a false start, because it involved a scenario similar to MDEV-15532 where an incorrect error handling for XA transactions would allow ALTER ONLINE TABLE to corrupt the table. It is hard to reproduce this failure, but I am confident that it will eventually happen. With an rr replay trace, it will be possible to follow the exact sequence of events. Note: I am not claiming that MDEV-22924 will fix all cases of this kind of secondary index index corruption. And the database will not be ‘uncorrupted’ automatically. It would have to be repaired by dropping and creating the secondary indexes, or by rebuilding the affected tables.
            marko Marko Mäkelä made changes -

            On MDEV-22373 (which might be related to this) we did recreate the indexes (https://jira.mariadb.org/browse/MDEV-22373?focusedCommentId=161049&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-161049)
            We, in fact, rebuilt the whole DB from a mysqdump file and crashes showed up as well.

            marostegui Manuel Arostegui added a comment - On MDEV-22373 (which might be related to this) we did recreate the indexes ( https://jira.mariadb.org/browse/MDEV-22373?focusedCommentId=161049&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-161049 ) We, in fact, rebuilt the whole DB from a mysqdump file and crashes showed up as well.

            marostegui, yes, MDEV-22373 belongs to this family of bugs. I am basically looking for an SQL-only way of reproducing this problem. Ideally, we would have an rr replay trace leading from an empty database (or something that was just initialized from a SQL dump) to the corruption. https://rr-project.org is a very powerful tool for analyzing any nondeterministic failures. But, obviously users or customers cannot share their confidential data, and it is not easy to shrink the dataset either. As far as I understand, your data is not confidential, but still, it probably is practically impossible to shrink the input to something that would reproduce the problem within a reasonable number of rr replay steps.

            I have speculated earlier that innodb_change_buffering=none or innodb_adaptive_hash_index=OFF could make this corruption disappear. That is only a gut feeling, and the performance impact could prevent from deploying those settings this in practice.

            marko Marko Mäkelä added a comment - marostegui , yes, MDEV-22373 belongs to this family of bugs. I am basically looking for an SQL-only way of reproducing this problem. Ideally, we would have an rr replay trace leading from an empty database (or something that was just initialized from a SQL dump) to the corruption. https://rr-project.org is a very powerful tool for analyzing any nondeterministic failures. But, obviously users or customers cannot share their confidential data, and it is not easy to shrink the dataset either. As far as I understand, your data is not confidential, but still, it probably is practically impossible to shrink the input to something that would reproduce the problem within a reasonable number of rr replay steps. I have speculated earlier that innodb_change_buffering=none or innodb_adaptive_hash_index=OFF could make this corruption disappear. That is only a gut feeling, and the performance impact could prevent from deploying those settings this in practice.
            marostegui Manuel Arostegui added a comment - - edited

            Yes, unfortunately the hosts where we are seeing the crashes are 9TB, so hard to provide a dataset for that. But as you say, it is indeed public data

            marostegui Manuel Arostegui added a comment - - edited Yes, unfortunately the hosts where we are seeing the crashes are 9TB, so hard to provide a dataset for that. But as you say, it is indeed public data
            Roel Roel Van de Paar added a comment - - edited

            Btw, the backtrace in this comment looks very close/similar to the backtrace in MDEV-22255 (debug only), and also check MDEV-22855 (debug only).

            Roel Roel Van de Paar added a comment - - edited Btw, the backtrace in this comment looks very close/similar to the backtrace in MDEV-22255 (debug only), and also check MDEV-22855 (debug only).

            MDEV-22924 was filed for a bug that MDEV-20301 introduced to the secondary index MVCC code in MariaDB Server 10.2.27, 10.3.18, 10.4.8, 10.5.0. As far as I understand, that bug should not cause ‘transient corruption’, that is, some secondary index records may be wrongly treated as non-existing. If such reads were used as input for an UPDATE or DELETE transaction, then the database could become corrupted. But, UPDATE and DELETE themselves always perform locking reads, which should be unaffected by the bug. Also the purge of transactions, which is performing non-locking reads, is using a different code path (row_search_on_row_ref()) that looks unaffected by the bug.

            We are aware of ‘permanent corruption’ bugs that predate MDEV-22924. The chase for those continues.

            marko Marko Mäkelä added a comment - MDEV-22924 was filed for a bug that MDEV-20301 introduced to the secondary index MVCC code in MariaDB Server 10.2.27, 10.3.18, 10.4.8, 10.5.0. As far as I understand, that bug should not cause ‘transient corruption’, that is, some secondary index records may be wrongly treated as non-existing. If such reads were used as input for an UPDATE or DELETE transaction, then the database could become corrupted. But, UPDATE and DELETE themselves always perform locking reads, which should be unaffected by the bug. Also the purge of transactions, which is performing non-locking reads, is using a different code path ( row_search_on_row_ref() ) that looks unaffected by the bug. We are aware of ‘permanent corruption’ bugs that predate MDEV-22924 . The chase for those continues.
            marko Marko Mäkelä made changes -
            elenst Elena Stepanova made changes -
            Labels innodb need_feedback need_rr innodb need_rr

            rr:/home/mleich/RQG/storage/1603383112/MDEV-9663-TBR-1/dev/shm/vardir/1603383112/37/1/rr
            _RR_TRACE_DIR="." rr replay --mark-stdio
             
            (rr) bt
            #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
            #1  0x000029ab0b252859 in __GI_abort () at abort.c:79
            #2  0x000055bf8d5353b8 in ut_dbg_assertion_failed (expr=expr@entry=0x55bf8e47e7c0 "!cursor->index->is_committed()", file=file@entry=0x55bf8e47ab60 "/home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc", line=line@entry=218)
                at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/ut/ut0dbg.cc:60
            #3  0x000055bf8d25f9ce in row_ins_sec_index_entry_by_modify (flags=flags@entry=0, mode=mode@entry=2, cursor=cursor@entry=0x1c9318e18bd0, offsets=offsets@entry=0x1c9318e18a40, offsets_heap=<optimized out>, heap=heap@entry=0x61a000363c98, 
                entry=<optimized out>, thr=<optimized out>, mtr=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:218
            #4  0x000055bf8d26ea2c in row_ins_sec_index_entry_low (flags=flags@entry=0, mode=<optimized out>, mode@entry=2, index=index@entry=0x61700020b1a0, offsets_heap=offsets_heap@entry=0x61a000678698, heap=heap@entry=0x61a000363c98, 
                entry=entry@entry=0x6170002d46a0, trx_id=<optimized out>, thr=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3062
            #5  0x000055bf8d27d99f in row_ins_sec_index_entry (index=index@entry=0x61700020b1a0, entry=entry@entry=0x6170002d46a0, thr=thr@entry=0x62100004a8a8, check_foreign=check_foreign@entry=true)
                at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3276
            #6  0x000055bf8d27e563 in row_ins_index_entry (index=0x61700020b1a0, entry=0x6170002d46a0, thr=thr@entry=0x62100004a8a8) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3323
            #7  0x000055bf8d27e982 in row_ins_index_entry_step (node=node@entry=0x62100004a3c8, thr=thr@entry=0x62100004a8a8) at /usr/include/c++/9/bits/stl_iterator.h:819
            #8  0x000055bf8d2801c1 in row_ins (node=node@entry=0x62100004a3c8, thr=thr@entry=0x62100004a8a8) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3627
            #9  0x000055bf8d280eac in row_ins_step (thr=thr@entry=0x62100004a8a8) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3766
            #10 0x000055bf8d2d74c7 in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x61a0004266b8 "\350\001", prebuilt=0x621000049da0, ins_mode=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0mysql.cc:1421
            #11 0x000055bf8cea698b in ha_innobase::write_row (this=0x61d000f6feb8, record=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/handler/ha_innodb.cc:7572
            #12 0x000055bf8c2a138f in handler::ha_write_row (this=0x61d000f6feb8, buf=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/handler.cc:7146
            #13 0x000055bf8b8a30bc in write_record (thd=thd@entry=0x62b0000d9218, table=table@entry=0x61900001c798, info=info@entry=0x1c9318e1b630, sink=sink@entry=0x0) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_insert.cc:2104
            #14 0x000055bf8b8cb423 in mysql_insert (thd=thd@entry=0x62b0000d9218, table_list=0x62b0000a8590, fields=..., values_list=..., update_fields=..., update_values=..., duplic=<optimized out>, ignore=<optimized out>, result=<optimized out>)
                at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_insert.cc:1099
            #15 0x000055bf8b9bb917 in mysql_execute_command (thd=thd@entry=0x62b0000d9218) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_parse.cc:4550
            #16 0x000055bf8b972c7c in mysql_parse (thd=thd@entry=0x62b0000d9218, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1c9318e1ce50, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false)
                at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_parse.cc:8010
            #17 0x000055bf8b9a42c6 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x62b0000d9218, 
                packet=packet@entry=0x629000ba9219 " INSERT INTO t4 (col1,col2, col_int, col_string, col_text) VALUES /* 1 */ (1,1,1,REPEAT(SUBSTR(CAST( 1 AS CHAR),1,1), 10),REPEAT(SUBSTR(CAST( 1 AS CHAR),1,1), @fill_amount) ), (1,1,1,REPEAT(SUBSTR(CAS"..., 
                packet_length=packet_length@entry=317, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_class.h:1252
            #18 0x000055bf8b9af76d in do_command (thd=0x62b0000d9218) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_parse.cc:1352
            #19 0x000055bf8be44a02 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x608000008a38, put_in_cache=put_in_cache@entry=true) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_connect.cc:1410
            #20 0x000055bf8be45c38 in handle_one_connection (arg=arg@entry=0x608000008a38) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_connect.cc:1312
            #21 0x000055bf8cc65fc5 in pfs_spawn_thread (arg=0x61500000c398) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/perfschema/pfs.cc:2201
            #22 0x00007b591d963609 in start_thread (arg=<optimized out>) at pthread_create.c:477
            #23 0x000029ab0b34f103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
            (rr)
             
            The corresponding archive is
            /home/mleich/RQG/storage/1603383112/008920.tgz
            

            mleich Matthias Leich added a comment - rr:/home/mleich/RQG/storage/1603383112/MDEV-9663-TBR-1/dev/shm/vardir/1603383112/37/1/rr _RR_TRACE_DIR="." rr replay --mark-stdio   (rr) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x000029ab0b252859 in __GI_abort () at abort.c:79 #2 0x000055bf8d5353b8 in ut_dbg_assertion_failed (expr=expr@entry=0x55bf8e47e7c0 "!cursor->index->is_committed()", file=file@entry=0x55bf8e47ab60 "/home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc", line=line@entry=218) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/ut/ut0dbg.cc:60 #3 0x000055bf8d25f9ce in row_ins_sec_index_entry_by_modify (flags=flags@entry=0, mode=mode@entry=2, cursor=cursor@entry=0x1c9318e18bd0, offsets=offsets@entry=0x1c9318e18a40, offsets_heap=<optimized out>, heap=heap@entry=0x61a000363c98, entry=<optimized out>, thr=<optimized out>, mtr=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:218 #4 0x000055bf8d26ea2c in row_ins_sec_index_entry_low (flags=flags@entry=0, mode=<optimized out>, mode@entry=2, index=index@entry=0x61700020b1a0, offsets_heap=offsets_heap@entry=0x61a000678698, heap=heap@entry=0x61a000363c98, entry=entry@entry=0x6170002d46a0, trx_id=<optimized out>, thr=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3062 #5 0x000055bf8d27d99f in row_ins_sec_index_entry (index=index@entry=0x61700020b1a0, entry=entry@entry=0x6170002d46a0, thr=thr@entry=0x62100004a8a8, check_foreign=check_foreign@entry=true) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3276 #6 0x000055bf8d27e563 in row_ins_index_entry (index=0x61700020b1a0, entry=0x6170002d46a0, thr=thr@entry=0x62100004a8a8) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3323 #7 0x000055bf8d27e982 in row_ins_index_entry_step (node=node@entry=0x62100004a3c8, thr=thr@entry=0x62100004a8a8) at /usr/include/c++/9/bits/stl_iterator.h:819 #8 0x000055bf8d2801c1 in row_ins (node=node@entry=0x62100004a3c8, thr=thr@entry=0x62100004a8a8) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3627 #9 0x000055bf8d280eac in row_ins_step (thr=thr@entry=0x62100004a8a8) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0ins.cc:3766 #10 0x000055bf8d2d74c7 in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x61a0004266b8 "\350\001", prebuilt=0x621000049da0, ins_mode=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/row/row0mysql.cc:1421 #11 0x000055bf8cea698b in ha_innobase::write_row (this=0x61d000f6feb8, record=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/innobase/handler/ha_innodb.cc:7572 #12 0x000055bf8c2a138f in handler::ha_write_row (this=0x61d000f6feb8, buf=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/handler.cc:7146 #13 0x000055bf8b8a30bc in write_record (thd=thd@entry=0x62b0000d9218, table=table@entry=0x61900001c798, info=info@entry=0x1c9318e1b630, sink=sink@entry=0x0) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_insert.cc:2104 #14 0x000055bf8b8cb423 in mysql_insert (thd=thd@entry=0x62b0000d9218, table_list=0x62b0000a8590, fields=..., values_list=..., update_fields=..., update_values=..., duplic=<optimized out>, ignore=<optimized out>, result=<optimized out>) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_insert.cc:1099 #15 0x000055bf8b9bb917 in mysql_execute_command (thd=thd@entry=0x62b0000d9218) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_parse.cc:4550 #16 0x000055bf8b972c7c in mysql_parse (thd=thd@entry=0x62b0000d9218, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1c9318e1ce50, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_parse.cc:8010 #17 0x000055bf8b9a42c6 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x62b0000d9218, packet=packet@entry=0x629000ba9219 " INSERT INTO t4 (col1,col2, col_int, col_string, col_text) VALUES /* 1 */ (1,1,1,REPEAT(SUBSTR(CAST( 1 AS CHAR),1,1), 10),REPEAT(SUBSTR(CAST( 1 AS CHAR),1,1), @fill_amount) ), (1,1,1,REPEAT(SUBSTR(CAS"..., packet_length=packet_length@entry=317, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_class.h:1252 #18 0x000055bf8b9af76d in do_command (thd=0x62b0000d9218) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_parse.cc:1352 #19 0x000055bf8be44a02 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x608000008a38, put_in_cache=put_in_cache@entry=true) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_connect.cc:1410 #20 0x000055bf8be45c38 in handle_one_connection (arg=arg@entry=0x608000008a38) at /home/mleich/Server/bb-10.5-MDEV-23855D/sql/sql_connect.cc:1312 #21 0x000055bf8cc65fc5 in pfs_spawn_thread (arg=0x61500000c398) at /home/mleich/Server/bb-10.5-MDEV-23855D/storage/perfschema/pfs.cc:2201 #22 0x00007b591d963609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #23 0x000029ab0b34f103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (rr)   The corresponding archive is /home/mleich/RQG/storage/1603383112/008920.tgz
            mleich Matthias Leich made changes -
            Labels innodb need_rr innodb rr-profile
            marko Marko Mäkelä made changes -

            --source include/have_innodb.inc
            CREATE TABLE t1 (f1 int not null primary key,
                             f2 int)engine=innodb;
            INSERT INTO t1 VALUES(1, 1);
            INSERT INTO t1 VALUES(2, 2);
            INSERT INTO t1 VALUES(3, 3);
            connect(con1,localhost,root,,,);
            XA START 'p1';
            DELETE FROM t1 where f1 = 1;
            XA end 'p1';
            XA prepare 'p1';
            --error 1399
            commit;
             
            connection default;
            set DEBUG_SYNC='innodb_commit_inplace_alter_table_wait SIGNAL xa_commit WAIT_FOR alter_';
            --send
            ALTER TABLE t1 ADD INDEX idx(f2, f1), algorithm=nocopy;
             
            connection con1;
            set DEBUG_SYNC='now WAIT_FOR xa_commit';
            XA COMMIT 'p1';
            set DEBUG_SYNC="now SIGNAL alter_";
             
            connection default;
            reap;
            INSERT INTO t1 VALUES(1, 1);
            

            The above test case repeats the matthias's reported stack trace. It is same issue as MDEV-15532

            thiru Thirunarayanan Balathandayuthapani added a comment - --source include/have_innodb.inc CREATE TABLE t1 (f1 int not null primary key, f2 int)engine=innodb; INSERT INTO t1 VALUES(1, 1); INSERT INTO t1 VALUES(2, 2); INSERT INTO t1 VALUES(3, 3); connect(con1,localhost,root,,,); XA START 'p1'; DELETE FROM t1 where f1 = 1; XA end 'p1'; XA prepare 'p1'; --error 1399 commit;   connection default; set DEBUG_SYNC='innodb_commit_inplace_alter_table_wait SIGNAL xa_commit WAIT_FOR alter_'; --send ALTER TABLE t1 ADD INDEX idx(f2, f1), algorithm=nocopy;   connection con1; set DEBUG_SYNC='now WAIT_FOR xa_commit'; XA COMMIT 'p1'; set DEBUG_SYNC="now SIGNAL alter_";   connection default; reap; INSERT INTO t1 VALUES(1, 1); The above test case repeats the matthias's reported stack trace. It is same issue as MDEV-15532
            marko Marko Mäkelä made changes -
            Labels innodb rr-profile innodb need_rr
            marko Marko Mäkelä made changes -
            julien.fritsch Julien Fritsch made changes -
            Priority Critical [ 2 ] Major [ 3 ]
            marko Marko Mäkelä made changes -

            Has anyone experienced this corruption on a fresh MariaDB 10.5 installation that was not upgraded from an earlier version, or on any MariaDB version where innodb_change_buffering=none was always set? I suspect that MDEV-24449 could explain this bug (as well as MDEV-20934). If my hypothesis is correct, then this corruption should not be possible in MariaDB 10.5. (But the database may have been corrupted before upgrade.)

            marko Marko Mäkelä added a comment - Has anyone experienced this corruption on a fresh MariaDB 10.5 installation that was not upgraded from an earlier version, or on any MariaDB version where innodb_change_buffering=none was always set? I suspect that MDEV-24449 could explain this bug (as well as MDEV-20934 ). If my hypothesis is correct, then this corruption should not be possible in MariaDB 10.5. (But the database may have been corrupted before upgrade.)
            marko Marko Mäkelä made changes -
            Labels innodb need_rr innodb need_feedback need_rr
            valerii Valerii Kravchuk made changes -
            Affects Version/s 10.4.14 [ 24305 ]

            As noted in MDEV-24449, I was able to reproduce one type of corruption, but not exactly this type. I am rather convinced that the bug that was fixed by the one-line fix in MDEV-24449 can explain various types of corruption, including this MDEV-9663 type that I am aware of since the MySQL 5.1 or 5.5 days (possibly since about 2008, and for sure since 2010). That race condition is present in the very first InnoDB commit. The probability of encountering the race condition was significantly increased by the widespread use of hot backup tools (at least Percona XtraBackup or Mariabackup).

            I am afraid that we will have to wait for feedback for several months to confirm whether MDEV-24449 (or MDEV-19514 in MariaDB 10.5) actually was the last bug that can cause corruption of secondary index pages.

            marko Marko Mäkelä added a comment - As noted in MDEV-24449 , I was able to reproduce one type of corruption, but not exactly this type. I am rather convinced that the bug that was fixed by the one-line fix in MDEV-24449 can explain various types of corruption, including this MDEV-9663 type that I am aware of since the MySQL 5.1 or 5.5 days (possibly since about 2008, and for sure since 2010). That race condition is present in the very first InnoDB commit . The probability of encountering the race condition was significantly increased by the widespread use of hot backup tools (at least Percona XtraBackup or Mariabackup). I am afraid that we will have to wait for feedback for several months to confirm whether MDEV-24449 (or MDEV-19514 in MariaDB 10.5) actually was the last bug that can cause corruption of secondary index pages.
            marko Marko Mäkelä made changes -

            Two months have passed. I think we can close this. If anything will pop up, it can reopened anytime.

            serg Sergei Golubchik added a comment - Two months have passed. I think we can close this. If anything will pop up, it can reopened anytime.
            serg Sergei Golubchik made changes -
            Fix Version/s N/A [ 14700 ]
            Fix Version/s 10.2 [ 14601 ]
            Resolution Incomplete [ 4 ]
            Status Stalled [ 10000 ] Closed [ 6 ]

            As much as I would like to believe that MDEV-24449 and MDEV-24709 fixed all remaining causes of this, we recently had a support customer who encountered corruption of a secondary index (of non-virtual columns) after starting from a logical dump, without restoring any backup or invoking crash recovery in between. So, I am afraid that some bug may still be out there. But, it might be best filed as a new ticket.

            marko Marko Mäkelä added a comment - As much as I would like to believe that MDEV-24449 and MDEV-24709 fixed all remaining causes of this, we recently had a support customer who encountered corruption of a secondary index (of non-virtual columns) after starting from a logical dump, without restoring any backup or invoking crash recovery in between. So, I am afraid that some bug may still be out there. But, it might be best filed as a new ticket.
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 74416 ] MariaDB v4 [ 150178 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -

            The CHECK TABLE…EXTENDED that was implemented in MDEV-24402 will flag secondary indexes corrupted if they contain entries that should not exist.

            Crashes due to this corruption should have been (mostly) fixed in MDEV-13542. Because we were not able to reproduce this corruption, I cannot fully guarantee it.

            While analyzing a failure from a stress test of MDEV-30009, I may have found a possible explanation of this. The scenario is as follows.

            1. Some changes were buffered to a secondary index leaf page that was not located in the buffer pool.
            2. The page was freed (possibly as part of DROP INDEX).
            3. During ibuf_read_merge_pages(), we will reset the change buffer bitmap bits but will not remove the change buffer records.
            4. The same page is allocated and reused for something else.
            5. The page is evicted from the buffer pool.
            6. Something is added to the change buffer for the page.
            7. On a change buffer merge, we will apply both old (bogus) and new entries to the page.

            The extra delete-unmarked records could simply originate from previously buffered inserts that were not discarded as they were supposed to, in the above scenario.

            As far as I can tell, all MySQL and MariaDB versions are affected by this. The code changes that were applied in MDEV-20934 did not fix this, because that code would only be executed on shutdown with innodb_fast_shutdown=0.

            The InnoDB change buffer was disabled by default in MDEV-27734.

            Note: We still have many open bugs related to the corruption of indexes that include virtual columns. Unlike this corruption, those corruptions are much easier to reproduce. Implementing some file format changes such as MDEV-17598 could help a lot with those bugs.

            marko Marko Mäkelä added a comment - The CHECK TABLE…EXTENDED that was implemented in MDEV-24402 will flag secondary indexes corrupted if they contain entries that should not exist. Crashes due to this corruption should have been (mostly) fixed in MDEV-13542 . Because we were not able to reproduce this corruption, I cannot fully guarantee it. While analyzing a failure from a stress test of MDEV-30009 , I may have found a possible explanation of this. The scenario is as follows. Some changes were buffered to a secondary index leaf page that was not located in the buffer pool. The page was freed (possibly as part of DROP INDEX ). During ibuf_read_merge_pages() , we will reset the change buffer bitmap bits but will not remove the change buffer records. The same page is allocated and reused for something else. The page is evicted from the buffer pool. Something is added to the change buffer for the page. On a change buffer merge, we will apply both old (bogus) and new entries to the page. The extra delete-unmarked records could simply originate from previously buffered inserts that were not discarded as they were supposed to, in the above scenario. As far as I can tell, all MySQL and MariaDB versions are affected by this. The code changes that were applied in MDEV-20934 did not fix this, because that code would only be executed on shutdown with innodb_fast_shutdown=0 . The InnoDB change buffer was disabled by default in MDEV-27734 . Note: We still have many open bugs related to the corruption of indexes that include virtual columns. Unlike this corruption, those corruptions are much easier to reproduce. Implementing some file format changes such as MDEV-17598 could help a lot with those bugs.
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            mariadb-jira-automation Jira Automation (IT) made changes -
            Zendesk Related Tickets 173535 194700 108440 110697 146865 189635

            People

              thiru Thirunarayanan Balathandayuthapani
              GeoffMontee Geoff Montee (Inactive)
              Votes:
              10 Vote for this issue
              Watchers:
              29 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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