| Bug #35685 | Crash in JOIN_CACHE::init when using the SONY Query | ||
|---|---|---|---|
| Submitted: | 30 Mar 2008 15:53 | Modified: | 20 Nov 2010 23:25 |
| Reporter: | Jonathan Miller | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S1 (Critical) |
| Version: | 6.0-BKA | OS: | Linux |
| Assigned to: | Igor Babaev | CPU Architecture: | Any |
[24 Apr 2008 0:27]
Jonathan Miller
Hi,
Eventhough the code has changed some... The crash has not :-(
#0 0x0000003a39209737 in pthread_kill () from /lib64/tls/libpthread.so.0
#1 0x000000000067a2c6 in handle_segfault (sig=11) at mysqld.cc:2622
#2 <signal handler called>
#3 JOIN_CACHE_BKA::init (this=0x1450730) at sql_select.cc:17085
#4 0x00000000006e078e in check_join_cache_usage (tab=0x144bb30, join=Variable "join" is not available.
) at sql_select.h:837
#5 0x00000000006fafb0 in JOIN::optimize (this=0x143ae90) at sql_select.cc:8394
#6 0x0000000000701435 in mysql_select (thd=0x13fd070, rref_pointer_array=0x13ff080,
tables=0x134bf40, wild_num=0, fields=@0x13fefa0, conds=0x13d6490, og_num=0, order=0x0,
group=0x0, having=0x0, proc_param=0x0, select_options=0, result=0x143ac90, unit=0x13fea58,
select_lex=0x13fee98) at sql_select.cc:2944
#7 0x0000000000701ce9 in handle_select (thd=0x13fd070, lex=0x13fe9b8, result=0x143ac90,
setup_tables_done_option=0) at sql_select.cc:275
#8 0x0000000000686922 in execute_sqlcom_select (thd=0x13fd070, all_tables=0x134bf40)
at sql_parse.cc:4789
#9 0x000000000068bec4 in mysql_execute_command (thd=0x13fd070) at sql_parse.cc:1975
#10 0x00000000006928f3 in mysql_parse (thd=0x13fd070,
inBuf=0x1436d10 "SELECT affiliatestometa.uniquekey, affiliatestometa.xml AS affiliateXml, artists.name AS artistName, artists.artistid, genres.name AS genreName, genres.genreid, genres.priority AS genrePriority, subge"..., length=1347, found_semicolon=0x46fe44e0)
at sql_parse.cc:5745
#11 0x00000000006938f5 in dispatch_command (command=COM_QUERY, thd=0x13fd070,
packet=0x13a8d31 "SELECT affiliatestometa.uniquekey, affiliatestometa.xml AS affiliateXml, artists.name AS artistName, artists.artistid, genres.name AS genreName, genres.genreid, genres.priority AS genrePriority, subge"..., packet_length=Variable "packet_length" is not available.
) at sql_parse.cc:1030
#12 0x0000000000693fd0 in do_command (thd=0x13fd070) at sql_parse.cc:722
#13 0x0000000000684487 in handle_one_connection (arg=0x13fd070) at sql_connect.cc:1125
#14 0x0000003a3920610a in start_thread () from /lib64/tls/libpthread.so.0
#15 0x0000003a389c68b3 in clone () from /lib64/tls/libc.so.6
#16 0x0000000000000000 in ?? ()
(gdb) f 3
#3 JOIN_CACHE_BKA::init (this=0x1450730) at sql_select.cc:17085
17085 for (tab= cache->join_tab-cache->tables; tab < cache->join_tab ; tab++)
(gdb) l
17080 CACHE_FIELD *copy;
17081 CACHE_FIELD **copy_ptr= blob_ptr;
17082 while (ext_key_arg_cnt)
17083 {
17084 cache= cache->prev_cache;
17085 for (tab= cache->join_tab-cache->tables; tab < cache->join_tab ; tab++)
17086 {
17087 CACHE_FIELD *copy_end;
17088 MY_BITMAP *key_read_set= &tab->table->tmp_set;
17089 /* key_read_set contains the bitmap of tab's fields referenced by ref */
[15 May 2008 21:03]
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/46751 ChangeSet@1.2628, 2008-05-15 14:09:05-07:00, igor@olga.mysql.com +3 -0 Fixed bug #35685. This bug in the function JOIN_CACHE_BKA::init could manifest itself when key expressions for a ref access depended on columns not only from the previous join table. The bug usually caused an assertion abort for the debug version. Some cosmetic change to the function make_join_readinfo was added.
[14 Dec 2008 11:07]
Bugs System
Pushed into 6.0.5-alpha (revid:sp1r-igor@olga.mysql.com-20080515210905-25310) (version source revid:sp1r-igor@olga.mysql.com-20080515210905-25310) (pib:5)
[14 Dec 2008 11:18]
Jon Stephens
Is Cluster the correct category for this bug? Shouldn't it perhaps be Optimizer? Thanks.
[11 Jan 2009 4:56]
Igor Babaev
Yes, 'Optimizer' would be a proper category for this bug.
[13 Jan 2009 1:55]
Paul DuBois
Noted in 6.0.5 changelog. Queries executed using the batched-key access method could cause an assertion fail when key expressions for a ref access depended on columns not only from the previous join table.
[14 Jan 2009 0:38]
Paul DuBois
Correction: This is pushed into 6.0.9.
[16 Aug 2010 6:37]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100816062819-bluwgdq8q4xysmlg) (version source revid:alik@sun.com-20100816062612-enatdwnv809iw3s9) (pib:20)
[13 Nov 2010 16:09]
Bugs System
Pushed into mysql-trunk 5.6.99-m5 (revid:alexander.nozdrin@oracle.com-20101113155825-czmva9kg4n31anmu) (version source revid:vasil.dimov@oracle.com-20100629074804-359l9m9gniauxr94) (merge vers: 5.6.99-m4) (pib:21)
[20 Nov 2010 23:25]
Paul DuBois
Noted in 5.6.1 changelog.
[23 Nov 2010 2:13]
Paul DuBois
Correction: No 5.6.1 changelog entry. Bug does not appear in any released 5.6.x version.

Description: Been trying to get the Sony queries to run using Mysqlchoke. They seem to not be returing anything, so while the test was running I decided to run the query manually through mysql client. When I did this the MySQLD cored. I have not repeated this. Crash: #0 0x0000003a39209737 in pthread_kill () from /lib64/tls/libpthread.so.0 (gdb) bt #0 0x0000003a39209737 in pthread_kill () from /lib64/tls/libpthread.so.0 #1 0x000000000066b734 in handle_segfault (sig=11) at mysqld.cc:2421 #2 <signal handler called> #3 JOIN_CACHE::init (this=0x137ce70) at sql_select.cc:16701 #4 0x00000000006eae77 in JOIN::optimize (this=0x2a96ce3cb0) at sql_select.h:486 #5 0x00000000006f0135 in mysql_select (thd=0x2a95679460, rref_pointer_array=0x2a9567b238, tables=0x2a96ccb110, wild_num=0, fields=@0x2a9567b158, conds=0x2a96ce10b0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=0, result=0x2a96ce3aa0, unit=0x2a9567ac10, select_lex=dwarf2_read_address: Corrupted DWARF expression. ) at sql_select.cc:2930 #6 0x00000000006f09e9 in handle_select (thd=0x2a95679460, lex=0x2a9567ab70, result=0x2a96ce3aa0, setup_tables_done_option=0) at sql_select.cc:272 #7 0x0000000000677b9f in execute_sqlcom_select (thd=0x2a95679460, all_tables=0x2a96ccb110) at sql_parse.cc:4639 #8 0x000000000067e777 in mysql_execute_command (thd=0x2a95679460) at sql_parse.cc:1957 #9 0x0000000000683673 in mysql_parse (thd=0x2a95679460, inBuf=0x1385d10 "SELECT affiliatestometa.uniquekey, affiliatestometa.xml AS affiliateXml, artists.name AS artistName, artists.artistid, genres.name AS genreName, genres.genreid, genres.priority AS genrePriority, subge"..., length=1347, found_semicolon=0x40bda500) at sql_parse.cc:5513 #10 0x00000000006843ff in dispatch_command (command=COM_QUERY, thd=0x2a95679460, packet=Variable "packet" is not available. ) at sql_parse.cc:1022 #11 0x0000000000684b90 in do_command (thd=0x2a95679460) at sql_parse.cc:714 #12 0x000000000067572e in handle_one_connection (arg=0x2a95679460) at sql_connect.cc:1137 #13 0x0000003a3920610a in start_thread () from /lib64/tls/libpthread.so.0 #14 0x0000003a389c68b3 in clone () from /lib64/tls/libc.so.6 #15 0x0000000000000000 in ?? () (gdb) f 3 #3 JOIN_CACHE::init (this=0x137ce70) at sql_select.cc:16701 16701 for (tab= cache->join_tab-cache->tables; tab < cache->join_tab ; tab++) (gdb) l 16696 */ 16697 JOIN_CACHE *cache= this; 16698 while (gl_key_arg_fields) 16699 { 16700 cache= cache->prev_cache; 16701 for (tab= cache->join_tab-cache->tables; tab < cache->join_tab ; tab++) 16702 { 16703 CACHE_FIELD *cache_copy; 16704 MY_BITMAP *key_read_set= &tab->table->tmp_set; 16705 if (bitmap_is_clear_all(key_read_set)) (gdb) f 4 #4 0x00000000006eae77 in JOIN::optimize (this=0x2a96ce3cb0) at sql_select.h:486 486 prev->next_cache= this; 481 join= j; 482 join_tab= tab; 483 prev_cache= prev; 484 next_cache= 0; 485 if (prev) 486 prev->next_cache= this; 487 } 488 uint pack_length() 489 { return JOIN_CACHE::pack_length() + sizeof(uint32); } 490 uint addon_length() (gdb) f 5 #5 0x00000000006f0135 in mysql_select (thd=0x2a95679460, rref_pointer_array=0x2a9567b238, tables=0x2a96ccb110, wild_num=0, fields=@0x2a9567b158, conds=0x2a96ce10b0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=0, result=0x2a96ce3aa0, unit=0x2a9567ac10, select_lex=dwarf2_read_address: Corrupted DWARF expression. ) at sql_select.cc:2930 2930 if ((err= join->optimize())) (gdb) l 2925 err= 1; 2926 goto err; 2927 } 2928 /* dump_TABLE_LIST_struct(select_lex, select_lex->leaf_tables); */ 2929 2930 if ((err= join->optimize())) 2931 { 2932 goto err; // 1 2933 } How to repeat: Not easy: Start ATRT run using mysqlchoke and the Sony query. open a mysql client and issue same query on the sony db