Details
-
Bug
-
Status: Confirmed (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.8.0, 10.7.1, 10.9.0
Description
The tests plugins.compression and mariabackup.compression_providers_unloaded crash very often on the ASAN builder. AddressSanitizer probably only matters for the timing characteristics.
Here is a 10.7 run where both tests crash:
10.7 9055db2f28b9e6b2c16810fb78d4cc23f86d005e |
mariabackup.compression_providers_unloaded 'lzo' w6 [ fail ]
|
Test ended at 2022-02-09 03:15:18
|
|
CURRENT_TEST: mariabackup.compression_providers_unloaded
|
…
|
2022-02-09 3:15:15 0 [ERROR] InnoDB: Failed to read page 2 from file './test/t1.ibd': Table is compressed or encrypted but uncompress or decrypt failed.
|
mariadbd: /home/buildbot/buildbot/build/mariadb-10.7.3/storage/innobase/buf/buf0buf.cc:2897: buf_block_t* buf_page_get_low(page_id_t, ulint, ulint, buf_block_t*, ulint, mtr_t*, dberr_t*, bool): Assertion `block->page.id() == page_id' failed.
|
…
|
buf/buf0buf.cc:2902(buf_page_get_low(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool))[0x55d0fa79416a]
|
buf/buf0buf.cc:2993(buf_page_get_gen(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool))[0x55d0fa8529e0]
|
dict/dict0load.cc:2367(dict_load_table_one(st_::span<char const> const&, dict_err_ignore_t, std::deque<char const*, ut_allocator<char const*, true> >&))[0x55d0fa85399a]
|
dict/dict0load.cc:2461(dict_sys_t::load_table(st_::span<char const> const&, dict_err_ignore_t))[0x55d0fa854298]
|
dict/dict0load.cc:2549(dict_load_table_on_id(unsigned long, dict_err_ignore_t))[0x55d0fa818123]
|
dict/dict0dict.cc:851(dict_table_open_on_id(unsigned long, bool, dict_table_op_t, THD*, MDL_ticket**))[0x55d0fa594d34]
|
row/row0purge.cc:1028(row_purge_parse_undo_rec(purge_node_t*, unsigned char*, que_thr_t*, bool*))[0x55d0fa5965e6]
|
and
10.7 9055db2f28b9e6b2c16810fb78d4cc23f86d005e |
plugins.compression 'innodb-lzo' w4 [ fail ]
|
Test ended at 2022-02-09 03:15:51
|
|
CURRENT_TEST: plugins.compression
|
mysqltest: At line 43: query 'select a, left(b, 9), length(b) from t1' failed with wrong errno <Unknown> (2013): 'Lost connection to server during query', instead of ER_PROVIDER_NOT_LOADED (4185)...
|
…
|
buf/buf0buf.cc:2902(buf_page_get_low(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool))[0x56031b5f316a]
|
buf/buf0buf.cc:2993(buf_page_get_gen(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool))[0x56031b6b19e0]
|
dict/dict0load.cc:2367(dict_load_table_one(st_::span<char const> const&, dict_err_ignore_t, std::deque<char const*, ut_allocator<char const*, true> >&))[0x56031b6b299a]
|
dict/dict0load.cc:2461(dict_sys_t::load_table(st_::span<char const> const&, dict_err_ignore_t))[0x56031b6b3298]
|
dict/dict0load.cc:2549(dict_load_table_on_id(unsigned long, dict_err_ignore_t))[0x56031b677123]
|
dict/dict0dict.cc:851(dict_table_open_on_id(unsigned long, bool, dict_table_op_t, THD*, MDL_ticket**))[0x56031b3f3d34]
|
row/row0purge.cc:1028(row_purge_parse_undo_rec(purge_node_t*, unsigned char*, que_thr_t*, bool*))[0x56031b3f55e6]
|
In the latter crash, the table is being opened for the purge of history of committed transactions.
It is not sufficient to block access to the table at the SQL layer. InnoDB may open tables internally, either for purging history, or for rolling back changes to recovered transactions.
If you want to prevent such crashes, then the server should be started with innodb_force_recovery=3. There has been no requirement to ensure that everything has been rolled back and purged before upgrading the server. We only require a clean shutdown from an earlier version, when upgrading to 10.2, 10.3, 10.5, 10.8. For the upgrade to 10.3 it is due to an undo log format change (MDEV-12288); an upgrade sanity check was implemented in MDEV-15912. For other versions, it is due to a redo log format change (MDEV-12353 in 10.5 and MDEV-14425 in 10.8).
I encountered also failures like this:
plugins.compression 'innodb-snappy' w5 [ fail ]
|
Test ended at 2022-02-17 15:33:40
|
|
CURRENT_TEST: plugins.compression
|
mysqltest: At line 43: query 'select a, left(b, 9), length(b) from t1' succeeded - should have failed with error ER_PROVIDER_NOT_LOADED (4185)...
|
Attachments
Issue Links
- is caused by
-
MDEV-12933 sort out the compression library chaos
- Closed
- relates to
-
MDEV-27339 Upgrade 10.5 -> 10.7 fails MariaDB tried to use the ... compression, but its provider plugin is not loaded
- Stalled