Details
- 
    Bug 
- 
    Status: Closed (View Workflow)
- 
    Blocker 
- 
    Resolution: Fixed
- 
    10.6, 10.4(EOL), 10.5(EOL), 10.7(EOL)
- 
    Linux version 5.13.0-1-MANJARO (builduser@LEGION) (gcc (GCC) 11.1.0, GNU ld (GNU Binutils) 2.36.1) #1 SMP PREEMPT Mon Jun 7 06:16:10 UTC 2021 x86_64
Description
PoC:
| CREATE TABLE v0 AS SELECT STRCMP ( 'x' , 'x' ) AS v1 ORDER BY ( v1 + v1 LIKE 'x' AND v1 BETWEEN 'x' AND 53 ) ; | 
| REPLACE INTO v0 SELECT * FROM v0 ; | 
| CHECK TABLE v0 EXTENDED ; | 
| SELECT * FROM v0 GROUP BY v1 HAVING v1 = 'x' IN ( v1 IS NULL AND 'x' = 0 , 10 , -1 ) ; | 
| OPTIMIZE TABLE v0 , v0 ; | 
| LOCK TABLE v0 WRITE , v0 WRITE ; | 
Log:
| 2021-08-16 15:06:2021-08-16 14:41:38 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Number of pools: 1 | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions | 
| 2021-08-16 14:41:38 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts) | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Using liburing | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728 | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Completed initialization of buffer pool | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: 128 rollback segments are active. | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Creating shared tablespace for temporary tables | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: 10.7.0 started; log sequence number 42161; transaction id 14 | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Loading buffer pool(s) from /home/fuboat/mariadb-tmp/mysql-default-data/ib_buffer_pool | 
| 2021-08-16 14:41:38 0 [Note] Plugin 'FEEDBACK' is disabled. | 
| 2021-08-16 14:41:38 0 [Note] InnoDB: Buffer pool(s) load completed at 210816 14:41:38 | 
| 2021-08-16 14:41:38 0 [Note] Server socket created on IP: '0.0.0.0'. | 
| 2021-08-16 14:41:38 0 [Note] Server socket created on IP: '::'. | 
| 2021-08-16 14:41:38 0 [Note] /usr/local/mysql/bin//mysqld: ready for connections. | 
| Version: '10.7.0-MariaDB'  socket: '/tmp/0.socket'  port: 3306  Source distribution | 
| 2021-08-16 14:41:39 0 [Note] /usr/local/mysql/bin//mysqld (initiated by: root[root] @ localhost []): Normal shutdown | 
| 2021-08-16 14:41:39 0 [Note] InnoDB: FTS optimize thread exiting. | 
| 2021-08-16 14:41:39 0 [Note] InnoDB: Starting shutdown... | 
| 2021-08-16 14:41:39 0 [Note] InnoDB: Dumping buffer pool(s) to /home/fuboat/mariadb-tmp/mysql-default-data/ib_buffer_pool | 
| 2021-08-16 14:41:39 0 [Note] InnoDB: Buffer pool(s) dump completed at 210816 14:41:39 | 
| 2021-08-16 14:41:39 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" | 
| 2021-08-16 14:41:39 0 [Note] InnoDB: Shutdown completed; log sequence number 42173; transaction id 15 | 
| 2021-08-16 14:41:39 0 [Note] /usr/local/mysql/bin//mysqld: Shutdown complete | 
| Â | 
| 2021-08-16 15:05:51 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 | 
| 2021-08-16 15:05:51 0 [Note] InnoDB: Number of pools: 1 | 
| 2021-08-16 15:05:51 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions | 
| 2021-08-16 15:05:51 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts) | 
| 2021-08-16 15:05:51 0 [Note] InnoDB: Using liburing | 
| 2021-08-16 15:05:51 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728 | 
| 2021-08-16 15:05:51 0 [Note] InnoDB: Completed initialization of buffer pool | 
| 2021-08-16 15:06:00 0 [Note] InnoDB: 128 rollback segments are active. | 
| 2021-08-16 15:06:00 0 [Note] InnoDB: Creating shared tablespace for00 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... | 
| 2021-08-16 15:06:00 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. | 
| 2021-08-16 15:06:00 0 [Note] InnoDB: 10.7.0 started; log sequence number 42173; transaction id 14 | 
| 2021-08-16 15:06:00 0 [Note] Plugin 'FEEDBACK' is disabled. | 
| 2021-08-16 15:06:00 0 [Note] InnoDB: Loading buffer pool(s) from /home/fuboat/mariadb-tmp/3/ib_buffer_pool | 
| 2021-08-16 15:06:01 0 [Note] Server socket created on IP: '0.0.0.0'. | 
| 2021-08-16 15:06:01 0 [Note] Server socket created on IP: '::'. | 
| 2021-08-16 15:06:01 0 [Note] InnoDB: Buffer pool(s) load completed at 210816 15:06:01 | 
| 2021-08-16 15:06:04 0 [Note] /usr/local/mysql/bin//mysqld: ready for connections. | 
| Version: '10.7.0-MariaDB'  socket: '/tmp/3.socket'  port: 10003  Source distribution | 
| 210816 15:06:10 [ERROR] mysqld got signal 11 ; | 
| This could be because you hit a bug. It is also possible that this binary | 
| or one of the libraries it was linked against is corrupt, improperly built, | 
| or misconfigured. This error can also be caused by malfunctioning hardware. | 
| Â | 
| To report this bug, see https://mariadb.com/kb/en/reporting-bugs | 
| Â | 
| We will try our best to scrape up some info that will hopefully help | 
| diagnose the problem, but since we have already crashed,  | 
| something is definitely wrong and this may fail. | 
| Â | 
| Server version: 10.7.0-MariaDB | 
| key_buffer_size=134217728 | 
| read_buffer_size=131072 | 
| max_used_connections=1 | 
| max_threads=153 | 
| thread_count=1 | 
| It is possible that mysqld could use up to  | 
| key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467956 K  bytes of memory | 
| Hope that's ok; if not, decrease some variables in the equation. | 
| Â | 
| Thread pointer: 0x62b0000af218 | 
| Attempting backtrace. You can use the following information to find out | 
| where mysqld died. If you see no messages after this, something went | 
| terribly wrong... | 
| stack_bottom = 0x7fa746f74850 thread_stack 0x5fc00 | 
| sanitizer_common/sanitizer_common_interceptors.inc:4203(__interceptor_backtrace.part.0)[0x7fa766820c3e] | 
| mysys/stacktrace.c:213(my_print_stacktrace)[0x55dae2370747] | 
| sql/signal_handler.cc:222(handle_fatal_signal)[0x55dae1338120] | 
| sigaction.c:0(__restore_rt)[0x7fa76620a870] | 
| sql/item.cc:3442(Item_field::used_tables() const)[0x55dae13cf704] | 
| sql/sql_select.cc:14445(remove_const(JOIN*, st_order*, Item*, bool, bool*))[0x55dae0ce110f] | 
| sql/sql_select.cc:2432(JOIN::optimize_inner())[0x55dae0d68280] | 
| sql/sql_select.cc:1811(JOIN::optimize())[0x55dae0d697b1] | 
| sql/sql_select.cc:4977(mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x55dae0d69a0e] | 
| sql/sql_select.cc:545(handle_select(THD*, LEX*, select_result*, unsigned long))[0x55dae0d6b655] | 
| sql/sql_parse.cc:6256(execute_sqlcom_select(THD*, TABLE_LIST*))[0x55dae0baed7d] | 
| sql/sql_parse.cc:3946(mysql_execute_command(THD*, bool))[0x55dae0bd8421] | 
| sql/sql_parse.cc:8047(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x55dae0bdd5a1] | 
| sql/sql_parse.cc:1898(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x55dae0be360c] | 
| sql/sql_parse.cc:1406(do_command(THD*, bool))[0x55dae0be873d] | 
| sql/sql_connect.cc:1418(do_handle_one_connection(CONNECT*, bool))[0x55dae0fa3e57] | 
| sql/sql_connect.cc:1312(handle_one_connection)[0x55dae0fa433d] | 
| perfschema/pfs.cc:2204(pfs_spawn_thread)[0x55dae1a34c2c] | 
| pthread_create.c:0(start_thread)[0x7fa766200259] | 
| :0(__GI___clone)[0x7fa765dab5e3] | 
| Â | 
| Trying to get some variables. | 
| Some pointers may be invalid and cause the dump to abort. | 
| Query (0x629000087238): SELECT * FROM v0 GROUP BY v1 HAVING v1 = 'x' IN ( v1 IS NULL AND 'x' = 0 , 10 , -1 ) | 
| Â | 
| Connection ID (thread ID): 4 | 
| Status: NOT_KILLED | 
| Â | 
| Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on,not_null_range_scan=off | 
| Â | 
| The manual page at https://mariadb.com/kb/en/how-to-produce-a-full-stack-trace-for-mysqld/ contains | 
| information that should help you find out what is causing the crash. | 
| Writing a core file... | 
| Working directory at /home/fuboat/mariadb-tmp/3 | 
| Resource Limits: | 
| Limit                     Soft Limit           Hard Limit           Units      | 
| Max cpu time              unlimited            unlimited            seconds    | 
| Max file size             unlimited            unlimited            bytes      | 
| Max data size             unlimited            unlimited            bytes      | 
| Max stack size            8388608              unlimited            bytes      | 
| Max core file size        unlimited            unlimited            bytes      | 
| Max resident set          unlimited            unlimited            bytes      | 
| Max processes             61608                61608                processes  | 
| Max open files            524288               524288               files      | 
| Max locked memory         65536                65536                bytes      | 
| Max address space         unlimited            unlimited            bytes      | 
| Max file locks            unlimited            unlimited            locks      | 
| Max pending signals       61608                61608                signals    | 
| Max msgqueue size         819200               819200               bytes      | 
| Max nice priority         0                    0                     | 
| Max realtime priority     0                    0                     | 
| Max realtime timeout      unlimited            unlimited            us         | 
| Core pattern: core
 | 
