use test; drop table if exists CRASH_TEST; create table CRASH_TEST (col int not null); prepare test from 'select 1 from CRASH_TEST t1 right join CRASH_TEST t2 on 1 right join CRASH_TEST t3 on t2.col=t3.col join CRASH_TEST on 1'; execute test; execute test; Linux 5.0.20-max stack ---------------------- 0x818e082 handle_segfault + 426 0xef0420 (?) 0x3 (?) 0x84bd4b8 __default_terminate + 24 0x84bd4dd __terminate + 29 0x84bd15b __pure_virtual + 43 0x81d845c build_equal_items_for_cond__FP4ItemP10COND_EQUAL + 60 0x81d8754 build_equal_items__FP3THDP4ItemP10COND_EQUALPt4List1Z13st_table_listPP10COND_EQUAL + 40 0x81d888a build_equal_items__FP3THDP4ItemP10COND_EQUALPt4List1Z13st_table_listPP10COND_EQUAL + 350 0x81d9fd6 optimize_cond__FP4JOINP4ItemPt4List1Z13st_table_listPQ24Item11cond_result + 62 0x81cc7a2 optimize__4JOIN + 550 0x81cf422 mysql_select__FP3THDPPP4ItemP13st_table_listUiRt4List1Z4ItemP4ItemUiP8st_orderT7T5T7UlP13select_resultP18st_select_lex_unitP13s + 794 0x81cbc11 handle_select__FP3THDP6st_lexP13select_resultUl + 193 0x81a00b5 mysql_execute_command__FP3THD + 1329 0x81ee46f execute__18Prepared_statementP6Stringb + 551 0x81ed76e mysql_sql_stmt_execute__FP3THD + 222 0x81a0100 mysql_execute_command__FP3THD + 1404 0x81a6c38 mysql_parse__FP3THDPcUi + 288 0x819e646 dispatch_command__F19enum_server_commandP3THDPcUi + 1894 0x819ded3 do_command__FP3THD + 195 0x819d414 handle_one_connection + 764 0x880b80 (?) 0x597dee (?) Windows 5.0.20-debug stack --------------------------- 044dc6c8 00589e01 mysqld_debug!setup_conds(class THD * thd = 0x01474098, struct st_table_list * tables = 0x0147d7d0, struct st_table_list * leaves = 0x0147d7d0, class Item ** conds = 0x03205790)+0x1fb [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_base.cpp @ 4743] 044dc704 0056a837 mysqld_debug!setup_without_group(class THD * thd = 0x01474098, class Item ** ref_pointer_array = 0x0147e9e0, struct st_table_list * tables = 0x0147d7d0, struct st_table_list * leaves = 0x0147d7d0, class List * fields = 0x0320be58, class List * all_fields = 0x0320571c, class Item ** conds = 0x03205790, struct st_order * order = 0x00000000, struct st_order * group = 0x00000000, int * hidden_group_fields = 0x03205700)+0x91 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_select.cpp @ 282] 044dc79c 0056f77c mysqld_debug!JOIN::prepare(class Item *** rref_pointer_array = 0x0320bef4, struct st_table_list * tables_init = 0x0147d7d0, unsigned int wild_num = 0, class Item * conds_init = 0x0147e748, unsigned int og_num = 0, struct st_order * order_init = 0x00000000, struct st_order * group_init = 0x00000000, class Item * having_init = 0x00000000, struct st_order * proc_param_init = 0x00000000, class st_select_lex * select_lex_arg = 0x0320bdc8, class st_select_lex_unit * unit_arg = 0x0320bb60)+0x297 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_select.cpp @ 350] 044dc80c 0056a501 mysqld_debug!mysql_select(class THD * thd = 0x01474098, class Item *** rref_pointer_array = 0x0320bef4, struct st_table_list * tables = 0x0147d7d0, unsigned int wild_num = 0, class List * fields = 0x0320be58, class Item * conds = 0x0147e748, unsigned int og_num = 0, struct st_order * order = 0x00000000, struct st_order * group = 0x00000000, class Item * having = 0x00000000, struct st_order * proc_param = 0x00000000, unsigned long select_options = 0x90844a00, class select_result * result = 0x0147e9d0, class st_select_lex_unit * unit = 0x0320bb60, class st_select_lex * select_lex = 0x0320bdc8)+0x1fc [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_select.cpp @ 1881] 044dc870 005557cb mysqld_debug!handle_select(class THD * thd = 0x01474098, struct st_lex * lex = 0x0320bb48, class select_result * result = 0x0147e9d0, unsigned long setup_tables_done_option = 0)+0x121 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_select.cpp @ 250] 044ddca0 00566071 mysqld_debug!mysql_execute_command(class THD * thd = 0x01474098)+0x60b [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_parse.cpp @ 2483] 044de584 00562b79 mysqld_debug!Prepared_statement::execute(class String * expanded_query = 0x044de5a8, int open_cursor = 0)+0x3b1 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_prepare.cpp @ 2912] 044de5d0 00555840 mysqld_debug!mysql_sql_stmt_execute(class THD * thd = 0x01474098)+0x1b9 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_prepare.cpp @ 2305] 044df9f4 0055d7bd mysqld_debug!mysql_execute_command(class THD * thd = 0x01474098)+0x680 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_parse.cpp @ 2497] 044dfa2c 00553b03 mysqld_debug!mysql_parse(class THD * thd = 0x01474098, char * inBuf = 0x03204928 "execute test", unsigned int length = 0xc)+0x1ad [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_parse.cpp @ 5710] 044dff00 005533d6 mysqld_debug!dispatch_command(enum_server_command command = COM_QUERY (3), class THD * thd = 0x01474098, char * packet = 0x014775b9 "execute test", unsigned int packet_length = 0xd)+0x723 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_parse.cpp @ 1720] 044dff3c 005518e1 mysqld_debug!do_command(class THD * thd = 0x01474098)+0x1f6 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_parse.cpp @ 1516] 044dff68 00603883 mysqld_debug!handle_one_connection(void * arg = 0x01474098)+0x241 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\sql\sql_parse.cpp @ 1159] 044dff7c 00811287 mysqld_debug!pthread_start(void * param = 0x031f9258)+0x53 [f:\builds\mysql-5.0.20-win-src\mysql-5.0.20\mysys\my_winthread.c @ 63] 044dffb4 7c57b388 mysqld_debug!_threadstart(void * ptd = 0x03204718)+0xb7 [f:\vs70builds\3077\vc\crtbld\crt\src\thread.c @ 196] 044dffec 00000000 KERNEL32!BaseThreadStart+0x52 Line at fault in setup_conds() : if (!embedded->on_expr->fixed && embedded->on_expr->fix_fields(thd, &embedded->on_expr) || embedded->on_expr->check_cols(1))