DeNA / HandlerSocket-Plugin-for-MySQL

HandlerSocket is a NoSQL plugin for MySQL, working as a daemon inside the mysqld process, to accept tcp connections, and execute requests from clients. HandlerSocket does not support SQL queries; instead it supports simple CRUD operations on tables.
Other
1.13k stars 150 forks source link

[ERROR] mysqld got signal 6 (indexid > 32bit) #82

Open karpa13a opened 12 years ago

karpa13a commented 12 years ago
Thread pointer: 0x33e5b590
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 = 0x4d1de0e0 thread_stack 0x48000
/usr/sbin/mysqld(my_print_stacktrace+0x2e) [0x9a092e]
/usr/sbin/mysqld(handle_segfault+0x393) [0x5ee413]
/lib64/libpthread.so.0 [0x331a00eb70]
/lib64/libc.so.6(gsignal+0x35) [0x3319c30265]
/lib64/libc.so.6(abort+0x110) [0x3319c31d10]
/usr/lib64/libstdc++.so.6(__gnu_cxx::__verbose_terminate_handler()+0x114) [0x331acbed14]
/usr/lib64/libstdc++.so.6 [0x331acbce16]
/usr/lib64/libstdc++.so.6 [0x331acbce43]
/usr/lib64/libstdc++.so.6 [0x331acbcf2a]
/usr/lib64/libstdc++.so.6(operator new(unsigned long)+0x79) [0x331acbd239]
/usr/lib64/mysql/plugin/handlersocket.so(std::vector<dena::prep_stmt, std::allocator<dena::prep_stmt> >::_M_fill_insert(__gnu_cxx::__normal_iterator<dena::prep_stmt*, std::vector<dena::prep_stmt, std::allocator<dena::prep_stmt> > >, unsigned long, dena::prep_stmt const&)+0xbd) [0x7f7bacfb2d9d]
/usr/lib64/mysql/plugin/handlersocket.so(dena::hstcpsvr_conn::dbcb_set_prep_stmt(unsigned long, dena::prep_stmt const&)+0xe1) [0x7f7bacfad6d1]
/usr/lib64/mysql/plugin/handlersocket.so(dena::dbcontext::cmd_open(dena::dbcallback_i&, dena::cmd_open_args const&)+0x6a4) [0x7f7bacfa9ae4]
/usr/lib64/mysql/plugin/handlersocket.so(dena::hstcpsvr_worker::do_open_index(char*, char*, dena::hstcpsvr_conn&)+0x1c2) [0x7f7bacfaebf2]
/usr/lib64/mysql/plugin/handlersocket.so(dena::hstcpsvr_worker::execute_lines(dena::hstcpsvr_conn&)+0x65) [0x7f7bacfaedf5]
/usr/lib64/mysql/plugin/handlersocket.so(dena::hstcpsvr_worker::run_one_ep()+0x588) [0x7f7bacfaf968]
/usr/lib64/mysql/plugin/handlersocket.so(dena::hstcpsvr_worker::run()+0xa6) [0x7f7bacfb0626]
/usr/lib64/mysql/plugin/handlersocket.so(dena::thread<dena::worker_throbj>::thread_main(void*)+0xd) [0x7f7bacfb56bd]
/lib64/libpthread.so.0 [0x331a00673d]
/lib64/libc.so.6(clone+0x6d) [0x3319cd44bd]

trying to find out test case.

karpa13a commented 12 years ago

if indexid greater than 32 bit sigfault occurs)

karpa13a commented 12 years ago

simple test case:

CREATE TABLE `test` (
  `col1` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `col2` text CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL,
  PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251
> telnet mysql 9998
Trying 192.168.0.0...
Connected to mysql (192.168.0.0).
Escape character is '^]'.
P    787896897787844780957809        db    test    PRIMARY    col2
Connection closed by foreign host.

got it)

ahiguti commented 12 years ago

It's because of an out of memory. You should use smaller index ids as far as possible. Currently no limit checking is performed for index ids.