Description:
after bug #44332 was fixed I still get errors with different testcases, so a revised fix is needed.
Version: '5.6.2-m5-valgrind-max-debug' socket: 'sock' port: 3306 Source distribution
Thread 18:
Conditional jump or move depends on uninitialised value(s)
at: my_xml_scan (xml.c:172)
by: my_xml_parse (xml.c:302)
by: Item_xml_str_func::parse_xml (item_xmlfunc.cc:2778)
by: Item_func_xml_extractvalue::val_str (item_xmlfunc.cc:2799)
by: Item::send (item.cc:5931)
by: Protocol::send_result_set_row (protocol.cc:848)
by: select_send::send_data (sql_class.cc:1910)
by: JOIN::exec (sql_select.cc:2798)
by: mysql_select (sql_select.cc:3584)
by: handle_select(sql_select.cc:323)
by: execute_sqlcom_select (sql_parse.cc:4513)
by: mysql_execute_command (sql_parse.cc:2096)
by: mysql_parse (sql_parse.cc:5550)
by: dispatch_command (sql_parse.cc:1078)
by: do_command (sql_parse.cc:815)
by: do_handle_one_connection (sql_connect.cc:748)
by: handle_one_connection (sql_connect.cc:684)
by: start_thread (pthread_create.c:301)
Uninitialised value was created by a heap allocation
at: malloc (vg_replace_malloc.c:195)
by: my_malloc (my_malloc.c:38)
by: String::real_alloc (sql_string.cc:44)
by: String::alloc (sql_string.h:233)
by: Item_char_typecast::val_str (item_timefunc.cc:2571)
by: Item_func_xml_extractvalue::val_str (item_xmlfunc.cc:2799)
by: Item::send (item.cc:5931)
by: Protocol::send_result_set_row (protocol.cc:848)
by: select_send::send_data (sql_class.cc:1910)
by: JOIN::exec (sql_select.cc:2798)
by: mysql_select (sql_select.cc:3584)
by: handle_select (sql_select.cc:323)
by: execute_sqlcom_select (sql_parse.cc:4513)
by: mysql_execute_command (sql_parse.cc:2096)
by: mysql_parse (sql_parse.cc:5550)
by: dispatch_command (sql_parse.cc:1078)
by: do_command (sql_parse.cc:815)
by: do_handle_one_connection (sql_connect.cc:748)
by: handle_one_connection (sql_connect.cc:684)
by: start_thread (pthread_create.c:301)
(gdb) list
167 {
168 p->cur++;
169 for (; ( p->cur < p->end ) && (p->cur[0] != a->beg[0]); p->cur++)
170 {}
171 a->end=p->cur;
172 if (a->beg[0] == p->cur[0])p->cur++; <-------
173 a->beg++;
174 if (!(p->flags & MY_XML_FLAG_SKIP_TEXT_NORMALIZATION))
175 my_xml_norm_text(a);
176 lex=MY_XML_STRING;
(gdb)
How to repeat:
#run mysqld in valgrind, then:
select extractvalue(convert('<\"',binary(10)),1);