When connection closes THD::cleanup() is called, it calls close_temporary_tables(), which in turn calls MYSQL_BIN_LOG::write() to write DROP TABLE record into binlog. After record is written MYSQL_BIN_LOG::write() calls Binlog_storage_delegate::after_flush() if any observers are registered (I believe only semisync_master implements this observer currently). And here Trans_binlog_info is allocated which is supposed to be released in Trans_delegate::after_commit() or Trans_delegate::after_rollback(). But neither THD::cleanup() nor its callers commit/rollback the transaction and thus Trans_binlog_info is leaking.