Cause: MySQL daemon worked with uninitialized memory when accessing non-nullable GEOMETRY types.
Consequence: Daemon could crash when mysqldump was performed.
Fix: Memory is initialized properly.
Result: mysqldump doesn't make daemon crashed any more.
when i try to dump our current database i always got errors and crash in mysqld log files after a simple:
where one of the database is google maps (provides by google).
upstream bug: http://bugs.mysql.com/bug.php?id=65971
here is the log from mysql:
120721 13:13:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120721 13:13:51 InnoDB: Initializing buffer pool, size = 8.0M
120721 13:13:51 InnoDB: Completed initialization of buffer pool
120721 13:13:51 InnoDB: Started; log sequence number 0 2417296880
120721 13:13:52 [Note] Event Scheduler: Loaded 0 events
120721 13:13:52 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.61-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
11:15:39 UTC - 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.
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 572953 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x20a2150
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
stack_bottom = 7f7778654d98 thread_stack 0x40000
/usr/libexec/mysqld(String::copy(char const*, unsigned int, charset_info_st*)+0x91) [0x5b7d11]
/usr/libexec/mysqld(String::copy(char const*, unsigned int, charset_info_st*, charset_info_st*, unsigned int*)+0xfa) [0x5b7e1a]
/usr/libexec/mysqld(get_all_tables(THD*, TABLE_LIST*, Item*)+0x147) [0x6c83e7]
/usr/libexec/mysqld(get_schema_tables_result(JOIN*, enum_schema_table_state)+0x1f7) [0x6b8907]
/usr/libexec/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*)+0x15c) [0x62dfbc]
/usr/libexec/mysqld(handle_select(THD*, st_lex*, select_result*, unsigned long)+0x174) [0x633734]
/usr/libexec/mysqld(mysql_parse(THD*, char*, unsigned int, char const**)+0x2d3) [0x5cda33]
/usr/libexec/mysqld(dispatch_command(enum_server_command, THD*, char*, unsigned int)+0xd05) [0x5cf865]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f774c0049e0): is an invalid pointer
Connection ID (thread ID): 5
Thank you for reporting. I've gone through the discussion at , but I'm still not able to reproduce such failure. Are you able to reproduce it with the test case attached at  on a fresh datadir? If so, are there any other steps required or does it fail even on a fresh and empty DB on your machine?
it's always happened on our server. and even mysql (ie. oracle) can reproduce it (as you can see in the above bz). unfortunately the database is the commercial google maps api so i assume i can't send it to you.
anyway we try to drop the database and import it then the same happened:-(
so currently either mysql fix it and gives a patch or we'd have to update from 5.1 to 5.5 in which this's already fixed.
Is it possible to provide your my.cnf file, please?
Created attachment 600765 [details]
Thank you for the my.cnf file. Unfortunately, I'm still not able to reproduce the failure. I believe a better backtrace could help, so I'd like to ask you for the following:
1. install mysql-debuginfo package if not done already
2. run mysqld with "--core-file" option (otherwise no coredump is generated)
3. generate a backtrace using the coredump file and e.g. gdb's "bt full" command
Please, be aware that the coredump file is usually very large and check the backtrace and hide all sensitive data if needed.
Created attachment 601772 [details]
I've finally reproduced it, using:
$ valgrind --malloc-fill=ff /usr/libexec/mysqld --core-file
and it is also possible using:
MALLOC_PERTURB_=250 /usr/libexec/mysqld --core-file
The attached file is a coredump file.
mysql has a fix for it. dare i ask for an src.rpm from rh?
(In reply to comment #8)
> mysql has a fix for it. dare i ask for an src.rpm from rh?
The way to get the priority of this bug raised to the point where it might get fixed in RHEL6 (without any upstream fix) is to open an issue through your regular customer support contact.
*** Bug 880104 has been marked as a duplicate of this bug. ***
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.