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

[Draft] Error: Freeing overrun buffer upon implicit COMMIT of a RockDB transaction

    XMLWordPrintable

Details

    Description

      https://api.travis-ci.org/v3/job/378525403/log.txt

      10.3 15419a558370aeed9521b498c34d50f20a8d47a5

      Error: Freeing overrun buffer 0x7f5ae00a34a0 at 0x558d07236270, 0x558d07223e91, 0x558d072174b6, mysys/safemalloc.c:194, mysys/my_malloc.c:224, mysys/my_alloc.c:421, sql/sp_head.cc:1380, sql/sp_head.cc:2293
      Allocated at sql/sql_parse.cc:2944, sql/sql_parse.cc:3186, sql/sql_parse.cc:6283, sql/sql_class.h:1030, sql/sql_parse.cc:2678, sql/sp_head.cc:3491, sql/sp_head.cc:1354, sql/sql_parse.cc:2944
      180514  4:48:12 [ERROR] mysqld got signal 11 ;
       
      stack_bottom = 0x7f5af40d7e80 thread_stack 0x49000
      sql/sql_parse.cc:3186(Sql_cmd_call::execute(THD*))[0x558d07229959]
      mysys/stacktrace.c:269(my_print_stacktrace)[0x558d06a7df49]
      /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330)[0x7f5b05dee330]
      bits/hashtable_policy.h:198(std::__detail::_Hash_node<std::pair<unsigned int const, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, rocksdb::TransactionKeyMapInfo> > > >, false>::_M_next() const)[0x7f5af79d3f30]
      /home/travis/server/lib/plugin/ha_rocksdb.so(_ZNSt10_HashtableIjSt4pairIKjSt13unordered_mapISsN7rocksdb21TransactionKeyMapInfoESt4hashISsESt8equal_toISsESaIS0_IKSsS4_EEEESaISD_ENSt8__detail10_Select1stES7_IjES5_IjENSF_18_Mod_range_hashingENSF_20_Default_ranged_hashENSF_20_Prime_rehash_policyENSF_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_deallocate_nodesEPNSF_10_Hash_nodeISD_Lb0EEE+0x26)[0x7f5af7ab8b60]
      bits/hashtable.h:762(, false>*))[0x7f5af7ab810c]
      bits/hashtable.h:1642(std::_Hashtable<unsigned int, std::pair<unsigned int const, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, rocksdb::TransactionKeyMapInfo> > > >, std::allocator<std::pair<unsigned int const, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, rocksdb::TransactionKeyMabits/hashtable.h:959(std::_Hashtable<unsigned int, std::pair<unsigned int const, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, rocksdb::TransactionKeyMapInfo> > > >, std::allocator<std::pair<unsigned int const, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, rocksdb::TransactionKeyMapbits/unordered_map.h:97(std::unordered_map<unsigned int, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, rocksdb::TransactionKeyMapInfo> > >, std::hash<unsigned int>, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, std::unordered_map<std::string, rocksdb::TransactionKeyMapInfo, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string consttransactions/transaction_base.h:280(rocksdb::TransactionBaseImpl::SavePoint::~SavePoint())[0x7f5af7ac56f1]
      bits/stl_construct.h:93(void std::_Destroy<rocksdb::TransactionBaseImpl::SavePoint>(rocksdb::TransactionBaseImpl::SavePoint*))[0x7f5af7ac50f4]
      bits/stl_construct.h:102(void std::_Destroy_aux<false>::__destroy<rocksdb::TransactionBaseImpl::SavePoint*>(rocksdb::TransactionBaseImpl::SavePoint*, rocksdb::TransactionBaseImpl::SavePoint*))[0x7f5af7ac453b]
      bits/stl_construct.h:128(void std::_Destroy<rocksdb::TransactionBaseImpl::SavePoint*>(rocksdb::TransactionBaseImpl::SavePoint*, rocksdb::TransactionBaseImpl::SavePoint*))[0x7f5af7ac3aad]
      bits/stl_construct.h:152(void std::_Destroy<rocksdb::TransactionBaseImpl::SavePoint*, rocksdb::TransactionBaseImpl::SavePoint>(rocksdb::TransactionBaseImpl::SavePoint*, rocksdb::TransactionBaseImpl::SavePoint*, std::allocator<rocksdb::TransactionBaseImpl::SavePoint>&))[0x7f5af7ac2bb5]
      bits/deque.tcc:819(std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> >::_M_destroy_data_aux(std::_Deque_iterator<rocksdb::TransactionBaseImpl::SavePoint, rocksdb::TransactionBaseImpl::SavePoint&, rocksdb::TransactionBaseImpl::SavePoint*>, std::_Deque_iterator<rocksdb::TransactionBaseImpl::SavePoint, rocksdb::TransactionBaseImpl::SavePoint&, rocksdb::TransactionBaseImpl::SavePoint*>))[0x7f5af7ac2089]
      bits/stl_deque.h:1854(std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> >::_M_destroy_data(std::_Deque_iterator<rocksdb::TransactionBaseImpl::SavePoint, rocksdb::TransactionBaseImpl::SavePoint&, rocksdb::TransactionBaseImpl::SavePoint*>, std::_Deque_iterator<rocksdb::TransactionBaseImpl::SavePoint, rocksdb::TransactionBaseImpl::SavePoint&, rocksdb::TransactionBaseImpl::SavePoint*>, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> const&))[]
      bits/stl_deque.h:918(std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> >::~deque())[0x7f5af7ac1ae6]
      bits/stl_stack.h:96(std::stack<rocksdb::TransactionBaseImpl::SavePoint, std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> > >::~stack())[0x7f5af7ac1b0a]
      bits/unique_ptr.h:67(std::default_delete<std::stack<rocksdb::TransactionBaseImpl::SavePoint, std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> > > >::operator()(std::stack<rocksdb::TransactionBaseImpl::SavePoint, std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> > >*) const)[0x7f5af7ac1000]
      bits/unique_ptr.h:263(std::unique_ptr<std::stack<rocksdb::TransactionBaseImpl::SavePoint, std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> > >, std::default_delete<std::stack<rocksdb::TransactionBaseImpl::SavePoint, std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allocator<rocksdb::TransactionBaseImpl::SavePoint> > > > >::reset(std::stack<rocksdb::TransactionBaseImpl::SavePoint, std::deque<rocksdb::TransactionBaseImpl::SavePoint, std::allotransactions/transaction_base.cc:42(rocksdb::TransactionBaseImpl::Clear())[0x7f5af7ab1fcf]
      transactions/pessimistic_transaction.cc:102(rocksdb::PessimisticTransaction::Clear())[0x7f5af7ab33ab]
      transactions/pessimistic_transaction.cc:350(rocksdb::PessimisticTransaction::Rollback())[0x7f5af765ed1a]
      rocksdb/ha_rocksdb.cc:2590(myrocks::Rdb_transaction_impl::rollback())[0x7f5af765c577]
      rocksdb/ha_rocksdb.cc:2086(myrocks::Rdb_transaction::commit())[0x7f5af762c6b8]
      sql/handler.cc:1614(commit_one_phase_2)[0x558d06a82249]
      sql/handler.cc:1594(ha_commit_one_phase(THD*, bool))[0x558d06a8214b]
      sql/handler.cc:1456(ha_commit_trans(THD*, bool))[0x558d06a818ed]
      sql/transaction.cc:376(trans_commit_implicit(THD*))[0x558d0690150e]
      sql/sql_parse.cc:3625(mysql_execute_command(THD*))[0x558d0678dd8c]
      sql/sql_parse.cc:8019(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x558d0679b958]
      sql/sql_parse.cc:1848(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x558d06788ddc]
      sql/sql_parse.cc:1391(do_command(THD*))[0x558d0678780d]
      sql/sql_connect.cc:1402(do_handle_one_connection(CONNECT*))[0x558d068ed609]
      sql/sql_connect.cc:1309(handle_one_connection)[0x558d068ed38d]
      nptl/pthread_create.c:312(start_thread)[0x7f5b05de6184]
      x86_64/clone.S:113(clone)[0x7f5b052f303d]
       
      Trying to get some variables.
      Some pointers may be invalid and cause the dump to abort.
      Query (0x7f5ae0014b08): /* GenTest::Transform::ExecuteAsDeleteReturning */ CREATE DATABASE IF NOT EXISTS transforms /* QNO 9702 CON_ID 19 */
      Connection ID (thread ID): 19
      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=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
      

      experimental 6c40fc679d99de2a34ba7e3b6ac807b84be5942a

      perl /home/travis/rqg/runall-new.pl --duration=350 --threads=6 --seed=1526273255 --reporters=Backtrace,ErrorLog,Deadlock --validators=TransformerNoComparator --views --redefine=conf/mariadb/versioning.yy --redefine=conf/mariadb/alter_table.yy --redefine=conf/mariadb/bulk_insert.yy --redefine=conf/mariadb/sequences.yy --basedir=/home/travis/server --mysqld=--log_output=FILE --mysqld=--max-statement-time=30 --mysqld=--lock-wait-timeout=10 --mysqld=--loose-innodb-lock-wait-timeout=5 --mysqld=--loose-debug_assert_on_not_freed_memory=0 --mysqld=--default-storage-engine=RocksDB --mysqld=--plugin-load-add=ha_rocksdb --mysqld=--binlog-format=row --grammar=conf/replication/replication.yy --gendata=conf/replication/replication-5.1.zz --skip-gendata --gendata-advanced --vcols --transformers=ExecuteAsCTE,ExecuteAsDeleteReturning,ExecuteAsExcept,ExecuteAsExecuteImmediate,ExecuteAsInsertSelect,ExecuteAsIntersect,ExecuteAsUnion,ExecuteAsUpdateDelete,ExecuteAsView,ExecuteAsPreparedTwice,ExecuteAsSPTwice --vardir=/home/travis/logs/vardir1_2
      

      The crash happens upon CREATE DATABASE which, I assume, has nothing to do with it except for causing an implicit commit.

      Not reproducible right away on a local machine. Attempts to run on ASAN just cause the usual failures in Item_ident::print.

      Attachments

        Activity

          People

            elenst Elena Stepanova
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

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