[MDEV-26655] Assertion `page_dir_get_n_heap(new_page) == 2U' failed in btr0bulk.cc Created: 2021-09-21  Updated: 2023-04-03  Resolved: 2023-04-03

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 10.6.5, 10.7.0
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Matthias Leich Assignee: Matthias Leich
Resolution: Incomplete Votes: 0
Labels: need_rr

Issue Links:
Relates
relates to MDEV-27858 Assertion `page_dir_get_n_heap(new_pa... Closed

 Description   

origin/preview-10.7-MDEV-24621-innodb-bulk-insert ff373ddd28764dd6c58c1a29f52d728308eb1011 2021-09-20T14:05:09+03:00
The MariaDB server version reported is 10.7.0.
Per bookkeeping of RQG testing results
- hitting that problem is rare and especially if rr is invoked
- it was observed 2021-09-03T13:04:18 on  actual 10.6
 
# 2021-09-20T08:22:45 [3561467] | [rr 3564641 700182]mysqld: /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/btr/btr0bulk.cc:110: dberr_t PageBulk::init(): Assertion `page_dir_get_n_heap(new_page) == 2U' failed.
 
Archive: sdp:/data/Results/1632146029/003397.tar.xz
sdp:/data/Results/1632146029/TBR-861/dev/shm/vardir/1632146029/147/1/rr
(rr) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f3b1aec0859 in __GI_abort () at abort.c:79
#2  0x00007f3b1aec0729 in __assert_fail_base (fmt=0x7f3b1b056588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55974a35d7e0 "page_dir_get_n_heap(new_page) == 2U", 
    file=0x55974a35d680 "/data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/btr/btr0bulk.cc", line=110, function=<optimized out>) at assert.c:92
#3  0x00007f3b1aed1f36 in __GI___assert_fail (assertion=0x55974a35d7e0 "page_dir_get_n_heap(new_page) == 2U", file=0x55974a35d680 "/data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/btr/btr0bulk.cc", line=110, 
    function=0x55974a35d700 "dberr_t PageBulk::init()") at assert.c:101
#4  0x0000559748f7d5e4 in PageBulk::init (this=0x7f3b0a173bc0) at /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/btr/btr0bulk.cc:110
#5  0x0000559748f820a8 in BtrBulk::finish (this=0x6040002048d0, err=DB_SUCCESS) at /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/btr/btr0bulk.cc:1214
#6  0x0000559748d54777 in row_fts_merge_insert (index=0x616008bb1f08, table=0x6180001b8108, psort_info=0x619000a06e80, id=2) at /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/row/row0ftsort.cc:1771
#7  0x0000559748d50245 in fts_parallel_merge (arg=0x61e000091020) at /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/storage/innobase/row/row0ftsort.cc:1089
#8  0x000055974925fc69 in tpool::task::execute (this=0x60d000036e90) at /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/tpool/task.cc:37
#9  0x000055974924c3b3 in tpool::thread_pool_generic::worker_main (this=0x618000000480, thread_var=0x63000001fc80) at /data/Server/preview-10.7-MDEV-24621-innodb-bulk-insert/tpool/tpool_generic.cc:549
#10 0x000055974925ed9d in std::__invoke_impl<void, void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> (__f=
    @0x604000004028: (void (tpool::thread_pool_generic::*)(class tpool::thread_pool_generic * const, struct tpool::worker_data *)) 0x55974924c1d0 <tpool::thread_pool_generic::worker_main(tpool::worker_data*)>, __t=@0x604000004020: 0x618000000480)
    at /usr/include/c++/9/bits/invoke.h:73
#11 0x000055974925eb48 in std::__invoke<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> (__fn=
    @0x604000004028: (void (tpool::thread_pool_generic::*)(class tpool::thread_pool_generic * const, struct tpool::worker_data *)) 0x55974924c1d0 <tpool::thread_pool_generic::worker_main(tpool::worker_data*)>) at /usr/include/c++/9/bits/invoke.h:95
#12 0x000055974925e9d9 in std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::_M_invoke<0ul, 1ul, 2ul> (this=0x604000004018) at /usr/include/c++/9/thread:244
#13 0x000055974925e923 in std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::operator() (this=0x604000004018) at /usr/include/c++/9/thread:251
#14 0x000055974925e888 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> > >::_M_run (this=0x604000004010)
    at /usr/include/c++/9/thread:195
