Bug #93717 Assert: fsp0fsp.cc:897:space_id == page_get_space_id(buf_block_get_frame(block))
Submitted: 21 Dec 2018 11:49 Modified: 21 Dec 2018 20:15
Reporter: Roel Van de Paar (OCA) Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S1 (Critical)
Version:8.0.13 OS:Any
Assigned to: CPU Architecture:Any

[21 Dec 2018 11:49] Roel Van de Paar
Description:
2018-12-21T11:46:14.355645Z 0 [ERROR] [MY-013183] [InnoDB] Assertion failure: fsp0fsp.cc:897:space_id == page_get_space_id(buf_block_get_frame(block)) thread 139772588713728

#0  __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:57
#1  0x000055de738de6b7 in my_write_core (sig=6) at /git/MS-8.0-trunk_dbg/mysys/stacktrace.cc:278
#2  0x000055de7258f880 in handle_fatal_signal (sig=6) at /git/MS-8.0-trunk_dbg/sql/signal_handler.cc:249
#3  <signal handler called>
#4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#5  0x00007f1f9b988801 in __GI_abort () at abort.c:79
#6  0x000055de73cd8f74 in ut_dbg_assertion_failed (expr=0x55de7502f810 "space_id == page_get_space_id(buf_block_get_frame(block))", 
    file=0x55de7502ef28 "/git/MS-8.0-trunk_dbg/storage/innobase/fsp/fsp0fsp.cc", line=897)
    at /git/MS-8.0-trunk_dbg/storage/innobase/ut/ut0dbg.cc:90
#7  0x000055de73e67dc6 in fsp_header_write_encryption (space_id=4294967277, space_flags=8192, encrypt_info=0x7f1f577fda60 "lCC", 
    update_fsp_flags=true, rotate_encryption=false, mtr=0x7f1f577fd530) at /git/MS-8.0-trunk_dbg/storage/innobase/fsp/fsp0fsp.cc:897
#8  0x000055de73c53be6 in srv_enable_undo_encryption_if_set () at /git/MS-8.0-trunk_dbg/storage/innobase/srv/srv0srv.cc:2412
#9  0x000055de73c54342 in srv_master_thread () at /git/MS-8.0-trunk_dbg/storage/innobase/srv/srv0srv.cc:2550
#10 0x000055de73a52bf8 in std::__invoke_impl<void, void (*&)()> (__f=@0x7f1f577fdc60: 0x55de73c5416e <srv_master_thread()>)
    at /usr/include/c++/7/bits/invoke.h:60
#11 0x000055de73a5182c in std::__invoke<void (*&)()> (__fn=@0x7f1f577fdc60: 0x55de73c5416e <srv_master_thread()>)
    at /usr/include/c++/7/bits/invoke.h:95
#12 0x000055de73a4f8ca in std::_Bind<void (*())()>::__call<void>(std::tuple<>&&, std::_Index_tuple<>) (this=0x7f1f577fdc60, 
    __args=...) at /usr/include/c++/7/functional:467
#13 0x000055de73a4d8a7 in std::_Bind<void (*())()>::operator()<, void>() (this=0x7f1f577fdc60) at /usr/include/c++/7/functional:551
#14 0x000055de73a4b377 in Runnable::operator()<void (*)()> (this=0x7f1f7a9ebe30, 
    f=@0x7f1f7a9ebe28: 0x55de73c5416e <srv_master_thread()>) at /git/MS-8.0-trunk_dbg/storage/innobase/include/os0thread-create.h:92
#15 0x000055de73a46a58 in std::__invoke_impl<void, Runnable, void (*)()> (__f=..., 
    __args#0=@0x7f1f7a9ebe28: 0x55de73c5416e <srv_master_thread()>) at /usr/include/c++/7/bits/invoke.h:60
#16 0x000055de73a40a44 in std::__invoke<Runnable, void (*)()> (__fn=..., 
    __args#0=@0x7f1f7a9ebe28: 0x55de73c5416e <srv_master_thread()>) at /usr/include/c++/7/bits/invoke.h:95
#17 0x000055de73a5420b in std::thread::_Invoker<std::tuple<Runnable, void (*)()> >::_M_invoke<0ul, 1ul> (this=0x7f1f7a9ebe28)
    at /usr/include/c++/7/thread:234
#18 0x000055de73a53fde in std::thread::_Invoker<std::tuple<Runnable, void (*)()> >::operator() (this=0x7f1f7a9ebe28)
    at /usr/include/c++/7/thread:243
#19 0x000055de73a539d2 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, void (*)()> > >::_M_run (
    this=0x7f1f7a9ebe20) at /usr/include/c++/7/thread:186
#20 0x00007f1f9c3ac57f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#21 0x00007f1f9d7976db in start_thread (arg=0x7f1f577fe700) at pthread_create.c:463
#22 0x00007f1f9ba6988f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

How to repeat:
# mysqld options required for replay: --early-plugin-load=keyring_file.so --keyring_file_data=keyring 
SET GLOBAL innodb_undo_log_encrypt= 1;
SET @@GLOBAL.innodb_undo_tablespaces=128;
[21 Dec 2018 12:15] Roel Van de Paar
Also see bug 93651
[21 Dec 2018 20:13] Miguel Solorzano
Thank you for the bug report. Repeatable with version debug reported but not anymore with most recent source server:
miguel@tikal:~/bug $ 8.0/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.13-debug Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET GLOBAL innodb_undo_log_encrypt= 1;
Query OK, 0 rows affected (0,00 sec)

mysql> SET @@GLOBAL.innodb_undo_tablespaces=128;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
miguel@tikal:~/bug $ 8.0/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.15 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET GLOBAL innodb_undo_log_encrypt= 1;
Query OK, 0 rows affected (0,00 sec)

mysql> SET @@GLOBAL.innodb_undo_tablespaces=128;
Query OK, 0 rows affected, 1 warning (0,00 sec)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
miguel@tikal:~/bug $ 8.0/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.15-debug Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET GLOBAL innodb_undo_log_encrypt= 1;
Query OK, 0 rows affected (0,00 sec)

mysql> SET @@GLOBAL.innodb_undo_tablespaces=128;
Query OK, 0 rows affected, 1 warning (0,00 sec)

mysql>