Coredump
| GNU gdb (GDB) 10.2 | 
| Copyright (C) 2021 Free Software Foundation, Inc. | 
| License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> | 
| This is free software: you are free to change and redistribute it. | 
| There is NO WARRANTY, to the extent permitted by law. | 
| Type "show copying" and "show warranty" for details. | 
| This GDB was configured as "x86_64-pc-linux-gnu". | 
| Type "show configuration" for configuration details. | 
| For bug reporting instructions, please see: | 
| <https://www.gnu.org/software/gdb/bugs/>. | 
| Find the GDB manual and other documentation resources online at: | 
|     <http://www.gnu.org/software/gdb/documentation/>. | 
| Â | 
| For help, type "help". | 
| Type "apropos word" to search for commands related to "word"... | 
| Reading symbols from /usr/local/mysql/bin//mysqld... | 
| [New LWP 1386618] | 
| [New LWP 1349958] | 
| [New LWP 1382444] | 
| [New LWP 1349935] | 
| [New LWP 1382850] | 
| [New LWP 1349963] | 
| [New LWP 1349956] | 
| [New LWP 1382440] | 
| [New LWP 1382852] | 
| [New LWP 1386542] | 
| [New LWP 1382851] | 
| [New LWP 1382890] | 
| [New LWP 1349932] | 
| [New LWP 1382853] | 
| [Thread debugging using libthread_db enabled] | 
| Using host libthread_db library "/usr/lib/libthread_db.so.1". | 
| Core was generated by `/usr/local/mysql/bin//mysqld --port 10003 --datadir=/home/fuboat/mariadb-tmp/3'. | 
| Program terminated with signal SIGSEGV, Segmentation fault. | 
| #0  0x00007fa766207808 in pthread_kill () from /usr/lib/libpthread.so.0 | 
| [Current thread is 1 (Thread 0x7fa746f75240 (LWP 1386618))] | 
| (gdb) (gdb) #0  0x00007fa766207808 in pthread_kill () from /usr/lib/libpthread.so.0 | 
| #1  0x000055dae133806b in handle_fatal_signal (sig=<optimized out>) at /experiment/mariadb-server/sql/signal_handler.cc:344 | 
| #2  <signal handler called> | 
| #3  0x000055dae13cf704 in Item_field::used_tables (this=0x629000089e68) at /experiment/mariadb-server/sql/item.cc:3442 | 
| #4  0x000055dae0ce110f in update_depend_map_for_order (order=0x6290000881a0, join=0x6290000898a0) at /experiment/mariadb-server/sql/sql_select.cc:14445 | 
| #5  remove_const (join=0x6290000898a0, first_order=<optimized out>, cond=<optimized out>, change_list=<optimized out>, simple_order=0x629000089bac) at /experiment/mariadb-server/sql/sql_select.cc:14570 | 
| #6  0x000055dae0d68280 in JOIN::optimize_inner (this=0x6290000898a0) at /experiment/mariadb-server/sql/sql_select.cc:2432 | 
| #7  0x000055dae0d697b1 in JOIN::optimize (this=this@entry=0x6290000898a0) at /experiment/mariadb-server/sql/sql_select.cc:1809 | 
| #8  0x000055dae0d69a0e in mysql_select (thd=0x62b0000af218, tables=<optimized out>, fields=..., conds=0x0, og_num=1, order=0x0, group=0x6290000881a0, having=0x629000088d50, proc_param=0x0, select_options=<optimized out>, result=0x629000089870, unit=0x62b0000b33c0, select_lex=0x629000087350) | 
|     at /experiment/mariadb-server/sql/sql_select.cc:4977 | 
| #9  0x000055dae0d6b655 in handle_select (thd=thd@entry=0x62b0000af218, lex=lex@entry=0x62b0000b32f8, result=result@entry=0x629000089870, setup_tables_done_option=setup_tables_done_option@entry=0) at /experiment/mariadb-server/sql/sql_select.cc:545 | 
| #10 0x000055dae0baed7d in execute_sqlcom_select (thd=0x62b0000af218, all_tables=<optimized out>) at /experiment/mariadb-server/sql/sql_parse.cc:6256 | 
| #11 0x000055dae0bd8421 in mysql_execute_command (thd=0x62b0000af218, is_called_from_prepared_stmt=<optimized out>) at /experiment/mariadb-server/sql/sql_parse.cc:3946 | 
| #12 0x000055dae0bdd5a1 in mysql_parse (thd=0x62b0000af218, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>) at /experiment/mariadb-server/sql/sql_parse.cc:8030 | 
| #13 0x000055dae0be360c in dispatch_command (command=<optimized out>, thd=0x62b0000af218, packet=<optimized out>, packet_length=<optimized out>, blocking=<optimized out>) at /experiment/mariadb-server/sql/sql_parse.cc:1896 | 
| #14 0x000055dae0be873d in do_command (thd=0x62b0000af218, blocking=blocking@entry=true) at /experiment/mariadb-server/sql/sql_parse.cc:1404 | 
| #15 0x000055dae0fa3e57 in do_handle_one_connection (connect=<optimized out>, put_in_cache=<optimized out>) at /experiment/mariadb-server/sql/sql_connect.cc:1418 | 
| #16 0x000055dae0fa433d in handle_one_connection (arg=arg@entry=0x6080000023b8) at /experiment/mariadb-server/sql/sql_connect.cc:1312 | 
| #17 0x000055dae1a34c2c in pfs_spawn_thread (arg=0x617000005b98) at /experiment/mariadb-server/storage/perfschema/pfs.cc:2201 | 
| #18 0x00007fa766200259 in start_thread () from /usr/lib/libpthread.so.0 | 
| #19 0x00007fa765dab5e3 in clone () from /usr/lib/libc.so.6 | 
| (gdb) quit | 
| 
 | 
Attachments
Issue Links
- is duplicated by
- 
                    MDEV-25084 Assertion failure when moving equality from having to where -         
- Closed
 
-         
- 
                    MDEV-26401 A SEGV in Optimizer Component -         
- Closed
 
-         
- 
                    MDEV-26403 A SEGV in Optimizer Component -         
- Closed
 
-         
- 
                    MDEV-28080 Crash when using HAVING with NOT EXIST predicate in an equality -         
- Closed
 
-         
- 
                    MDEV-28082 Crash when using HAVING with IS NULL predicate in an equality -         
- Closed
 
-         
- relates to
- 
                    MDEV-25635 Assertion failure when pushing from HAVING into WHERE of view -         
- Closed
 
-         
- 
                    MDEV-30362 BUG core dump group by + having = core dump -         
- Closed
 
-         
- 
                    MDEV-32316 pushdown: and_new_conditions_to_optimized_cond: Server crashes at subselect_single_select_engine::exec -         
- Closed
 
-         
- 
                    MDEV-33611 Crashing the server -         
- Closed
 
-         
- links to