| Bug #19225 | MySQL server crashes in multi delete with subquery | ||
|---|---|---|---|
| Submitted: | 20 Apr 2006 16:08 | Modified: | 22 Jun 2006 15:37 |
| Reporter: | Anton Worshevsky | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S1 (Critical) |
| Version: | 4.1.19-BK, 4.1.18 | OS: | Linux (LInux) |
| Assigned to: | Evgeny Potemkin | CPU Architecture: | Any |
[20 Apr 2006 16:08]
Anton Worshevsky
[20 Apr 2006 16:16]
Valeriy Kravchuk
Thank you for a problem report. You had not attached that mysqldump yet... So, please, do.
[20 Apr 2006 16:21]
Anton Worshevsky
mysql dump for bug reproduction
Attachment: dump.sql (application/octet-stream, text), 17.02 KiB.
[24 Apr 2006 12:14]
Valeriy Kravchuk
Verified on 4.1-BK (ChangeSet@1.2469.1.1, 2006-04-23 19:26:56-05:00) on Linux with the the dump uploaded (dump.sql) and your query:
mysql> DELETE FROM general, history, todo USING general, history, todo
-> WHERE general.host = history.host AND
-> general.host IN ( SELECT host FROM history WHERE history.date = '2005-01-11' );
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql>
Number of processes running now: 0
060424 12:31:52 mysqld restarted
mysql> select version();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: db19225
+-----------+
| version() |
+-----------+
| 4.1.19 |
+-----------+
1 row in set (0.02 sec)
In the error log I've got:
Cannot determine thread, fp=0x4275035c, backtrace may not be correct.
Stack range sanity check OK, backtrace follows:
0x8144926
0xffffe420
0x8a33ef0
0x815fdc4
0x8160bc1
0x8162933
0x8163c54
0x4004eaa7
0x40249c2e
New value of fp=(nil) failed sanity check, terminating stack trace!
Please read http://dev.mysql.com/doc/mysql/en/Using_stack_trace.html and follow
instructions on how to resolve the stack trace. Resolved
stack trace is much more helpful in diagnosing the problem, so please do
resolve it
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 0x8a4aa98 = DELETE FROM general, history, todo USING general, history, todo
WHERE general.host = history.host AND
general.host IN ( SELECT host FROM history WHERE history.date = '2005-01-11' )
Resolved stack trace:
openxs@suse:~/dbs/4.1> bin/resolve_stack_dump -s /tmp/mysqld41.sym -n 19225.stack
0x8144926 handle_segfault + 566
0xffffe420 _end + -139770292
0x8a33ef0 _end + 5153052
0x815fdc4 _Z21mysql_execute_commandP3THD + 27556
0x8160bc1 _Z11mysql_parseP3THDPcj + 305
0x8162933 _Z16dispatch_command19enum_server_commandP3THDPcj + 2707
0x8163c54 handle_one_connection + 2244
0x4004eaa7 _end + 934300883
0x40249c2e _end + 936377946
[24 May 2006 13:55]
Evgeny Potemkin
In multi-table delete a table for delete can't be used for selecting in subselects. Appropriate error was raised but wasn't checked which leads to a crash on execute phase.
[25 May 2006 18:57]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/6885
[19 Jun 2006 0:12]
Evgeny Potemkin
Fixed in 4.1.21, 5.0.23, 5.1.12
[22 Jun 2006 15:37]
Paul DuBois
Noted in 4.1.21, 5.0.23, 5.1.12 changelogs. Multiple-table DELETE statements containing a subquery that selected from one of the tables being modified caused a server crash.
