mariadb/mysql-test/suite/stress/t/misc.test
Sergey Vojtovich dce4c0f979 MDEV-22339 - Assertion `str_length < len' failed
When acquiring SNW/SNRW/X MDL lock DDL/admin statements may abort pending
thr lock in concurrent connection with open HANDLER (or delayed insert
thread).

This may lead to a race condition when table->alias is accessed
concurrently by such threads. Either assertion failure or memory leak
is a practical consequence of this race condition.

Specifically HANDLER is opening a table and issuing alias.copy(), while
DDL executing get_lock_data()/alias.c_ptr()/realloc()/realloc_raw().

Fixed by perforimg table->init() before it is published via
thd->open_tables.
2020-06-04 23:52:10 +02:00

32 lines
637 B
Text

--echo #
--echo # MDEV-22339 - Assertion `str_length < len' failed in
--echo # Binary_string::realloc_raw
--echo #
CREATE TABLE t1(a INT) ENGINE=MyISAM;
connect con1, localhost, root;
let $i=1000;
disable_query_log;
disable_result_log;
while ($i)
{
connection default;
HANDLER t1 OPEN;
send SELECT * FROM t1, t1 t1a1over8, t1 t1a2over8, t1 t1a3over8, t1 t1a4over8, t1 t1a5over8, t1 t1a6over8;
connection con1;
send REPAIR TABLE t1;
connection default;
reap;
HANDLER t1 CLOSE;
connection con1;
reap;
dec $i;
}
enable_query_log;
enable_result_log;
disconnect con1;
connection default;
DROP TABLE t1;