5.2.5 misc.cpp:103: int __cxa_pure_virtual(): Assertion `!"Aborted: pure virtual method called."' failed.

Bug #759016 reported by karpa
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
MariaDB
Incomplete
Undecided
Unassigned

Bug Description

110412 23:29:44 [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.
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.

key_buffer_size=0
read_buffer_size=131072
max_used_connections=257
max_threads=258
threads_connected=22
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 135302502 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x7f0be1acb280
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 = 0x564790f8 thread_stack 0x48000
/usr/sbin/mysqld(my_print_stacktrace+0x2e) [0x99e25e]
/usr/sbin/mysqld(handle_segfault+0x382) [0x5ef952]
/lib64/libpthread.so.0 [0x307740eb10]
/usr/sbin/mysqld [0x8b81a1]
/usr/sbin/mysqld [0x923e17]
/usr/sbin/mysqld [0x8e603a]
/usr/sbin/mysqld [0x888f34]
/usr/sbin/mysqld(handler::read_range_next()+0x94) [0x6dbef4]
/usr/sbin/mysqld(handler::read_multi_range_next(st_key_multi_range**)+0x33) [0x6db653]
/usr/sbin/mysqld(QUICK_RANGE_SELECT::get_next()+0x156) [0x6c5fc6]
/usr/sbin/mysqld [0x6d97e0]
/usr/sbin/mysqld(filesort(THD*, st_table*, st_sort_field*, unsigned int, SQL_SELECT*, unsigned long long, bool, unsigned long long*)+0x9f3) [0x6da8b3]
/usr/sbin/mysqld [0x6677e7]
/usr/sbin/mysqld(JOIN::exec()+0x7f9) [0x670c39]
/usr/sbin/mysqld(mysql_select(THD*, Item***, 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*)+0x199) [0x672979]
/usr/sbin/mysqld(handle_select(THD*, st_lex*, select_result*, unsigned long)+0x167) [0x673257]
/usr/sbin/mysqld [0x5f8d31]
/usr/sbin/mysqld(mysql_execute_command(THD*)+0x394) [0x5fc214]
/usr/sbin/mysqld(mysql_parse(THD*, char*, unsigned int, char const**)+0x29a) [0x60247a]
/usr/sbin/mysqld(dispatch_command(enum_server_command, THD*, char*, unsigned int)+0x67b) [0x602afb]
/usr/sbin/mysqld(do_command(THD*)+0xf6) [0x603a06]
/usr/sbin/mysqld(handle_one_connection+0xa2) [0x5f5302]
/lib64/libpthread.so.0 [0x307740673d]
/lib64/libc.so.6(clone+0x6d) [0x3076cd3d1d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7f0bcc1a0ad8): is an invalid pointer
Connection ID (thread ID): 857307
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
mysqld: misc.cpp:103: int __cxa_pure_virtual(): Assertion `!"Aborted: pure virtual method called."' failed.
Fatal signal 6 while backtracing

on Centos 5.5 x64
sorry no repeatable test case. single (at this time) sigfault.

Revision history for this message
Philip Stoev (pstoev-askmonty) wrote :

Hi,

Do you have a core file saved by any chance? It should be located in your data directory. If such a file exists, it may allow us to obtain a better, more informative stack trace.

Revision history for this message
Sergey Petrunia (sergefp) wrote :

First, the obvious:

