1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-28124 Server crashes in Explain_aggr_filesort::print_json_members

SHOW EXPLAIN/ANALYZE FORMAT=JSON tries to access items that have already been
freed by a call to free_items() during THD::cleanup_after_query().
The solution is to disallow APC calls including SHOW EXPLAIN/ANALYZE
just before the call to free_items().
This commit is contained in:
Oleg Smirnov
2022-03-27 11:58:27 +07:00
committed by Sergei Petrunia
parent a0475cb9ca
commit 02c3babdec
22 changed files with 303 additions and 87 deletions

View File

@ -131,9 +131,9 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
14 14 stage/sql/Commit (stage) STATEMENT 0
15 15 stage/sql/closing tables (stage) STATEMENT 0
16 16 stage/sql/Starting cleanup (stage) STATEMENT 0
17 17 stage/sql/Freeing items (stage) STATEMENT 0
18 18 wait/io/socket/sql/client_connection send STATEMENT 0
19 19 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STATEMENT 0
17 18 stage/sql/Freeing items (stage) STATEMENT 0
18 18 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 17
19 19 wait/io/socket/sql/client_connection send STATEMENT 0
20 21 stage/sql/Reset for next command (stage) STATEMENT 0
21 21 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 20
22 22 wait/synch/mutex/sql/THD::LOCK_thd_data lock STATEMENT 0
@ -155,9 +155,9 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
38 38 stage/sql/Commit (stage) STATEMENT 24
39 39 stage/sql/closing tables (stage) STATEMENT 24
40 40 stage/sql/Starting cleanup (stage) STATEMENT 24
41 41 stage/sql/Freeing items (stage) STATEMENT 24
42 42 wait/io/socket/sql/client_connection send STATEMENT 24
43 43 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STATEMENT 24
41 42 stage/sql/Freeing items (stage) STATEMENT 24
42 42 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 41
43 43 wait/io/socket/sql/client_connection send STATEMENT 24
44 45 stage/sql/Reset for next command (stage) STATEMENT 24
45 45 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 44
46 46 wait/synch/mutex/sql/THD::LOCK_thd_data lock STATEMENT 24
@ -179,9 +179,9 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
62 62 stage/sql/Commit (stage) STATEMENT 48
63 63 stage/sql/closing tables (stage) STATEMENT 48
64 64 stage/sql/Starting cleanup (stage) STATEMENT 48
65 65 stage/sql/Freeing items (stage) STATEMENT 48
66 66 wait/io/socket/sql/client_connection send STATEMENT 48
67 67 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STATEMENT 48
65 66 stage/sql/Freeing items (stage) STATEMENT 48
66 66 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 65
67 67 wait/io/socket/sql/client_connection send STATEMENT 48
68 69 stage/sql/Reset for next command (stage) STATEMENT 48
69 69 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 68
70 70 wait/synch/mutex/sql/THD::LOCK_thd_data lock STATEMENT 48
@ -207,8 +207,8 @@ select "With a third part to make things complete" as payload NULL NULL
88 88 stage/sql/closing tables (stage) STATEMENT 72
89 89 stage/sql/Starting cleanup (stage) STATEMENT 72
90 92 stage/sql/Freeing items (stage) STATEMENT 72
91 91 wait/io/socket/sql/client_connection send STAGE 90
92 92 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 90
91 91 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 90
92 92 wait/io/socket/sql/client_connection send STAGE 90
93 110 statement/sql/select select "And this is the second part of a multi query" as payload;
select "With a third part to make things complete" as payload NULL NULL
94 96 stage/sql/starting (stage) STATEMENT 93
@ -226,8 +226,8 @@ select "With a third part to make things complete" as payload NULL NULL
106 106 stage/sql/closing tables (stage) STATEMENT 93
107 107 stage/sql/Starting cleanup (stage) STATEMENT 93
108 110 stage/sql/Freeing items (stage) STATEMENT 93
109 109 wait/io/socket/sql/client_connection send STAGE 108
110 110 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 108
109 109 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 108
110 110 wait/io/socket/sql/client_connection send STAGE 108
111 129 statement/sql/select select "With a third part to make things complete" as payload NULL NULL
112 113 stage/sql/starting (stage) STATEMENT 111
113 113 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 112
@ -242,9 +242,9 @@ select "With a third part to make things complete" as payload NULL NULL
122 122 stage/sql/Commit (stage) STATEMENT 111
123 123 stage/sql/closing tables (stage) STATEMENT 111
124 124 stage/sql/Starting cleanup (stage) STATEMENT 111
125 125 stage/sql/Freeing items (stage) STATEMENT 111
126 126 wait/io/socket/sql/client_connection send STATEMENT 111
127 127 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STATEMENT 111
125 126 stage/sql/Freeing items (stage) STATEMENT 111
126 126 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 125
127 127 wait/io/socket/sql/client_connection send STATEMENT 111
128 129 stage/sql/Reset for next command (stage) STATEMENT 111
129 129 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 128
130 130 wait/synch/mutex/sql/THD::LOCK_thd_data lock STATEMENT 111
@ -266,9 +266,9 @@ select "With a third part to make things complete" as payload NULL NULL
146 146 stage/sql/Commit (stage) STATEMENT 132
147 147 stage/sql/closing tables (stage) STATEMENT 132
148 148 stage/sql/Starting cleanup (stage) STATEMENT 132
149 149 stage/sql/Freeing items (stage) STATEMENT 132
150 150 wait/io/socket/sql/client_connection send STATEMENT 132
151 151 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STATEMENT 132
149 150 stage/sql/Freeing items (stage) STATEMENT 132
150 150 wait/synch/mutex/sql/THD::LOCK_thd_kill lock STAGE 149
151 151 wait/io/socket/sql/client_connection send STATEMENT 132
152 153 stage/sql/Reset for next command (stage) STATEMENT 132
153 153 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 152
disconnect con1;