Multi-threaded slave leaks worker threads in case of thread create failure

Bug #1619622 reported by Laurynas Biveinis on 2016-09-02
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MySQL Server
Percona Server
Status tracked in 5.7
Laurynas Biveinis
Laurynas Biveinis

Bug Description

On PS 5.6 trunk, at the end of

rpl.rpl_mts_debug 'mix' w3 [ pass ] 4967

PROCESSLIST shows a stale SQL worker thread that is stopped by nobody. The testcase reduces to

--source include/
--source include/
--source include/
--source include/

# Bug#12964649 MTS memory not released
# Originally reported when opt_slave_checkpoint_group is set to be greater
# than sizeof(BLOB) * 8 - 1 Workers initialization code fails.
# VALID_RANGE() for opt_slave_checkpoint_group is fixed in bug12979420.
# The current bug test simulates a failure to start by a Worker
# thread, checks the error, and verifies that all memory is released
# (valgrind proves, the user can watch top report).

connection slave;

call mtr.add_suppression('Error reading slave worker configuration');
call mtr.add_suppression('Failed during slave workers initialization');
call mtr.add_suppression('Failed during slave worker thread create');

source include/;
set @save.slave_checkpoint_group= @@global.slave_checkpoint_group;
set @save.slave_parallel_workers= @@global.slave_parallel_workers;

# The following assignment can work only with debug builds.
# It sets opt_slave_checkpoint_group to one more to its VALID_RANGE() maximum.
# set @@global.slave_checkpoint_group= 524280 + 1;

set @save.debug= @@global.debug;
SET @@global.debug= "d,mts_worker_thread_fails";
set @@global.slave_parallel_workers= 2;

start slave sql_thread;
--let $slave_sql_errno= 1593
source include/;

set @@global.slave_checkpoint_group= @save.slave_checkpoint_group;
set @@global.slave_parallel_workers= @save.slave_parallel_workers;
set @@global.debug= @save.debug;

source include/;

--source include/

This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.