connect  con1,localhost,root,,;
connect  con2,localhost,root,,;
connection con1;
DROP TABLE IF EXISTS t1;
SET DEBUG_SYNC= 'RESET';
CREATE TABLE t1 (kill_id INT) engine = InnoDB;
INSERT INTO t1 VALUES(connection_id());
connection default;
# Start transaction.
BEGIN;
INSERT INTO t1 VALUES(connection_id());
# Ensure that COMMIT will pause once it acquires protection
# against its global read lock.
SET DEBUG_SYNC='ha_commit_trans_after_acquire_commit_lock SIGNAL acquired WAIT_FOR go';
# Sending:
COMMIT;
connection con1;
# Wait till COMMIT acquires protection against global read
# lock and pauses.
SET DEBUG_SYNC='now WAIT_FOR acquired';
# Sending:
FLUSH TABLES WITH READ LOCK;
connection con2;
SELECT ((@id := kill_id) - kill_id) FROM t1 LIMIT 1;
((@id := kill_id) - kill_id)
0
# Wait till FLUSH TABLES WITH READ LOCK blocks due
# to active COMMIT
# Kill connection 'con1'.
KILL CONNECTION @id;
connection con1;
# Try to reap FLUSH TABLES WITH READ LOCK, 
# it fail due to killed statement and connection.
Got one of the listed errors
connection con2;
# Resume COMMIT.
SET DEBUG_SYNC='now SIGNAL go';
connection default;
# Reaping COMMIT.
disconnect con2;
DROP TABLE t1;
SET DEBUG_SYNC= 'RESET';
