Bug #97405 Combination of transaction_read_only and gtid can lead to asserition on a debug
Submitted: 28 Oct 2019 19:37 Modified: 23 Jul 2020 5:27
Reporter: Hrvoje Matijakovic Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Replication Severity:S6 (Debug Builds)
Version:8.0.18, 5.7.28 OS:Linux
Assigned to: CPU Architecture:x86

[28 Oct 2019 19:37] Hrvoje Matijakovic
Description:
Following sql results in a crash on a debug build. Couldn't reproduce it on a release build.

gdb from the debug build:

Core was generated by `/sdc/MS151019-mysql-8.0.18-linux-x86_64-debug/bin/mysqld --no-defaults --basedi'.
Program terminated with signal 6, Aborted.
#0  0x00007f6df7e79a61 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:59
59        val = INTERNAL_SYSCALL (tgkill, err, 3, THREAD_GETMEM (THREAD_SELF, pid),
(gdb) bt
+bt
#0  0x00007f6df7e79a61 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:59
#1  0x00000000048f003d in my_write_core (sig=6) at /sdc/MS-8.0.18_dbg/mysys/stacktrace.cc:305
#2  0x00000000035e030e in handle_fatal_signal (sig=6) at /sdc/MS-8.0.18_dbg/sql/signal_handler.cc:169
#3  <signal handler called>
#4  0x00007f6df5cc1337 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:55
#5  0x00007f6df5cc2a28 in __GI_abort () at abort.c:90
#6  0x00007f6df5cba156 in __assert_fail_base (fmt=0x7f6df5e15be0 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5b319cb "!is_set()", file=file@entry=0x5b31820 "/sdc/MS-8.0.18_dbg/sql/sql_error.cc", line=line@entry=377, function=function@entry=0x5b31da0 <Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*)::__PRETTY_FUNCTION__> "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:92
#7  0x00007f6df5cba202 in __GI___assert_fail (assertion=0x5b319cb "!is_set()", file=0x5b31820 "/sdc/MS-8.0.18_dbg/sql/sql_error.cc", line=377, function=0x5b31da0 <Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*)::__PRETTY_FUNCTION__> "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
#8  0x0000000003377857 in Diagnostics_area::set_ok_status (this=0x7f6d9c4224f8, affected_rows=0, last_insert_id=0, message_text=0x0) at /sdc/MS-8.0.18_dbg/sql/sql_error.cc:377
#9  0x000000000336ddcf in my_ok (thd=0x7f6d9c420000, affected_rows=0, id=0, message=0x0) at /sdc/MS-8.0.18_dbg/sql/sql_class.h:4260
#10 0x0000000003410096 in mysql_execute_command (thd=0x7f6d9c420000, first_level=true) at /sdc/MS-8.0.18_dbg/sql/sql_parse.cc:3503
#11 0x0000000003415bb6 in mysql_parse (thd=0x7f6d9c420000, parser_state=0x7f6df4662ae0) at /sdc/MS-8.0.18_dbg/sql/sql_parse.cc:5257
#12 0x000000000340b046 in dispatch_command (thd=0x7f6d9c420000, com_data=0x7f6df4663b90, command=COM_QUERY) at /sdc/MS-8.0.18_dbg/sql/sql_parse.cc:1765
#13 0x000000000340958b in do_command (thd=0x7f6d9c420000) at /sdc/MS-8.0.18_dbg/sql/sql_parse.cc:1273
#14 0x00000000035caf99 in handle_connection (arg=0x7f6da747a3e0) at /sdc/MS-8.0.18_dbg/sql/conn_handler/connection_handler_per_thread.cc:302
#15 0x00000000050ac3c0 in pfs_spawn_thread (arg=0x7f6df3c6a6e0) at /sdc/MS-8.0.18_dbg/storage/perfschema/pfs.cc:2854
#16 0x00007f6df7e74e65 in start_thread (arg=0x7f6df4664700) at pthread_create.c:307
#17 0x00007f6df5d8988d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) quit

How to repeat:
SET transaction_read_only=ON;
SET @@GLOBAL.GTID_PURGED='d8c4cbad-a4f0-11e6-a7c2-902b34625689:1-10156';
[29 Oct 2019 6:47] MySQL Verification Team
Hello Hrvoje Matijakovic,

Thank you for the bug report and test case.
Verified as described on 8.0.18 debug build.

regards,
Umesh
[23 Jul 2020 5:27] Hrvoje Matijakovic
Another test case from 8.0.21-debug:
SET SESSION TRANSACTION READ ONLY,ISOLATION LEVEL REPEATABLE READ;
SET @@global.gtid_purged='11111111-1111-1111-1111-111111111111:3';

gdb:
Core was generated by `/sdc/MS140720-mysql-8.0.21-linux-x86_64-debug/bin/mysqld --no-defaults --basedi'.
Program terminated with signal 6, Aborted.
#0  0x00007f2859d5baa1 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:59
59        val = INTERNAL_SYSCALL (tgkill, err, 3, THREAD_GETMEM (THREAD_SELF, pid),
(gdb) bt
+bt
#0  0x00007f2859d5baa1 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:59
#1  0x0000000004c07dd1 in my_write_core (sig=6) at /home/hrvoje/sdc/MS-8.0.21_dbg/mysys/stacktrace.cc:308
#2  0x00000000038874d1 in handle_fatal_signal (sig=6) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/signal_handler.cc:171
#3  <signal handler called>
#4  0x00007f2857b58387 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:55
#5  0x00007f2857b59a78 in __GI_abort () at abort.c:90
#6  0x00007f2857b511a6 in __assert_fail_base (fmt=0x7f2857cacce0 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5f8a5e3 "!is_set()", file=file@entry=0x5f8a428 "/home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_error.cc", line=line@entry=377, function=function@entry=0x5f8a9a0 <Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*)::__PRETTY_FUNCTION__> "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:92
#7  0x00007f2857b51252 in __GI___assert_fail (assertion=0x5f8a5e3 "!is_set()", file=0x5f8a428 "/home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_error.cc", line=377, function=0x5f8a9a0 <Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*)::__PRETTY_FUNCTION__> "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
#8  0x0000000003619ec7 in Diagnostics_area::set_ok_status (this=0x7f2800022540, affected_rows=0, last_insert_id=0, message_text=0x0) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_error.cc:377
#9  0x00000000035f8014 in my_ok (thd=0x7f2800020000, affected_rows=0, id=0, message=0x0) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_class.cc:3028
#10 0x00000000036a9703 in mysql_execute_command (thd=0x7f2800020000, first_level=true) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_parse.cc:3607
#11 0x00000000036af397 in mysql_parse (thd=0x7f2800020000, parser_state=0x7f285a22bb20) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_parse.cc:5393
#12 0x00000000036a43d8 in dispatch_command (thd=0x7f2800020000, com_data=0x7f285a22cbd0, command=COM_QUERY) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_parse.cc:1810
#13 0x00000000036a28ed in do_command (thd=0x7f2800020000) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/sql_parse.cc:1294
#14 0x0000000003871d6b in handle_connection (arg=0x7f284d7f6ec0) at /home/hrvoje/sdc/MS-8.0.21_dbg/sql/conn_handler/connection_handler_per_thread.cc:302
#15 0x0000000005443ae5 in pfs_spawn_thread (arg=0x7f2855c6ca60) at /home/hrvoje/sdc/MS-8.0.21_dbg/storage/perfschema/pfs.cc:2880
#16 0x00007f2859d56ea5 in start_thread (arg=0x7f285a22d700) at pthread_create.c:307
#17 0x00007f2857c208dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111