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

SIGABRT in store_duckdb_field_in_mysql_format on SELECT c1^64 against a DuckDB table

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      CLi compatible test case

      INSTALL SONAME 'ha_duckdb';
      CREATE TABLE t1 (c1 INT KEY) ENGINE=DuckDB;
      INSERT INTO t1 VALUES (2);
      SELECT c1^64 FROM t1;
      

      Leads to:

      CS 12.3.3 add63991988734383c5e942de2a19c6c45f511f7 (Optimized, Clang 22.1.8-20260621) Build 21/08/2026

      Core was generated by `/test/MD210826-mariadb-12.3.3-linux-x86_64-opt/bin/mariadbd --no-defaults --loo'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
       
      [Current thread is 1 (LWP 1818393)]
      (gdb) bt
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6)at ./nptl/pthread_kill.c:89
      #3  0x0000795ccf64527e in __GI_raise (sig=sig@entry=6)at ../sysdeps/posix/raise.c:26
      #4  0x0000795ccf6288ff in __GI_abort () at ./stdlib/abort.c:79
      #5  0x0000795ccfaa5ff5 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
      #6  0x0000795ccfabb0da in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
      #7  0x0000795ccfaa5a55 in std::terminate() ()
         from /lib/x86_64-linux-gnu/libstdc++.so.6
      #8  0x0000795ccfabb391 in __cxa_throw ()
         from /lib/x86_64-linux-gnu/libstdc++.so.6
      #9  0x0000715bb9029d7d in unsigned long duckdb::Value::GetValueInternal<unsigned long>() const ()
         from /test/MD210826-mariadb-12.3.3-linux-x86_64-opt/lib/plugin/ha_duckdb.so
      #10 0x0000715bb8d1c91b in store_duckdb_field_in_mysql_format (field=0x715bb4325e10, value=@0x795ca16b1610: <incomplete type>, thd=<optimized out>)at /test/12.3_opt/storage/duckdb/convertor/duckdb_select.cc:135
      #11 0x0000715bb8cc259e in ha_duckdb_select_handler::next_row (this=0x715bb4324060)at /test/12.3_opt/storage/duckdb/ha_duckdb_pushdown.cc:922
      #12 0x00005c190ef5e80c in select_handler::execute (this=0x715bb4324060)at /test/12.3_opt/sql/select_handler.cc:172
      #13 0x00005c190ef15195 in JOIN::exec_inner (this=this@entry=0x715bb40194e0)at /test/12.3_opt/sql/sql_select.cc:5103
      #14 0x00005c190eefbd37 in JOIN::exec (this=0x715bb40194e0)at /test/12.3_opt/sql/sql_select.cc:4913
      #15 mysql_select (thd=thd@entry=0x715bb4000c70, tables=<optimized out>, fields=@0x715bb4017e98: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x715bb4018360, last = 0x715bb4018360, elements = 1}, <No data fields>}, conds=<optimized out>, og_num=<optimized out>, order=<optimized out>, group=0x0, having=0x0, proc_param=0x0, select_options=<optimized out>, result=0x715bb40194b0, unit=0x715bb40051c0, select_lex=0x715bb4017be0)at /test/12.3_opt/sql/sql_select.cc:5439
      #16 0x00005c190eefb950 in handle_select (thd=thd@entry=0x715bb4000c70, lex=lex@entry=0x715bb40050e0, result=result@entry=0x715bb40194b0, setup_tables_done_option=setup_tables_done_option@entry=0)at /test/12.3_opt/sql/sql_select.cc:636
      #17 0x00005c190eec976c in execute_sqlcom_select (thd=thd@entry=0x715bb4000c70, all_tables=0x715bb40183e0) at /test/12.3_opt/sql/sql_parse.cc:6219
      #18 0x00005c190eec5186 in mysql_execute_command (thd=thd@entry=0x715bb4000c70, is_called_from_prepared_stmt=false) at /test/12.3_opt/sql/sql_parse.cc:3992
      #19 0x00005c190eec04bd in mysql_parse (thd=thd@entry=0x715bb4000c70, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x795ca16b24f0)at /test/12.3_opt/sql/sql_parse.cc:7945
      #20 0x00005c190eebec8f in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x715bb4000c70, packet=packet@entry=0x715bb4008d81 "", packet_length=packet_length@entry=20, blocking=true)at /test/12.3_opt/sql/sql_parse.cc:1903
      #21 0x00005c190eec0940 in do_command (thd=thd@entry=0x715bb4000c70, blocking=true) at /test/12.3_opt/sql/sql_parse.cc:1437
      #22 0x00005c190efe7e6d in do_handle_one_connection (connect=<optimized out>, connect@entry=0x5c19303b4310, put_in_cache=true)at /test/12.3_opt/sql/sql_connect.cc:1514
      #23 0x00005c190efe7ca2 in handle_one_connection (arg=arg@entry=0x5c19303b4310)at /test/12.3_opt/sql/sql_connect.cc:1426
      #24 0x00005c190f388a63 in pfs_spawn_thread (arg=0x5c19303d4920)at /test/12.3_opt/storage/perfschema/pfs.cc:2198
      #25 0x0000795ccf69cb84 in start_thread (arg=<optimized out>)at ./nptl/pthread_create.c:447
      #26 0x0000795ccf729d6c in clone3 ()at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      CS 12.3.3 add63991988734383c5e942de2a19c6c45f511f7 (Debug, Clang 22.1.8-20260621) Build 21/08/2026

      Core was generated by `/test/MD210826-mariadb-12.3.3-linux-x86_64-dbg/bin/mariadbd --no-defaults --loo'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
       
      [Current thread is 1 (LWP 1818375)]
      (gdb) bt
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6)at ./nptl/pthread_kill.c:89
      #3  0x00007ab0bac4527e in __GI_raise (sig=sig@entry=6)at ../sysdeps/posix/raise.c:26
      #4  0x00007ab0bac288ff in __GI_abort () at ./stdlib/abort.c:79
      #5  0x00007ab0bb0a5ff5 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
      #6  0x00007ab0bb0bb0da in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
      #7  0x00007ab0bb0a5a55 in std::terminate() ()
         from /lib/x86_64-linux-gnu/libstdc++.so.6
      #8  0x00007ab0bb0bb391 in __cxa_throw ()
         from /lib/x86_64-linux-gnu/libstdc++.so.6
      #9  0x000072af7bb59e71 in duckdb::Cast::Operation<double, unsigned long> (input=1.8446744073709552e+19)at /test/12.3_dbg/storage/duckdb/third_parties/duckdb/src/include/duckdb/common/operator/cast_operators.hpp:76
      #10 0x000072af7bb0c789 in duckdb::Value::GetValueInternal<unsigned long> (this=0x7ab0943715c0)at /test/12.3_dbg/storage/duckdb/third_parties/duckdb/src/common/types/value.cpp:1215
      #11 0x000072af7ba30535 in duckdb::Value::GetValue<unsigned long> (this=0x7ab0943715c0)at /test/12.3_dbg/storage/duckdb/third_parties/duckdb/src/common/types/value.cpp:1298
      #12 0x000072af7b678052 in store_duckdb_field_in_mysql_format (field=0x72af8434faa0, value=@0x7ab0943715c0: {type_ = {id_ = duckdb::LogicalTypeId::DOUBLE, physical_type_ = duckdb::PhysicalType::DOUBLE, type_info_ = {internal = std::shared_ptr<struct duckdb::ExtraTypeInfo> (empty) = {        get() = 0x0      }}, static SQLNULL = duckdb::LogicalTypeId::SQLNULL, static UNKNOWN = duckdb::LogicalTypeId::UNKNOWN, static BOOLEAN = duckdb::LogicalTypeId::BOOLEAN, static TINYINT = duckdb::LogicalTypeId::TINYINT, static UTINYINT = duckdb::LogicalTypeId::UTINYINT, static SMALLINT = duckdb::LogicalTypeId::SMALLINT, static USMALLINT = duckdb::LogicalTypeId::USMALLINT, static INTEGER = duckdb::LogicalTypeId::INTEGER, static UINTEGER = duckdb::LogicalTypeId::UINTEGER, static BIGINT = duckdb::LogicalTypeId::BIGINT, static UBIGINT = duckdb::LogicalTypeId::UBIGINT, static FLOAT = duckdb::LogicalTypeId::FLOAT, static DOUBLE = duckdb::LogicalTypeId::DOUBLE, static DATE = duckdb::LogicalTypeId::DATE, static TIMESTAMP = duckdb::LogicalTypeId::TIMESTAMP, static TIMESTAMP_S = duckdb::LogicalTypeId::TIMESTAMP_SEC, static TIMESTAMP_MS = duckdb::LogicalTypeId::TIMESTAMP_MS, static TIMESTAMP_NS = duckdb::LogicalTypeId::TIMESTAMP_NS, static TIME = duckdb::LogicalTypeId::TIME, static TIME_NS = duckdb::LogicalTypeId::TIME_NS, static TIMESTAMP_TZ = duckdb::LogicalTypeId::TIMESTAMP_TZ, static TIME_TZ = duckdb::LogicalTypeId::TIME_TZ, static VARCHAR = duckdb::LogicalTypeId::VARCHAR, static ANY = duckdb::LogicalTypeId::ANY, static BLOB = duckdb::LogicalTypeId::BLOB, static BIT = duckdb::LogicalTypeId::BIT, static BIGNUM = duckdb::LogicalTypeId::BIGNUM, static INTERVAL = duckdb::LogicalTypeId::INTERVAL, static HUGEINT = duckdb::LogicalTypeId::HUGEINT, static UHUGEINT = duckdb::LogicalTypeId::UHUGEINT, static UUID = duckdb::LogicalTypeId::UUID, static HASH = duckdb::LogicalTypeId::UBIGINT, static POINTER = duckdb::LogicalTypeId::POINTER, static TABLE = duckdb::LogicalTypeId::TABLE, static LAMBDA = duckdb::LogicalTypeId::LAMBDA, static INVALID = duckdb::LogicalTypeId::INVALID, static ROW_TYPE = duckdb::LogicalTypeId::BIGINT, static JSON_TYPE_NAME = <optimized out>}, is_null = false, value_ = {boolean = false, tinyint = 0 '\000', smallint = 0, integer = 0, bigint = 4895412794951729152, utinyint = 0 '\000', usmallint = 0, uinteger = 0, ubigint = 4895412794951729152, hugeint = {lower = 4895412794951729152, upper = 126098159549712}, uhugeint = {lower = 4895412794951729152, upper = 126098159549712}, float_ = 0, double_ = 1.8446744073709552e+19, pointer = 4895412794951729152, hash = 4895412794951729152, date = {days = 0}, time = {micros = 4895412794951729152}, time_ns = {<duckdb::dtime_t> = {micros = 4895412794951729152}, <No data fields>}, timetz = {static TIME_BITS = 40, static OFFSET_BITS = 24, static OFFSET_MASK = 16777215, static MAX_OFFSET = 57599, static MIN_OFFSET = -57599, static OFFSET_MICROS = 1000000, bits = 4895412794951729152}, timestamp = {value = 4895412794951729152}, timestamp_s = {<duckdb::timestamp_t> = {value = 4895412794951729152}, <No data fields>}, timestamp_ms = {<duckdb::timestamp_t> = {value = 4895412794951729152}, <No data fields>}, timestamp_ns = {<duckdb::timestamp_t> = {value = 4895412794951729152}, <No data fields>}, timestamp_tz = {<duckdb::timestamp_t> = {value = 4895412794951729152}, <No data fields>}, interval = {months = 0, days = 1139802112, micros = 126098159549712}}, value_info_ = {internal = std::shared_ptr<struct duckdb::ExtraValueInfo> (empty) = {      get() = 0x0    }}}, thd=0x72af84000d60)at /test/12.3_dbg/storage/duckdb/convertor/duckdb_select.cc:135
      #13 0x000072af7b5f86bf in ha_duckdb_select_handler::next_row (this=0x72af8434da80)at /test/12.3_dbg/storage/duckdb/ha_duckdb_pushdown.cc:922
      #14 0x000063af5970ed1e in select_handler::execute (this=0x72af8434da80)at /test/12.3_dbg/sql/select_handler.cc:172
      #15 0x000063af596a17ad in JOIN::exec_inner (this=0x72af8401bd40)at /test/12.3_dbg/sql/sql_select.cc:5103
      #16 0x000063af596a0c33 in JOIN::exec (this=0x72af8401bd40)at /test/12.3_dbg/sql/sql_select.cc:4913
      #17 0x000063af5967ed5b in mysql_select (thd=0x72af84000d60, tables=0x72af8401ac40, fields=@0x72af8401a6f8: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x72af8401abc0, last = 0x72af8401abc0, elements = 1}, <No data fields>}, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2164525824, result=0x72af8401bd10, unit=0x72af84005288, select_lex=0x72af8401a440) at /test/12.3_dbg/sql/sql_select.cc:5439
      #18 0x000063af5967e8bd in handle_select (thd=0x72af84000d60, lex=0x72af840051a8, result=0x72af8401bd10, setup_tables_done_option=0)at /test/12.3_dbg/sql/sql_select.cc:636
      #19 0x000063af596292ca in execute_sqlcom_select (thd=0x72af84000d60, all_tables=0x72af8401ac40) at /test/12.3_dbg/sql/sql_parse.cc:6219
      #20 0x000063af5961f714 in mysql_execute_command (thd=0x72af84000d60, is_called_from_prepared_stmt=false) at /test/12.3_dbg/sql/sql_parse.cc:3992
      #21 0x000063af596184f8 in mysql_parse (thd=0x72af84000d60, rawbuf=0x72af8401a3b0 "SELECT c1^64 FROM t1", length=20, parser_state=0x7ab0943739f0) at /test/12.3_dbg/sql/sql_parse.cc:7945
      #22 0x000063af59615c4e in dispatch_command (command=COM_QUERY, thd=0x72af84000d60, packet=0x72af8400b5e1 "", packet_length=20, blocking=true) at /test/12.3_dbg/sql/sql_parse.cc:1903
      #23 0x000063af59618f7a in do_command (thd=0x72af84000d60, blocking=true)at /test/12.3_dbg/sql/sql_parse.cc:1437
      #24 0x000063af597e94ce in do_handle_one_connection (connect=0x63af9bdfdcc0, put_in_cache=true) at /test/12.3_dbg/sql/sql_connect.cc:1514
      #25 0x000063af597e92b1 in handle_one_connection (arg=0x63af9bee70c0)at /test/12.3_dbg/sql/sql_connect.cc:1426
      #26 0x00007ab0bac9cb84 in start_thread (arg=<optimized out>)at ./nptl/pthread_create.c:447
      #27 0x00007ab0bad29d6c in clone3 ()at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      Bug Detection Matrix

          Rel    o/d  Build   Commit                                    UniqueID observed             
      CS  10.11  dbg  210826  6415902490b1b0a9a500cee9bc0a41c342190605  No bug found                  
      CS  10.11  opt  210826  6415902490b1b0a9a500cee9bc0a41c342190605  No bug found                  
      CS  11.4   dbg  210826  1a052f27e374fc9b4cb5b1fd098cf10f0e1381cc  SIGABRT|__cxa_throw|duckdb::Cast::Operation<double, unsigned long>|duckdb::Value::GetValueInternal<unsigned long>|duckdb::Value::GetValue<unsigned long>
      CS  11.4   opt  210826  1a052f27e374fc9b4cb5b1fd098cf10f0e1381cc  SIGABRT|__cxa_throw|unsigned long duckdb::Value::GetValueInternal<unsigned long>|store_duckdb_field_in_mysql_format|ha_duckdb_select_handler::next_row
      CS  11.8   dbg  210826  d26f9ab217a7fcf9d4eccc62c01020ff275ff42e  SIGABRT|__cxa_throw|duckdb::Cast::Operation<double, unsigned long>|duckdb::Value::GetValueInternal<unsigned long>|duckdb::Value::GetValue<unsigned long>
      CS  11.8   opt  210826  d26f9ab217a7fcf9d4eccc62c01020ff275ff42e  SIGABRT|__cxa_throw|unsigned long duckdb::Value::GetValueInternal<unsigned long>|store_duckdb_field_in_mysql_format|ha_duckdb_select_handler::next_row
      CS  12.3   dbg  210826  add63991988734383c5e942de2a19c6c45f511f7  SIGABRT|__cxa_throw|duckdb::Cast::Operation<double, unsigned long>|duckdb::Value::GetValueInternal<unsigned long>|duckdb::Value::GetValue<unsigned long>
      CS  12.3   opt  210826  add63991988734383c5e942de2a19c6c45f511f7  SIGABRT|__cxa_throw|unsigned long duckdb::Value::GetValueInternal<unsigned long>|store_duckdb_field_in_mysql_format|ha_duckdb_select_handler::next_row
      CS  13.0   dbg  210826  be111d2cd60d035d555b71da019765cfb42ea0d3  SIGABRT|__cxa_throw|duckdb::Cast::Operation<double, unsigned long>|duckdb::Value::GetValueInternal<unsigned long>|duckdb::Value::GetValue<unsigned long>
      CS  13.0   opt  210826  be111d2cd60d035d555b71da019765cfb42ea0d3  SIGABRT|__cxa_throw|unsigned long duckdb::Value::GetValueInternal<unsigned long>|store_duckdb_field_in_mysql_format|ha_duckdb_select_handler::next_row
      CS  13.1   dbg  210826  ff09eefbe4e8b57846435ee4a928f17e49f0fdfc  SIGABRT|__cxa_throw|duckdb::Cast::Operation<double, unsigned long>|duckdb::Value::GetValueInternal<unsigned long>|duckdb::Value::GetValue<unsigned long>
      CS  13.1   opt  210826  ff09eefbe4e8b57846435ee4a928f17e49f0fdfc  SIGABRT|__cxa_throw|unsigned long duckdb::Value::GetValueInternal<unsigned long>|store_duckdb_field_in_mysql_format|ha_duckdb_select_handler::next_row
      ES  10.6   dbg  210826  fcecb2620f25965723d640decede7c018bcb1dcc  No bug found                  
      ES  10.6   opt  210826  fcecb2620f25965723d640decede7c018bcb1dcc  No bug found                  
      ES  11.4   dbg  210826  3b34189bfe675c18c4ced3ef531d016ea74c76f4  No bug found                  
      ES  11.4   opt  210826  3b34189bfe675c18c4ced3ef531d016ea74c76f4  No bug found                  
      ES  11.8   dbg  210826  4694e931d10fecf733c34f83ea2146d31b708eb3  No bug found                  
      ES  11.8   opt  210826  4694e931d10fecf733c34f83ea2146d31b708eb3  No bug found                  
      ES  12.3   dbg  210826  f513f503feacabfb219d4a6f965b5f72b86d4db0  No bug found                  
      ES  12.3   opt  210826  f513f503feacabfb219d4a6f965b5f72b86d4db0  No bug found                  
      

      Attachments

        Activity

          People

            drrtuy Roman
            saahil Saahil Alam
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0d
                0d
                Logged:
                Time Spent - 1.5h
                1.5h

                Git Integration

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