| Bug #33085 | Stored functions crash server when used in select list and group by | ||
|---|---|---|---|
| Submitted: | 8 Dec 2007 13:22 | Modified: | 17 Dec 2007 8:36 |
| Reporter: | Mark Leith | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: Stored Routines | Severity: | S2 (Serious) |
| Version: | 5.1-BK | OS: | Any |
| Assigned to: | Georgi Kodinov | CPU Architecture: | Any |
| Tags: | crash, GROUP BY, Stored Functions | ||
[8 Dec 2007 13:22]
Mark Leith
[8 Dec 2007 13:23]
Mark Leith
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000004
[Switching to process 18417 thread 0x2b03]
create_tmp_table (thd=0x5817200, param=0x5882e70, fields=@0x5882f30, group=0x5875660, distinct=false, save_sum_fields=false, select_options=2149861888, rows_limit=18446744073709551615, table_alias=0x5058a0 "") at sql_select.cc:9932
9932 key_part_info->offset= field->offset(table->record[0]);
(gdb) bt full
#0 create_tmp_table (thd=0x5817200, param=0x5882e70, fields=@0x5882f30, group=0x5875660, distinct=false, save_sum_fields=false, select_options=2149861888, rows_limit=18446744073709551615, table_alias=0x5058a0 "") at sql_select.cc:9932
field = (Field *) 0x0
maybe_null = true
cur_group = (ORDER *) 0x5875660
distinct = false
save_sum_fields = false
select_options = 2149861888
rows_limit = 18446744073709551615
mem_root_save = (MEM_ROOT *) 0x5818850
own_root = {
free = 0x0,
used = 0x5863200,
pre_alloc = 0x0,
min_malloc = 32,
block_size = 996,
block_num = 5,
first_block_usage = 0,
error_handler = 0x5fbee <sql_alloc_error_handler>
}
table = (TABLE *) 0x5863210
share = (TABLE_SHARE *) 0x58638a8
i = 0
field_count = 4
null_count = 1
null_pack_length = 1
copy_func_count = 3
hidden_null_count = 0
hidden_null_pack_length = 0
hidden_field_count = 4294967295
blob_count = 0
group_null_items = 0
string_count = 0
temp_pool_slot = 0
fieldnr = 1
reclength = 9
string_total_length = 0
using_unique_constraint = false
use_packed_rows = false
not_all_columns = true
tmpname = 0x5863d78 "#sql_47f1_0"
tmppath = 0x5863d60 "/var/tmp/#sql_47f1_0"
path = "/var/tmp/#sql_47f1_0", '\0' <repeats 13 times>, "\006\000\000\000\230\026\000\220\030\206F°´s\032\000\020^\207\0056©I\0008\206F°¬©I\000\000\000\000\000\000\000\000\000@òR\000CC\000\2208\000\200\005\000r\201\005\005\000\000\000àÈ\233\006¼{F°ØÑ\233\006\001\000\000\000>\000\000\000\001\000\000\000\000\000\000\000h\206F°,»I\000\000\000\000\000\000\000ð?\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\001\000\000\000\000\000\000@\001\000\000\000\t\232I\000\006\000\000\000ø1\210\005\000\000\000\000\t\232I\000\006\000\000\0006©I\000È\206"...
table_name = "#sql_47f1_0\000°\t\232I\000\006\000\000\0006©I\000\030\210F°¬©I\000¼\210F°6©I\000(\210F°¬©I\000\006\000\000\000\230\026\000\220(\210F°àÈ\233\006àÈ\233\0066©I\000H\210F°àÈ\233\006Ð=\207\005àÈ\233\006X\210F° ºI\000Ð=\207\005\230\026\000\220X\210F°\t\232I\000\006\000\000\000Ü\210F°Ø\210F°d\210F°Ð=\207\0056©I\000\210\210F°¬©I\000Ð=\207\005\000\224P\000¨\210F°\t\232I\000\006\000\000\000\214\210F°\210\210F°àÈ\233\006\006\000\000\0006©I\000¸\210F°¬©I"
pos = (uchar *) 0x588c189 ""
group_buff = (uchar *) 0x5863d88 ""
bitmaps = (uchar *) 0x5863d98 "ÿÿÿÿ"
null_flags = (uchar *) 0x588c180 "ÿ"
reg_field = (Field **) 0x5863b1c
from_field = (Field **) 0x5863b58
default_field = (Field **) 0x5863b30
blob_field = (uint *) 0x5863b40
copy = (Copy_field *) 0x738fc8
keyinfo = (KEY *) 0x5863b78
key_part_info = (KEY_PART_INFO *) 0x5863bb0
copy_func = (Item **) 0x5863b68
recinfo = (MI_COLUMNDEF *) 0x5863c20
total_uneven_bit_length = 0
force_copy_fields = false
_db_func_ = 0x5227f4 "JOIN::optimize"
_db_file_ = 0x521e54 "sql_select.cc"
_db_level_ = 7
_db_framep_ = (char **) 0xb0468904
item = (Item *) 0x0
tmp_from_field = (Field **) 0x5863b5c
#1 0x0012abf8 in JOIN::optimize (this=0x5881e10) at sql_select.cc:1361
tmp_group = (ORDER *) 0x5875660
tmp_rows_limit = 398619625601077192
_db_func_ = 0x522fb0 "mysql_select"
_db_file_ = 0x521e54 "sql_select.cc"
_db_level_ = 6
_db_framep_ = (char **) 0x6
sel = (SELECT_LEX *) 0x0
#2 0x001347c2 in mysql_select (thd=0x5817200, rref_pointer_array=0x5818374, tables=0x5874968, wild_num=0, fields=@0x5818304, conds=0x0, og_num=1, order=0x0, group=0x5875660, having=0x0, proc_param=0x0, select_options=2149861888, result=0x58758d0, unit=0x5818008, select_lex=0x5818270) at sql_select.cc:2257
select_options = 2149861888
err = false
free_join = true
_db_func_ = 0x523048 "handle_select"
_db_file_ = 0x521e54 "sql_select.cc"
_db_level_ = 5
_db_framep_ = (char **) 0x5875690
join = (JOIN *) 0x5881e10
#3 0x00134db9 in handle_select (thd=0x5817200, lex=0x5817fac, result=0x58758d0, setup_tables_done_option=0) at sql_select.cc:258
unit = (SELECT_LEX_UNIT *) 0x0
res = false
select_lex = (SELECT_LEX *) 0x5818270
_db_func_ = 0x5199c8 "mysql_execute_command"
_db_file_ = 0x519480 "sql_parse.cc"
_db_level_ = 4
_db_framep_ = (char **) 0x0
#4 0x000bb520 in execute_sqlcom_select (thd=0x5817200, all_tables=0x5874968) at sql_parse.cc:4539
lex = (LEX *) 0x5817fac
result = (select_result *) 0x58758d0
res = 208
#5 0x000be097 in mysql_execute_command (thd=0x5817200) at sql_parse.cc:1883
res = false
need_start_waiting = false
up_result = 92683184
lex = (LEX *) 0x5817fac
select_lex = (SELECT_LEX *) 0x5818270
first_table = (TABLE_LIST *) 0x5874968
all_tables = (TABLE_LIST *) 0x5874968
unit = (SELECT_LEX_UNIT *) 0x5818008
_db_func_ = 0x519d90 "mysql_parse"
_db_file_ = 0x519480 "sql_parse.cc"
_db_level_ = 3
_db_framep_ = (char **) 0x5817200
#6 0x000c5b4a in mysql_parse (thd=0x5817200, inBuf=0x5873c10 "select f1(1), count(*) \nfrom t1\ngroup by f1(1)", length=46, found_semicolon=0xb0469e3c) at sql_parse.cc:5446
lex = (LEX *) 0x5817fac
lip = {
m_thd = 0x5817200,
yylineno = 3,
yytoklen = 1,
yylval = 0xb046978c,
m_ptr = 0x5873c3f "rministic\nno sql\nbegin\n return i;\nend",
m_tok_start = 0x5873c3f "rministic\nno sql\nbegin\n return i;\nend",
m_tok_end = 0x5873c3f "rministic\nno sql\nbegin\n return i;\nend",
m_end_of_query = 0x5873c3e "",
m_tok_start_prev = 0x5873c3e "",
m_buf = 0x5873c10 "select f1(1), count(*) \nfrom t1\ngroup by f1(1)",
m_buf_length = 46,
m_echo = true,
m_cpp_buf = 0x5873c88 "select f1(1), count(*) \nfrom t1\ngroup by f1(1)",
m_cpp_ptr = 0x5873cb6 "",
m_cpp_tok_start = 0x5873cb6 "",
m_cpp_tok_start_prev = 0x5873cb6 "",
m_cpp_tok_end = 0x5873cb6 "",
m_body_utf8 = 0x0,
m_body_utf8_ptr = 0x1 <Address 0x1 out of bounds>,
m_cpp_utf8_processed_ptr = 0x0,
next_state = MY_LEX_END,
found_semicolon = 0x0,
tok_bitmap = 133 '\205',
ignore_space = false,
stmt_prepare_mode = false,
in_comment = NO_COMMENT,
m_cpp_text_start = 0x5873cb4 "1)",
m_cpp_text_end = 0x5873cb5 ")",
m_underscore_cs = 0x0
}
err = 176
thd = (THD *) 0x5817200
length = 2957416516
_db_func_ = 0x519e14 "dispatch_command"
_db_file_ = 0x519480 "sql_parse.cc"
_db_level_ = 2
_db_framep_ = (char **) 0x586b200
#7 0x000c6995 in dispatch_command (command=COM_QUERY, thd=0x5817200, packet=0x52f1001 "select f1(1), count(*) \nfrom t1\ngroup by f1(1)", packet_length=47) at sql_parse.cc:953
packet_end = 0x5873c3e ""
found_semicolon = 0x0
net = (NET *) 0x5817270
_db_func_ = 0x5894fc "?func"
_db_file_ = 0x589504 "?file"
_db_level_ = 1
_db_framep_ = (char **) 0x2
#8 0x000c7acc in do_command (thd=0x5817200) at sql_parse.cc:712
packet = 0x52f1000 "\003select f1(1), count(*) \nfrom t1\ngroup by f1(1)"
packet_length = 47
net = (NET *) 0x5817270
command = COM_QUERY
_db_func_ = 0x5894fc "?func"
_db_file_ = 0x589504 "?file"
_db_level_ = 1
_db_framep_ = (char **) 0xb58e1
#9 0x000b6898 in handle_one_connection (arg=0x5817200) at sql_connect.cc:1094
net = (NET *) 0x5817270
arg = (void *) 0x5817270
thd = (THD *) 0x5817200
launch_time = 92369520
#10 0x90024147 in _pthread_body ()
No symbol table info available.
[8 Dec 2007 13:29]
Mark Leith
Passing in the column from the t1 table is fine:
mysql> select f1(i), count(*)
-> from t1
-> group by f1(i);
+-------+----------+
| f1(i) | count(*) |
+-------+----------+
| 1 | 1 |
| 2 | 1 |
+-------+----------+
2 rows in set (0.00 sec)
[17 Dec 2007 8:36]
Georgi Kodinov
Tried in the latest 5.0 and 5.1 bk trees. The bug doesn't appear anymore. Probably fixed by the fix for bug #29338 or the related bug #27354. Please try it with the latest bk tree and re-open if it still appears.