#15 0x00007f3b1b2cdde4 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#16 0x00007f3b1b3ea609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#17 0x00007f3b1afbd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(rr)
 
RQG
===
# git clone https://github.com/mleich1/rqg --branch experimental RQG
#
# GIT_SHOW: HEAD -> experimental, origin/experimental ce7c32aaabbf12e2d643e1709c4831f900aa6cd8 2021-09-16T14:34:23+02:00
# rqg.pl  : Version 3.4 (2021-09)
#
# $RQG_HOME/rqg.pl \
# --gendata=conf/engines/innodb/full_text_search.zz \
# --max_gd_duration=1200 \
# --short_column_names \
# --grammar=conf/engines/innodb/full_text_search.yy \
# --redefine=conf/mariadb/alter_table.yy \
# --redefine=conf/mariadb/instant_add.yy \
# --redefine=conf/mariadb/modules/alter_table_columns.yy \
# --redefine=conf/mariadb/bulk_insert1.yy \
# --redefine=conf/mariadb/modules/locks.yy \
# --redefine=conf/mariadb/modules/sql_mode.yy \
# --redefine=conf/mariadb/redefine_temporary_tables.yy \
# --redefine=conf/mariadb/sequences.yy \
# --mysqld=--loose-innodb_lock_schedule_algorithm=fcfs \
# --mysqld=--loose-idle_write_transaction_timeout=0 \
# --mysqld=--loose-idle_transaction_timeout=0 \
# --mysqld=--loose-idle_readonly_transaction_timeout=0 \
# --mysqld=--connect_timeout=60 \
# --mysqld=--interactive_timeout=28800 \
# --mysqld=--slave_net_timeout=60 \
# --mysqld=--net_read_timeout=30 \
# --mysqld=--net_write_timeout=60 \
# --mysqld=--loose-table_lock_wait_timeout=50 \
# --mysqld=--wait_timeout=28800 \
# --mysqld=--lock-wait-timeout=86400 \
# --mysqld=--innodb-lock-wait-timeout=50 \
# --no-mask \
# --queries=10000000 \
# --seed=random \
# --reporters=Backtrace \
# --reporters=ErrorLog \
# --reporters=Deadlock1 \
# --validators=None \
# --mysqld=--log_output=none \
# --mysqld=--log_bin_trust_function_creators=1 \
# --mysqld=--loose-debug_assert_on_not_freed_memory=0 \
# --engine=InnoDB \
# --restart_timeout=240 \
# --mysqld=--plugin-load-add=file_key_management.so \
# --mysqld=--loose-file-key-management-filename=$RQG_HOME/conf/mariadb/encryption_keys.txt \
# --duration=300 \
# --mysqld=--loose-innodb_fatal_semaphore_wait_threshold=300 \
# --mysqld=--innodb_stats_persistent=on \
# --mysqld=--innodb_adaptive_hash_index=off \
# --mysqld=--log-bin \
# --mysqld=--sync-binlog=1 \
# --mysqld=--loose-innodb_evict_tables_on_commit_debug=off \
# --mysqld=--loose-max-statement-time=30 \
# --threads=2 \
# --mysqld=--innodb-use-native-aio=0 \
# --rr=Extended \
# --rr_options=--wait \
# --mysqld=--innodb_page_size=16K \
# --mysqld=--innodb-buffer-pool-size=8M \
# --no_mask \
# --workdir=<local settings> \
# --vardir=<local settings> \
# --mtr-build-thread=<local settings> \
# --basedir1=<local settings> \
# --basedir2=/data/Server_bin/preview-10.7-MDEV-24621-innodb-bulk-insert_asan \
# --script_debug=_nix_
 
Search pattern
[ 'TBR-861', 'mysqld: .{1,150}btr0bulk.cc:.{1,30} dberr_t PageBulk::init\(\): Assertion .page_dir_get_n_heap\(new_page\) == 2U. failed.' ],



 Comments   
Comment by Marko Mäkelä [ 2023-02-22 ]

Unfortunately, the rr replay trace is no longer accessible. Is this bug still reproducible? There have been a number of fixes to the bulk insert logic.

Generated at Thu Feb 08 09:46:57 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.