| Bug #99641 | crashed in srv_free if -DDISABLE_PSI_MEMORY=1 | ||
|---|---|---|---|
| Submitted: | 20 May 2020 7:15 | Modified: | 21 May 2021 13:26 |
| Reporter: | zhai weixiang (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
| Version: | 8.0, 8.0.20 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[20 May 2020 9:22]
MySQL Verification Team
Hello zhai, Thank you for the report and feedback. regards, Umesh
[21 May 2021 13:26]
Erlend Dahl
Fixed in 8.0.23 under the heading of Bug#31963333 "-DDISABLE_PSI_MEMORY=ON" BUILD CRASHES ON SHUTDOWN

Description: srv_threads.m_page_cleaner_workers/srv_threads.m_purge_workers (in srv_init) are created using UT_NEW_ARRAY_NOKEY and should use UT_DELETE_ARRAY to free it, but actually it uses ut_free in srv_free() How to repeat: cmake with -DDISABLE_PSI_MEMORY=1 and run any test case Suggested fix: --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -1186,7 +1186,7 @@ void srv_free(void) { for (size_t i = 0; i < srv_threads.m_page_cleaner_workers_n; ++i) { srv_threads.m_page_cleaner_workers[i] = {}; } - ut_free(srv_threads.m_page_cleaner_workers); + UT_DELETE_ARRAY(srv_threads.m_page_cleaner_workers); srv_threads.m_page_cleaner_workers = nullptr; } @@ -1194,7 +1194,7 @@ void srv_free(void) { for (size_t i = 0; i < srv_threads.m_purge_workers_n; ++i) { srv_threads.m_purge_workers[i] = {}; } - ut_free(srv_threads.m_purge_workers); + UT_DELETE_ARRAY(srv_threads.m_purge_workers); srv_threads.m_purge_workers = nullptr; }