| Bug #97593 | mysql 5.6 crashes at fill_trx_row | ||
|---|---|---|---|
| Submitted: | 12 Nov 2019 9:19 | Modified: | 16 Dec 2019 13:54 |
| Reporter: | jeff.ding jeff.ding | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server | Severity: | S2 (Serious) |
| Version: | 5.6 | OS: | CentOS |
| Assigned to: | CPU Architecture: | x86 | |
[12 Nov 2019 9:19]
jeff.ding jeff.ding
[12 Nov 2019 12:44]
MySQL Verification Team
Hi Mr. jeff.ding, Thank you for your bug report. However, we need additional info from you. First, I have run your query 10 (ten) times and it never crashed our server running latest 5.6. Hence, the questions: * Are you using latest available 5.6 and if not, please try that one, first of all * What are the exact conditions under which you can get the crash. We need a fully repeatable test case in order to verify this report. That means a test case that would ALWAYS crash a server.
[13 Nov 2019 1:42]
jeff.ding jeff.ding
Hi, Sinisa Milivojevic
This crash only one time, but got the core stack:
#0 0x00007fe395bc79b1 in pthread_kill () from /lib64/libpthread.so.0
#1 0x00000000006aff8e in handle_fatal_signal (sig=6)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/signal_handler.cc:321
#2 <signal handler called>
#3 0x00007fe3949d91f7 in raise () from /lib64/libc.so.6
#4 0x00007fe3949da8e8 in abort () from /lib64/libc.so.6
#5 0x0000000000af9af3 in fill_trx_row (row=0x7fc9645f8af8, trx=trx@entry=0x7fc24f7fc168, requested_lock_row=requested_lock_row@entry=0x0,
cache=cache@entry=0x156ac00 <trx_i_s_cache_static>)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/storage/innobase/trx/trx0i_s.cc:488
#6 0x0000000000afa78b in fetch_data_into_cache_low (cache=cache@entry=0x156ac00 <trx_i_s_cache_static>, trx_list=<optimized out>,
read_write=true) at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/storage/innobase/trx/trx0i_s.cc:1331
#7 0x0000000000afae30 in fetch_data_into_cache (cache=0x156ac00 <trx_i_s_cache_static>)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/storage/innobase/trx/trx0i_s.cc:1357
#8 trx_i_s_possibly_fetch_data_into_cache (cache=cache@entry=0x156ac00 <trx_i_s_cache_static>)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/storage/innobase/trx/trx0i_s.cc:1386
#9 0x0000000000a16eb5 in trx_i_s_common_fill_table (thd=thd@entry=0x7fc5023f0000, tables=tables@entry=0x7fc78656d6a0)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/storage/innobase/handler/i_s.cc:1340
#10 0x0000000000795052 in do_fill_table (join_table=0x7fc4e86120b8, table_list=0x7fc78656d6a0, thd=0x7fc5023f0000)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_show.cc:8012
#11 get_schema_tables_result (join=join@entry=0x7fc3a7dea1d0, executed_place=executed_place@entry=PROCESSED_BY_JOIN_EXEC)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_show.cc:8113
#12 0x0000000000773745 in JOIN::prepare_result (this=this@entry=0x7fc3a7dea1d0, columns_list=columns_list@entry=0x7fc87c5e5370)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_select.cc:824
#13 0x0000000000719f87 in JOIN::exec (this=0x7fc3a7dea1d0)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_executor.cc:116
#14 0x000000000077440d in mysql_execute_select (free_join=true, select_lex=0x7fc5023f2c80, thd=0x7fc5023f0000)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_select.cc:1114
#15 mysql_select (thd=thd@entry=0x7fc5023f0000, tables=0x7fc78656d6a0, wild_num=0, fields=..., conds=0x7fc78656e058,
order=order@entry=0x7fc5023f2e50, group=group@entry=0x7fc5023f2d88, having=0x0, select_options=2684619520,
result=result@entry=0x7fc3a7dea1a8, unit=unit@entry=0x7fc5023f2620, select_lex=select_lex@entry=0x7fc5023f2c80)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_select.cc:1235
#16 0x0000000000774665 in handle_select (thd=thd@entry=0x7fc5023f0000, result=result@entry=0x7fc3a7dea1a8,
setup_tables_done_option=setup_tables_done_option@entry=0)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_select.cc:111
#17 0x0000000000597518 in execute_sqlcom_select (thd=thd@entry=0x7fc5023f0000, all_tables=<optimized out>)
at /home/admin/35_20191015101601795_107527411_code/rpm_workspace/sql/sql_parse.cc:6188
At the time of this crash, trx->lock.wait_lock(0x7fc8deb583c8) is not nullptr while requested_lock_row is 0x0(this means trx->lock.que_state is TRX_QUE_RUNNING). So I checked this and found trx->lock.wait_lock and trx->lock.que_state are modified under trx->mutex(please see function lock_cancel_waiting_and_release). When we query trx state from information_schema, fetch_data_into_cache_low access these two variables with no trx->mutex acquired, make the server crashes, i think.
I checked fetch_data_into_cache_low in mysql 8.0, fetch_data_into_cache_low had called trx_mutex_enter(trx) before add_trx_relevant_locks_to_cache, please check this :)
[13 Nov 2019 12:48]
MySQL Verification Team
Hi Mr. ding, Please re-read and answer to the questions that I asked in my previous comment.
[13 Nov 2019 12:49]
MySQL Verification Team
We simply have to make sure that you use the latest release and if you do, we must be able to repeat the behaviour.
[14 Dec 2019 1:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
