mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
8677c14e65
We observed a race condition that involved two threads
executing fil_flush_file_spaces() and one thread
executing fil_delete_tablespace(). After one of the
fil_flush_file_spaces() observed that
space.needs_flush_not_stopping() is set and was
releasing the fil_system.mutex, the other fil_flush_file_spaces()
would complete the execution of fil_space_t::flush_low() on
the same tablespace. Then, fil_delete_tablespace() would
destroy the object, because the value of fil_space_t::n_pending
did not prevent that. Finally, the fil_flush_file_spaces() would
resume execution and invoke fil_space_t::flush_low() on the freed
object.
This race condition was introduced in
commit
|
||
---|---|---|
.. | ||
row0ext.cc | ||
row0ftsort.cc | ||
row0import.cc | ||
row0ins.cc | ||
row0log.cc | ||
row0merge.cc | ||
row0mysql.cc | ||
row0purge.cc | ||
row0quiesce.cc | ||
row0row.cc | ||
row0sel.cc | ||
row0uins.cc | ||
row0umod.cc | ||
row0undo.cc | ||
row0upd.cc | ||
row0vers.cc |