From: Olav Sandstaa Date: September 8 2010 8:37am Subject: bzr commit into mysql-5.5-bugfixing branch (olav:3204) Bug#54478 List-Archive: http://lists.mysql.com/commits/117758 X-Bug: 54478 Message-Id: <201009080837.o888bQBR026143@nanna27.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0345947261==" --===============0345947261== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/tmp/olav/bug54478/ based on revid:mats.kindahl@stripped 3204 Olav Sandstaa 2010-09-08 Fix for Bug#54478 "mysqld crashes during boot when running mtr with --debug option" The crash during boot was caused by a DBUG_PRINT statement in fill_schema_schemata() (in sql_show.cc). This DBUG_PRINT statement contained several instances of %s in the format string and for one of these we gave a NULL pointer as the argument. This caused the call to vsnprintf() to crash when running on Solaris. The fix for this problem is to ensure we do not give a NULL pointer as argument. If the variable to be printed is NULL we instead give a "(null)" string as argument. This patch also contains fixes for several other places where we gave a NULL pointer as argument to %s fields in the format string for DBUG_PRINT. These caused several individual tests to fail. @ client/mysqltest.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ mysys/mf_format.c Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ sql/field.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ sql/handler.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "NULL". This problem caused vsnprintf() to crash on Solaris. @ sql/sql_class.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ sql/sql_db.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ sql/sql_insert.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ sql/sql_select.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. @ sql/sql_show.cc Add a test for that string arguments to DBUG_PRINT() is not NULL pointers. If that is the case we instead supply a string containing "(null)". This problem caused vsnprintf() to crash on Solaris. modified: client/mysqltest.cc mysys/mf_format.c sql/field.cc sql/handler.cc sql/sql_class.cc sql/sql_db.cc sql/sql_insert.cc sql/sql_select.cc sql/sql_show.cc === modified file 'client/mysqltest.cc' === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-08-27 11:33:32 +0000 +++ b/client/mysqltest.cc 2010-09-08 08:37:18 +0000 @@ -2387,7 +2387,8 @@ { DBUG_PRINT("info", ("At row %ld, column %d is '%s'", - row_no, col_no, row[col_no])); + row_no, col_no, + row[col_no] ? row[col_no] : "(null)")); /* Found the row to get */ if (row[col_no]) value= row[col_no]; === modified file 'mysys/mf_format.c' --- a/mysys/mf_format.c 2009-04-19 01:21:33 +0000 +++ b/mysys/mf_format.c 2010-09-08 08:37:18 +0000 @@ -32,7 +32,7 @@ size_t dev_length; DBUG_ENTER("fn_format"); DBUG_PRINT("enter",("name: %s dir: %s extension: %s flag: %d", - name,dir,extension,flag)); + name, dir ? dir : "(null)", extension,flag)); /* Copy and skip directory */ name+=(length=dirname_part(dev, (startpos=(char *) name), &dev_length)); === modified file 'sql/field.cc' --- a/sql/field.cc 2010-08-23 09:56:21 +0000 +++ b/sql/field.cc 2010-09-08 08:37:18 +0000 @@ -6549,7 +6549,8 @@ { uint length= min(field_length,max_length); uint local_char_length= max_length/field_charset->mbmaxlen; - DBUG_PRINT("debug", ("Packing field '%s' - length: %u ", field_name, length)); + DBUG_PRINT("debug", ("Packing field '%s' - length: %u ", + field_name ? field_name : "(null)", length)); if (length > local_char_length) local_char_length= my_charpos(field_charset, from, from+length, === modified file 'sql/handler.cc' --- a/sql/handler.cc 2010-08-09 18:33:47 +0000 +++ b/sql/handler.cc 2010-09-08 08:37:18 +0000 @@ -3877,7 +3877,8 @@ int error= 0; DBUG_ENTER("ha_find_files"); DBUG_PRINT("enter", ("db: '%s' path: '%s' wild: '%s' dir: %d", - db, path, wild ? wild : "NULL", dir)); + db ? db : "NULL", path ? path : "NULL", + wild ? wild : "NULL", dir)); st_find_files_args args= {db, path, wild, dir, files}; plugin_foreach(thd, find_files_handlerton, === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2010-08-30 14:07:40 +0000 +++ b/sql/sql_class.cc 2010-09-08 08:37:18 +0000 @@ -3714,7 +3714,7 @@ int THD::decide_logging_format(TABLE_LIST *tables) { DBUG_ENTER("THD::decide_logging_format"); - DBUG_PRINT("info", ("query: %s", query())); + DBUG_PRINT("info", ("query: %s", query() ? query() : "(null)")); DBUG_PRINT("info", ("variables.binlog_format: %lu", variables.binlog_format)); DBUG_PRINT("info", ("lex->get_stmt_unsafe_flags(): 0x%x", === modified file 'sql/sql_db.cc' --- a/sql/sql_db.cc 2010-07-19 08:27:53 +0000 +++ b/sql/sql_db.cc 2010-09-08 08:37:18 +0000 @@ -1438,7 +1438,8 @@ CHARSET_INFO *db_default_cl; DBUG_ENTER("mysql_change_db"); - DBUG_PRINT("enter",("name: '%s'", new_db_name->str)); + DBUG_PRINT("enter", + ("name: '%s'", new_db_name->str ? new_db_name->str : "(null)")); if (new_db_name == NULL || new_db_name->length == 0) === modified file 'sql/sql_insert.cc' --- a/sql/sql_insert.cc 2010-09-01 13:12:42 +0000 +++ b/sql/sql_insert.cc 2010-09-08 08:37:18 +0000 @@ -2348,7 +2348,8 @@ Delayed_insert *di=thd->di; const Discrete_interval *forced_auto_inc; DBUG_ENTER("write_delayed"); - DBUG_PRINT("enter", ("query = '%s' length %lu", query.str, + DBUG_PRINT("enter", ("query = '%s' length %lu", + query.str ? query.str : "(null)", (ulong) query.length)); thd_proc_info(thd, "waiting for handler insert"); === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2010-08-27 11:33:32 +0000 +++ b/sql/sql_select.cc 2010-09-08 08:37:18 +0000 @@ -11082,7 +11082,7 @@ MEM_ROOT own_root= entry->mem_root; const char *save_proc_info; DBUG_ENTER("free_tmp_table"); - DBUG_PRINT("enter",("table: %s",entry->alias)); + DBUG_PRINT("enter",("table: %s", entry->alias ? entry->alias : "(null)")); save_proc_info=thd->proc_info; thd_proc_info(thd, "removing tmp table"); === modified file 'sql/sql_show.cc' --- a/sql/sql_show.cc 2010-08-30 14:07:40 +0000 +++ b/sql/sql_show.cc 2010-09-08 08:37:18 +0000 @@ -3719,8 +3719,10 @@ if (get_lookup_field_values(thd, cond, tables, &lookup_field_vals)) DBUG_RETURN(0); DBUG_PRINT("INDEX VALUES",("db_name='%s', table_name='%s'", - lookup_field_vals.db_value.str, - lookup_field_vals.table_value.str)); + lookup_field_vals.db_value.str ? + lookup_field_vals.db_value.str : "(null)", + lookup_field_vals.table_value.str ? + lookup_field_vals.table_value.str : "(null)")); if (make_db_list(thd, &db_names, &lookup_field_vals, &with_i_schema)) DBUG_RETURN(1); --===============0345947261== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/olav@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: olav@stripped # target_branch: file:///export/home/tmp/olav/bug54478/ # testament_sha1: 3ed7edacf2268071fec1795f76404ccb270346de # timestamp: 2010-09-08 10:37:26 +0200 # base_revision_id: mats.kindahl@stripped\ # k90nmyabge3x72cq # # Begin bundle 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 NyE7Po9mTp0cR73Ozs+Cisv+LuSKcKEgeHeZLg== --===============0345947261==--