Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-32425

Segmentation fault at /mariadb-11.3.0/sql/sql_lex.cc:5998

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Duplicate
    • 11.3.0
    • N/A
    • Optimizer
    • None
    • Ubuntu 20.04

    Description

      Run these queries in release build:

      CREATE TABLE x ( x BOOLEAN UNIQUE ) ;
      INSERT INTO x ( x ) VALUES ( 1 ) ;
      UPDATE x SET x = 1 WHERE x = 1 ;
      INSERT INTO x SELECT x * 1 + x FROM x WHERE x IN ( 1 , 1 ) ;
      SELECT x * 1 + x FROM x WHERE CASE WHEN ( SELECT x AS x WHERE 1 > x GROUP BY x IS NULL ) LIKE x + x % x - 1 THEN ( 1 * x ) ELSE ( x >= 1.000000 OR x < 1 ) AND x IN ( 1 , x ) END IN ( WITH x ( x ) AS ( SELECT x + ( WITH x ( x ) AS ( SELECT 1 UNION SELECT x + 1 FROM x ) SELECT 1 EXCEPT SELECT x + 1 FROM ( SELECT ( SELECT * FROM x EXCEPT SELECT * FROM x ) BETWEEN ( SELECT x FROM x WHERE x = 1 AND x < 1 GROUP BY - 'x' >= x ) AND 1 FROM x UNION SELECT x FROM x ) AS x ) FROM x ) SELECT x FROM x AS x GROUP BY 'x' , x IN ( 1 , 1 , 1 ) , x , x ) ORDER BY ( 1 < x AND x = 1 ) ;

      Will trigger Segmentation fault.
      GDB info:
      Thread 16 "mariadbd" received signal SIGSEGV, Segmentation fault.
      [Switching to Thread 0x7fffd242e300 (LWP 2543)]
      0x0000000000ab5baa in st_select_lex_unit::save_union_explain (this=0x6290000b4238,
      output=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_lex.cc:5998
      5998 if (output->get_union(first->select_number))
      (gdb) p first
      $67 = (SELECT_LEX *) 0x0

      #0 0x0000000000ab5baa in st_select_lex_unit::save_union_explain (this=0x6290000b9238, output=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_lex.cc:5998
      #1 0x0000000000df0584 in st_select_lex_unit::exec_inner (this=0x6290000b9238) at /home/wx/mariadb-11.3.0/sql/sql_union.cc:2315
      #2 0x00000000015d8bb5 in subselect_union_engine::exec (this=<optimized out>) at /home/wx/mariadb-11.3.0/sql/item_subselect.cc:4187
      #3 0x00000000015b3edc in Item_subselect::exec (this=0x6290000c42e0) at /home/wx/mariadb-11.3.0/sql/item_subselect.cc:812
      #4 0x00000000015b9773 in Item_singlerow_subselect::val_int (this=0x6290000c42e0) at /home/wx/mariadb-11.3.0/sql/item_subselect.cc:1462
      #5 0x00000000014620a4 in Item_func_plus::int_op (this=0x6290000c44c0) at /home/wx/mariadb-11.3.0/sql/item_func.cc:1117
      #6 0x000000000138ddc2 in Item_direct_ref::val_int (this=0x62f000003808) at /home/wx/mariadb-11.3.0/sql/item.cc:8680
      #7 Item_direct_view_ref::val_int (this=0x62f000003808) at /home/wx/mariadb-11.3.0/sql/item.h:6141
      #8 0x00000000013ae2e1 in Arg_comparator::compare_int_signed (this=0x62f000004788) at /home/wx/mariadb-11.3.0/sql/item_cmpfunc.cc:947
      #9 0x00000000013b5ea2 in Arg_comparator::compare (this=<optimized out>) at /home/wx/mariadb-11.3.0/sql/item_cmpfunc.h:104
      #10 Item_func_eq::val_int (this=<optimized out>) at /home/wx/mariadb-11.3.0/sql/item_cmpfunc.cc:1780
      #11 0x0000000000f99b40 in SQL_SELECT::skip_record (this=<optimized out>, thd=0x62b00016c218) at /home/wx/mariadb-11.3.0/sql/opt_range.h:1914
      #12 JOIN_CACHE::check_match (this=this@entry=0x62f000008b50, rec_ptr=rec_ptr@entry=0x6070000d69b9 "") at /home/wx/mariadb-11.3.0/sql/sql_join_cache.cc:2560
      #13 0x0000000000f8f7d9 in JOIN_CACHE::generate_full_extensions (this=this@entry=0x62f000008b50, rec_ptr=rec_ptr@entry=0x6070000d69b9 "") at /home/wx/mariadb-11.3.0/sql/sql_join_cache.cc:2503
      #14 0x0000000000f8f322 in JOIN_CACHE::join_matching_records (this=0x62f000008b50, skip_last=false) at /home/wx/mariadb-11.3.0/sql/sql_join_cache.cc:2403
      #15 0x0000000000f8e695 in JOIN_CACHE::join_records (this=0x62f000008b50, skip_last=false) at /home/wx/mariadb-11.3.0/sql/sql_join_cache.cc:2158
      #16 0x0000000000c9da17 in sub_select_cache (join=0x62d0000e7b00, join_tab=0x62f000007a90, end_of_records=false) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:23192
      #17 0x0000000000c4536c in do_select (join=0x62d0000e7b00, procedure=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:22963
      #18 JOIN::exec_inner (this=0x62d0000e7b00) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:4941
      #19 0x0000000000c428e9 in JOIN::exec (this=this@entry=0x62d0000e7b00) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:4718
      #20 0x0000000000be5128 in mysql_select (thd=<optimized out>, thd@entry=0x62b00016c218, tables=<optimized out>, fields=..., conds=<optimized out>, og_num=<optimized out>, order=<optimized out>, group=0x0, having=0x0, proc_param=0x0, select_options=<optimized out>, result=0x62d0000e7ad0, unit=0x62b0001704a8, select_lex=0x629000091720) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:5249
      #21 0x0000000000be4596 in handle_select (thd=thd@entry=0x62b00016c218, lex=<optimized out>, lex@entry=0x62b0001703c8, result=<optimized out>, result@entry=0x62d0000e7ad0, setup_tables_done_option=<optimized out>, setup_tables_done_option@entry=0) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:628
      #22 0x0000000000b3df18 in execute_sqlcom_select (thd=0x62b00016c218, all_tables=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:6013
      #23 0x0000000000b2cd51 in mysql_execute_command (thd=0x62b00016c218, is_called_from_prepared_stmt=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:3912
      #24 0x0000000000b1fe79 in mysql_parse (thd=thd@entry=0x62b00016c218, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>, parser_state@entry=0x7fffd242ca80) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:7734
      #25 0x0000000000b19069 in dispatch_command (command=<optimized out>, thd=0x62b00016c218, packet=<optimized out>, packet_length=<optimized out>, blocking=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:1893
      #26 0x0000000000b20b71 in do_command (thd=0x62b00016c218, blocking=true) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:1406
      #27 0x0000000000f03476 in do_handle_one_connection (connect=<optimized out>, put_in_cache=<optimized out>) at /home/wx/mariadb-11.3.0/sql/sql_connect.cc:1445
      #28 0x0000000000f02eb9 in handle_one_connection (arg=arg@entry=0x6080005833b8) at /home/wx/mariadb-11.3.0/sql/sql_connect.cc:1347
      #29 0x0000000001a00c1b in pfs_spawn_thread (arg=0x617000005118) at /home/wx/mariadb-11.3.0/storage/perfschema/pfs.cc:2201
      #30 0x00007ffff79f7609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
      #31 0x00007ffff770f133 in clone () from /lib/x86_64-linux-gnu/libc.so.6

      Attachments

        Issue Links

          Activity

            alice Alice Sherepa added a comment -

            Thanks!
            This is the same bug as MDEV-28621

            Version: '10.4.32-MariaDB-debug-log'  
            mysqld: /10.4/src/sql/item_subselect.cc:733: virtual bool Item_subselect::exec(): Assertion `!eliminated' failed.
            231023 18:40:44 [ERROR] mysqld got signal 6 ;
             
            Server version: 10.4.32-MariaDB-debug-log source revision: babd833685e1fd1da4411a0874ba1c98bb0b631d
             
            /lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7fa756c1dfd6]
            sql/item_subselect.cc:735(Item_subselect::exec())[0x557a8fb035be]
            sql/item_subselect.cc:1400(Item_singlerow_subselect::val_int())[0x557a8fb099e1]
            sql/item_func.cc:1118(Item_func_plus::int_op())[0x557a8fa3310e]
            sql/item_func.h:750(Item_func_hybrid_field_type::val_int_from_int_op())[0x557a8f6bde68]
            sql/sql_type.cc:4962(Type_handler_int_result::Item_func_hybrid_field_type_val_int(Item_func_hybrid_field_type*) const)[0x557a8f692826]
            sql/item_func.h:806(Item_func_hybrid_field_type::val_int())[0x557a8f0d3bef]
            sql/sql_type.cc:3784(Type_handler_int_result::Item_update_null_value(Item*) const)[0x557a8f68c992]
            sql/item.h:1826(Item::update_null_value())[0x557a8ee4fde4]
            sql/item_func.h:185(Item_func::is_null())[0x557a8f018cdf]
            sql/item.cc:8574(Item_direct_ref::is_null())[0x557a8f967961]
            sql/item.h:5976(Item_direct_view_ref::is_null())[0x557a8f985e0b]
            sql/sql_select.cc:12712(end_sj_materialize(JOIN*, st_join_table*, bool))[0x557a8f220b69]
            sql/sql_select.cc:21129(evaluate_join_record(JOIN*, st_join_table*, int))[0x557a8f25ba55]
            sql/sql_select.cc:20902(sub_select(JOIN*, st_join_table*, bool))[0x557a8f25a38a]
            sql/opt_subselect.cc:5712(join_tab_execution_startup(st_join_table*))[0x557a8f611933]
            sql/sql_select.cc:20891(sub_select(JOIN*, st_join_table*, bool))[0x557a8f25a08a]
            sql/sql_select.cc:21129(evaluate_join_record(JOIN*, st_join_table*, int))[0x557a8f25ba55]
            sql/sql_select.cc:20902(sub_select(JOIN*, st_join_table*, bool))[0x557a8f25a38a]
            sql/sql_select.cc:20423(do_select(JOIN*, Procedure*))[0x557a8f258130]
            sql/sql_select.cc:4605(JOIN::exec_inner())[0x557a8f1e5c78]
            sql/sql_select.cc:4388(JOIN::exec())[0x557a8f1e32a8]
            sql/sql_select.cc:4828(mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x557a8f1e7484]
            sql/sql_select.cc:442(handle_select(THD*, LEX*, select_result*, unsigned long))[0x557a8f1b7f7c]
            sql/sql_parse.cc:6475(execute_sqlcom_select(THD*, TABLE_LIST*))[0x557a8f123d80]
            sql/sql_parse.cc:3978(mysql_execute_command(THD*))[0x557a8f1114f7]
            sql/sql_parse.cc:8012(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x557a8f12d25b]
            sql/sql_parse.cc:1860(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x557a8f103681]
            sql/sql_parse.cc:1378(do_command(THD*))[0x557a8f1001ac]
            sql/sql_connect.cc:1420(do_handle_one_connection(CONNECT*))[0x557a8f50e56d]
            sql/sql_connect.cc:1325(handle_one_connection)[0x557a8f50de11]
            perfschema/pfs.cc:1871(pfs_spawn_thread)[0x557a901b8d8a]
            nptl/pthread_create.c:478(start_thread)[0x7fa757138609]
             
            Some pointers may be invalid and cause the dump to abort.
            Query (0x62b0000a1290): SELECT x * 1 + x FROM x WHERE CASE WHEN ( SELECT x AS x WHERE 1 > x GROUP BY x IS NULL ) LIKE x + x % x - 1 THEN ( 1 * x ) ELSE ( x >= 1.000000 OR x < 1 ) AND x IN ( 1 , x ) END IN ( WITH x ( x ) AS ( SELECT x + ( WITH x ( x ) AS ( SELECT 1 UNION SELECT x + 1 FROM x ) SELECT 1 EXCEPT SELECT x + 1 FROM ( SELECT ( SELECT * FROM x EXCEPT SELECT * FROM x ) BETWEEN ( SELECT x FROM x WHERE x = 1 AND x < 1 GROUP BY - 'x' >= x ) AND 1 FROM x UNION SELECT x FROM x ) AS x ) FROM x ) SELECT x FROM x AS x GROUP BY 'x' , x IN ( 1 , 1 , 1 ) , x , x ) ORDER BY ( 1 < x AND x = 1 )
            
            

            alice Alice Sherepa added a comment - Thanks! This is the same bug as MDEV-28621 Version: '10.4.32-MariaDB-debug-log' mysqld: /10.4/src/sql/item_subselect.cc:733: virtual bool Item_subselect::exec(): Assertion `!eliminated' failed. 231023 18:40:44 [ERROR] mysqld got signal 6 ;   Server version: 10.4.32-MariaDB-debug-log source revision: babd833685e1fd1da4411a0874ba1c98bb0b631d   /lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7fa756c1dfd6] sql/item_subselect.cc:735(Item_subselect::exec())[0x557a8fb035be] sql/item_subselect.cc:1400(Item_singlerow_subselect::val_int())[0x557a8fb099e1] sql/item_func.cc:1118(Item_func_plus::int_op())[0x557a8fa3310e] sql/item_func.h:750(Item_func_hybrid_field_type::val_int_from_int_op())[0x557a8f6bde68] sql/sql_type.cc:4962(Type_handler_int_result::Item_func_hybrid_field_type_val_int(Item_func_hybrid_field_type*) const)[0x557a8f692826] sql/item_func.h:806(Item_func_hybrid_field_type::val_int())[0x557a8f0d3bef] sql/sql_type.cc:3784(Type_handler_int_result::Item_update_null_value(Item*) const)[0x557a8f68c992] sql/item.h:1826(Item::update_null_value())[0x557a8ee4fde4] sql/item_func.h:185(Item_func::is_null())[0x557a8f018cdf] sql/item.cc:8574(Item_direct_ref::is_null())[0x557a8f967961] sql/item.h:5976(Item_direct_view_ref::is_null())[0x557a8f985e0b] sql/sql_select.cc:12712(end_sj_materialize(JOIN*, st_join_table*, bool))[0x557a8f220b69] sql/sql_select.cc:21129(evaluate_join_record(JOIN*, st_join_table*, int))[0x557a8f25ba55] sql/sql_select.cc:20902(sub_select(JOIN*, st_join_table*, bool))[0x557a8f25a38a] sql/opt_subselect.cc:5712(join_tab_execution_startup(st_join_table*))[0x557a8f611933] sql/sql_select.cc:20891(sub_select(JOIN*, st_join_table*, bool))[0x557a8f25a08a] sql/sql_select.cc:21129(evaluate_join_record(JOIN*, st_join_table*, int))[0x557a8f25ba55] sql/sql_select.cc:20902(sub_select(JOIN*, st_join_table*, bool))[0x557a8f25a38a] sql/sql_select.cc:20423(do_select(JOIN*, Procedure*))[0x557a8f258130] sql/sql_select.cc:4605(JOIN::exec_inner())[0x557a8f1e5c78] sql/sql_select.cc:4388(JOIN::exec())[0x557a8f1e32a8] sql/sql_select.cc:4828(mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x557a8f1e7484] sql/sql_select.cc:442(handle_select(THD*, LEX*, select_result*, unsigned long))[0x557a8f1b7f7c] sql/sql_parse.cc:6475(execute_sqlcom_select(THD*, TABLE_LIST*))[0x557a8f123d80] sql/sql_parse.cc:3978(mysql_execute_command(THD*))[0x557a8f1114f7] sql/sql_parse.cc:8012(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x557a8f12d25b] sql/sql_parse.cc:1860(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x557a8f103681] sql/sql_parse.cc:1378(do_command(THD*))[0x557a8f1001ac] sql/sql_connect.cc:1420(do_handle_one_connection(CONNECT*))[0x557a8f50e56d] sql/sql_connect.cc:1325(handle_one_connection)[0x557a8f50de11] perfschema/pfs.cc:1871(pfs_spawn_thread)[0x557a901b8d8a] nptl/pthread_create.c:478(start_thread)[0x7fa757138609]   Some pointers may be invalid and cause the dump to abort. Query (0x62b0000a1290): SELECT x * 1 + x FROM x WHERE CASE WHEN ( SELECT x AS x WHERE 1 > x GROUP BY x IS NULL ) LIKE x + x % x - 1 THEN ( 1 * x ) ELSE ( x >= 1.000000 OR x < 1 ) AND x IN ( 1 , x ) END IN ( WITH x ( x ) AS ( SELECT x + ( WITH x ( x ) AS ( SELECT 1 UNION SELECT x + 1 FROM x ) SELECT 1 EXCEPT SELECT x + 1 FROM ( SELECT ( SELECT * FROM x EXCEPT SELECT * FROM x ) BETWEEN ( SELECT x FROM x WHERE x = 1 AND x < 1 GROUP BY - 'x' >= x ) AND 1 FROM x UNION SELECT x FROM x ) AS x ) FROM x ) SELECT x FROM x AS x GROUP BY 'x' , x IN ( 1 , 1 , 1 ) , x , x ) ORDER BY ( 1 < x AND x = 1 )

            People

              Unassigned Unassigned
              Xin Wen Xin Wen
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.