> mysqld: misc.cpp:103: int __cxa_pure_virtual(): Assertion `!"Aborted: pure virtual method called."' failed.

The only misc.cpp we have is ./extra/yassl/taocrypt/src/misc.cpp which defines __cxa_pure_virtual() which C++ runtime calls when one calls virtual function.

Then, if one looks at stacktrace:

> /usr/sbin/mysqld(my_print_stacktrace+0x2e) [0x99e25e]
> /usr/sbin/mysqld(handle_segfault+0x382) [0x5ef952]
> /lib64/libpthread.so.0 [0x307740eb10]
> /usr/sbin/mysqld [0x8b81a1]
> /usr/sbin/mysqld [0x923e17]
> /usr/sbin/mysqld [0x8e603a]
> /usr/sbin/mysqld [0x888f34]
> /usr/sbin/mysqld(handler::read_range_next()+0x94) [0x6dbef4]

then they can see that the crash happens inside a storage engine. This is 5.2, it doesn't have index condition pushdown, so I guess the bad call is made by the storage engine (and not by call back to SQL layer).

Our most-used storage engines (Innodb/xtradb, Myisam, Aria, Heap) are written in C. The only engines that we build with that use C++ are PBXT and Oqgraph.

Revision history for this message
Sergey Petrunia (sergefp) wrote :

/usr/sbin/mysqld [0x8b81a1]
/usr/sbin/mysqld [0x923e17]
/usr/sbin/mysqld [0x8e603a]
/usr/sbin/mysqld [0x888f34]
/usr/sbin/mysqld(handler::read_range_next()+0x94) [0x6dbef4]
/usr/sbin/mysqld(handler::read_multi_range_next(st_key_multi_range**)+0x33) [0x6db653]

Another interesting thing is that the stacktrace shows function names for functions at SQL layer but not inside the engine. Was the engine built without debug info for some reason?

Revision history for this message
Sergey Petrunia (sergefp) wrote :

I don't think it's possible to analyze further with this information. Changing status to incomplete. Feel free to re-open if there is more info/comments.

Changed in maria:
status: New → Incomplete
Revision history for this message
Gurvan (gus-f) wrote :
Download full text (13.1 KiB)

Dear,

I have the same problem. Centos 5.6 64bits.
I have upgrade MariaDB 1.50 -> 5.3.0 and after 24h, 7 crash in few minutes.

110901 18:37:35 [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.
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.

key_buffer_size=0
read_buffer_size=131072
max_used_connections=273
max_threads=802
threads_connected=33
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 52672878 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x7f7bd3912610
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 = 0x4cd6f0f8 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x2e) [0x9eeade]
/usr/sbin/mysqld(handle_segfault+0x391) [0x610801]
/lib64/libpthread.so.0 [0x346280eb10]
/usr/sbin/mysqld(Item_func_case::find_item(String*)+0x58) [0x58a208]
/usr/sbin/mysqld(Item_func_case::val_str(String*)+0x1b) [0x58a3db]
/usr/sbin/mysqld(Item::send(Protocol*, String*)+0x50) [0x5545d0]
/usr/sbin/mysqld(select_send::send_data(List<Item>&)+0x133) [0x5fed83]
/usr/sbin/mysqld [0x67a7ab]
/usr/sbin/mysqld [0x6925fa]
/usr/sbin/mysqld(JOIN::exec()+0x83d) [0x6a0d2d]
/usr/sbin/mysqld(mysql_select(THD*, Item***, 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*)+0x199) [0x6a2dc9]
/usr/sbin/mysqld(handle_select(THD*, st_lex*, select_result*, unsigned long)+0x167) [0x6a3717]
/usr/sbin/mysqld [0x61a69c]
/usr/sbin/mysqld(mysql_execute_command(THD*)+0x3b4) [0x61ca74]
/usr/sbin/mysqld(mysql_parse(THD*, char*, unsigned int, char const**)+0x29a) [0x622d3a]
/usr/sbin/mysqld(dispatch_command(enum_server_command, THD*, char*, unsigned int)+0x4d1) [0x623211]
/usr/sbin/mysqld(do_command(THD*)+0xf6) [0x6242e6]
/usr/sbin/mysqld(handle_one_connection+0xbb) [0x61643b]
/lib64/libpthread.so.0 [0x346280673d]
/lib64/libc.so.6(clone+0x6d) [0x34620d3d1d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7f7ba1784d08): is an invalid pointer
Connection ID (thread ID): 7468213
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
mysqld: misc.cpp:103: int __cxa_pure_virtual(): Assertion `!"Aborted: pure virtual method called."' failed.
mysqld: misc.cpp:103: int __cxa_pure_virtual(): Assertion `!"Aborted: pure virtual method called."' failed.
110901 18:37:36 mysqld_safe Number of processes running now: 0
110901 18:37:36 mysqld_safe mysqld restarted

-------
Three crash have more information :

110901 18:42:52 [ERROR] mysqld got signal 11 ;
This ...

Revision history for this message
Philip Stoev (pstoev-askmonty) wrote :

The last comment seems to refer to an issue with CASE + time fields. This is most probably bug

https://bugs.launchpad.net/maria/+bug/839387

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.