diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-05-25 18:57:14 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-05-25 18:57:14 +0300 |
commit | 5530a93f47324b847c799d00a2756729a2869d13 (patch) | |
tree | ddb822a88a29571e362ab715b0b051c6907b9c94 /sql/threadpool_win.cc | |
parent | e2c749380bc27a7af741c7eb607b4bccdf9429f1 (diff) | |
download | mariadb-git-5530a93f47324b847c799d00a2756729a2869d13.tar.gz |
MDEV-17092 use-after-poison around lock_trx_handle_wait_low
There was a race condition where the connection of the
victim of a KILL statement is disconnected while the
KILL statement is executing.
As a side effect of this fix, we will make XA PREPARE
transactions immune to KILL statements.
Starting with MariaDB 10.2, we have a pool of trx_t objects.
trx_free() would only free memory to the pool. We poison the
contents of freed objects in the pool in order to catch misuse.
trx_free(): Unpoison also trx->mysql_thd and trx->state.
This is to counter the poisoning of *trx in trx_pools->mem_free().
Unpoison only on AddressSanitizer or Valgrind, but not on MemorySanitizer.
Pool: Unpoison allocated objects only on AddressSanitizer or
Valgrind, but not on MemorySanitizer.
innobase_kill_query(): Properly protect trx, acquiring also
trx_sys_t::mutex and checking trx_t::mysql_thd and trx_t::state.
Diffstat (limited to 'sql/threadpool_win.cc')
0 files changed, 0 insertions, 0 deletions