Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Incomplete
-
10.11.10
-
None
-
Windows 11 64bit
Description
Crash in best_access_path
Detailed information is in dump1.stacks.txt and dump2.stacks.txt
Exception details
Unhandled exception at 0x00007FFD9DEFF3E4 (server.dll) in mysqld (3).dmp: 0xC0000005: Access violation reading location 0x0000000000000040.
Presumable reason is null pointer access somewhere in code below
The corresponding source, as shown in debugger (sql_select.cc, line 9021-9032)
Json_writer_object trace_access_scan(thd);
|
if ((records >= s->found_records || best > s->read_time) && // (1) |
!(best_key && best_key->key == MAX_KEY) && // (2) |
!(s->quick &&
|
s->quick->get_type() != QUICK_SELECT_I::QS_TYPE_GROUP_MIN_MAX && // (2) |
best_key && s->quick->index == best_key->key && // (2) |
s->table->opt_range_keys.is_set(best_key->key) && // (2) |
best_max_key_part >= s->table->opt_range[best_key->key].key_parts) &&// (2) |
!((s->table->file->ha_table_flags() & HA_TABLE_SCAN_ON_INDEX) && // (3) |
! s->table->covering_keys.is_clear_all() && best_key && !s->quick) &&// (3) |
!(s->table->force_index && best_key && !s->quick) && // (4) |
!(best_key && s->table->pos_in_table_list->jtbm_subselect)) // (5) |
The callstack leading to that is
*1 server.dll!best_access_path(join, s, remaining_tables, join_positions, idx, disable_jbuf, record_count, pos, loose_scan_pos) Line 9031
|
2 server.dll!get_costs_for_tables(join, remaining_tables, idx, record_count, trace_one_table, pos, store_position, allowed_tables, stop_on_eq_ref) Line 10667
|
3 server.dll!best_extension_by_limited_search(join, remaining_tables, idx, record_count, read_time, search_depth, use_cond_selectivity, processed_eq_ref_tables) Line 11250
|
4 server.dll!greedy_search(join, remaining_tables, search_depth, use_cond_selectivity) Line 9914
|
5 server.dll!choose_plan(join, join_tables) Line 9467
|
6 server.dll!st_join_table::choose_best_splitting(idx, remaining_tables, join_positions, spl_pd_boundary) Line 1083
|
7 server.dll!best_access_path(join, s, remaining_tables, join_positions, idx, disable_jbuf, record_count, pos, loose_scan_pos) Line 8249
|
8 server.dll!get_costs_for_tables(join, remaining_tables, idx, record_count, trace_one_table, pos, store_position, allowed_tables, stop_on_eq_ref) Line 10667
|
9 server.dll!best_extension_by_limited_search(join, remaining_tables, idx, record_count, read_time, search_depth, use_cond_selectivity, processed_eq_ref_tables) Line 11250
|
10 server.dll!best_extension_by_limited_search(join, remaining_tables, idx, record_count, read_time, search_depth, use_cond_selectivity, processed_eq_ref_tables) Line 11449
|
11 server.dll!greedy_search(join, remaining_tables, search_depth, use_cond_selectivity) Line 9914
|
12 server.dll!choose_plan(join, join_tables) Line 9467
|
13 server.dll!make_join_statistics(join, tables_list, keyuse_array) Line 6175
|
14 server.dll!JOIN::optimize_inner() Line 2641
|
15 server.dll!JOIN::optimize() Line 1956
|
16 server.dll!mysql_derived_optimize(thd, lex, derived) Line 1045
|
17 server.dll!mysql_handle_single_derived(lex, derived, phases) Line 200
|
18 server.dll!TABLE_LIST::handle_derived(lex, phases) Line 9686
|
19 [Inline Frame] server.dll!LEX::handle_list_of_derived(table_list, ) Line 4591
|
20 server.dll!st_select_lex::handle_derived(lex, phases) Line 5066
|
21 server.dll!TABLE_LIST::handle_derived(lex, phases) Line 9683
|
22 [Inline Frame] server.dll!LEX::handle_list_of_derived(table_list, ) Line 4591
|
23 server.dll!st_select_lex::handle_derived(lex, phases) Line 5066
|
24 server.dll!JOIN::optimize_inner() Line 2464
|
25 [Inline Frame] server.dll!JOIN::optimize() Line 1954
|
26 server.dll!mysql_select(thd, tables, fields, conds, og_num, order, group, having, proc_param, select_options, result, unit, select_lex) Line 5208
|
27 server.dll!handle_select(thd, lex, result, setup_tables_done_option) Line 600
|
28 server.dll!execute_sqlcom_select(thd, all_tables) Line 6412
|
29 server.dll!mysql_execute_command(thd, is_called_from_prepared_stmt) Line 3999
|
30 server.dll!sp_instr_stmt::exec_core(thd, nextp) Line 3926
|
31 server.dll!sp_lex_keeper::reset_lex_and_exec_core(thd, nextp, open_tables, instr) Line 3646
|
32 server.dll!sp_instr_stmt::execute(thd, nextp) Line 3827
|
33 server.dll!sp_head::execute(thd, merge_da_on_success) Line 1463
|
34 server.dll!sp_head::execute_procedure(thd, args) Line 2479
|
35 server.dll!do_execute_sp(thd, sp) Line 3079
|
36 server.dll!Sql_cmd_call::execute(thd) Line 3321
|
37 server.dll!mysql_execute_command(thd, is_called_from_prepared_stmt) Line 6165
|
38 server.dll!sp_instr_stmt::exec_core(thd, nextp) Line 3926
|
39 server.dll!sp_lex_keeper::reset_lex_and_exec_core(thd, nextp, open_tables, instr) Line 3646
|
40 server.dll!sp_instr_stmt::execute(thd, nextp) Line 3827
|
41 server.dll!sp_head::execute(thd, merge_da_on_success) Line 1463
|
42 server.dll!sp_head::execute_procedure(thd, args) Line 2479
|
43 server.dll!do_execute_sp(thd, sp) Line 3079
|
44 server.dll!Sql_cmd_call::execute(thd) Line 3321
|
45 server.dll!mysql_execute_command(thd, is_called_from_prepared_stmt) Line 6165
|
46 server.dll!sp_instr_stmt::exec_core(thd, nextp) Line 3926
|
47 server.dll!sp_lex_keeper::reset_lex_and_exec_core(thd, nextp, open_tables, instr) Line 3646
|
48 server.dll!sp_instr_stmt::execute(thd, nextp) Line 3827
|
49 server.dll!sp_head::execute(thd, merge_da_on_success) Line 1463
|
50 server.dll!sp_head::execute_procedure(thd, args) Line 2479
|
51 server.dll!do_execute_sp(thd, sp) Line 3079
|
52 server.dll!Sql_cmd_call::execute(thd) Line 3321
|
53 server.dll!mysql_execute_command(thd, is_called_from_prepared_stmt) Line 6165
|
54 server.dll!sp_instr_stmt::exec_core(thd, nextp) Line 3926
|
55 server.dll!sp_lex_keeper::reset_lex_and_exec_core(thd, nextp, open_tables, instr) Line 3646
|
56 server.dll!sp_instr_stmt::execute(thd, nextp) Line 3827
|
57 server.dll!sp_head::execute(thd, merge_da_on_success) Line 1463
|
58 server.dll!sp_head::execute_procedure(thd, args) Line 2479
|
59 server.dll!do_execute_sp(thd, sp) Line 3079
|
60 server.dll!Sql_cmd_call::execute(thd) Line 3321
|
61 server.dll!mysql_execute_command(thd, is_called_from_prepared_stmt) Line 6165
|
62 server.dll!sp_instr_stmt::exec_core(thd, nextp) Line 3926
|
63 server.dll!sp_lex_keeper::reset_lex_and_exec_core(thd, nextp, open_tables, instr) Line 3646
|
64 server.dll!sp_instr_stmt::execute(thd, nextp) Line 3827
|
65 server.dll!sp_head::execute(thd, merge_da_on_success) Line 1463
|
66 server.dll!sp_head::execute_procedure(thd, args) Line 2479
|
67 server.dll!Event_job_data::execute(thd, drop) Line 1482
|
68 [Inline Frame] server.dll!Event_worker_thread::run() Line 318
|
69 server.dll!event_worker_thread(arg) Line 266
|
70 server.dll!pfs_spawn_thread(arg) Line 2204
|
71 server.dll!pthread_start(p) Line 62
|
Attachments
Issue Links
- relates to
-
MDEV-31498 Assertion `(key_dependent & s->key_dependent) == key_dependent' failed in best_access_path
-
- Open
-
-
MDEV-32630 split_materialized: SIGSEGV in best_access_path()
-
- Open
-
-
MDEV-36496 Crash log on 5th Apr 2025
-
- Open
-
-
MDEV-36408 Crash log on 27th Mar 2025
-
- Open
-
-
MDEV-36432 process information schema crash on invalid THD ptr was; crash log on 29th Mar
-
- Open
-