Bug #1301 func_gconcat test fails in valgrind-max build
Submitted: 16 Sep 2003 8:26 Modified: 12 Mar 2004 6:16
Reporter: Per-Erik Martin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server Severity:S1 (Critical)
Version:4.1 OS:Linux (Linux RH 7.3)
Assigned to: Michael Widenius CPU Architecture:Any

[16 Sep 2003 8:26] Per-Erik Martin
Description:
When running the func_gconcat test on a RedHat 7.3, valgrind-max build,
a recently added test case fails. Build environment:

Linux mysql 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 unknown
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
valgrind-1.0.4

The output from the test run:
----
func_gconcat                   [ fail ]

Errors are (from /home/pem/work/mysql-4.1/mysql-test/var/log/mysqltest-time) :
/home/pem/work/mysql-4.1/client/mysqltest: At line 123: Result length mismatch
(the last line(s) may be the ones that caused the die() in mysqltest)
Below are the diffs between actual and expected results:
-------------------------------------------------------
*** r/func_gconcat.result       Sun Sep  7 16:57:05 2003
--- r/func_gconcat.reject       Tue Sep 16 17:54:04 2003
***************
*** 170,177 ****
  select REQ_ID, Group_Concat(URL) as URL, Min(t1.URL_ID) urll,
 urlg from t1, t2 where t2.URL_ID = t1.URL_ID group by REQ_ID;
  REQ_ID        URL     urll    urlg
! 1     X       4       4
! 5     X,X,X   4       5
  drop table t1;
  drop table t2;
  create table t1 (id int, name varchar(16));
--- 170,177 ----
  select REQ_ID, Group_Concat(URL) as URL, Min(t1.URL_ID) urll,
 urlg from t1, t2 where t2.URL_ID = t1.URL_ID group by REQ_ID;
  REQ_ID        URL     urll    urlg
! 1     X       NULL    NULL
! 5     X,X,X   NULL    NULL
  drop table t1;
  drop table t2;
  create table t1 (id int, name varchar(16));
-------------------------------------------------------
Please follow the instructions outlined at
http://www.mysql.com/doc/R/e/Reporting_mysqltest_bugs.html
to find the reason to this problem and how to report this.

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests
----

When running with valgrind, this happens for that particular test:
----
==13204== Thread 10:
==13204== Conditional jump or move depends on uninitialised value(s)
==13204==    at 0x81724A9: count_field_types(TMP_TABLE_PARAM *, List<Item> &, bool) (sql_select.cc:7746)
==13204==    by 0x8163759: JOIN::exec(void) (sql_select.cc:1312)
==13204==    by 0x81643C2: mysql_select(THD *, Item ***, st_table_list *, unsigned int, List<Item> &, Item *, unsigned int, st_order *, st_order *, Item *, st_order *, unsigned long, select_result *, st_select_lex_unit *, st_select_lex *, bool) (sql_select.cc:1542)
==13204==    by 0x816094F: handle_select(THD *, st_lex *, select_result *) (sql_select.cc:189)
==13204==    by 0x813EEB4: mysql_execute_command(THD *) (sql_parse.cc:1771)
==13204==    by 0x8143741: mysql_parse(THD *, char *, unsigned int) (sql_parse.cc:3683)
==13204==    by 0x813DE50: dispatch_command(enum_server_command, THD *, char *, unsigned int) (sql_parse.cc:1308)
==13204==    by 0x813D80E: do_command(THD *) (sql_parse.cc:1119)
==13204==    by 0x813CE68: handle_one_connection (sql_parse.cc:897)
==13204==    by 0x40241397: thread_wrapper (in /usr/local/lib/valgrind/libpthread.so)
==13204==    by 0x400491E8: do__apply_in_new_thread_bogusRA (in /usr/local/lib/valgrind/valgrind.so)
==13204== 
==13204== Thread 10:
==13204== Conditional jump or move depends on uninitialised value(s)
==13204==    at 0x81731C3: JOIN::make_sum_func_list(List<Item> &, List<Item> &, bool) (sql_select.cc:8115)
==13204==    by 0x8163A5C: JOIN::exec(void) (sql_select.cc:1351)
==13204==    by 0x81643C2: mysql_select(THD *, Item ***, st_table_list *, unsigned int, List<Item> &, Item *, unsigned int, st_order *, st_order *, Item *, st_order *, unsigned long, select_result *, st_select_lex_unit *, st_select_lex *, bool) (sql_select.cc:1542)
==13204==    by 0x816094F: handle_select(THD *, st_lex *, select_result *) (sql_select.cc:189)
==13204==    by 0x813EEB4: mysql_execute_command(THD *) (sql_parse.cc:1771)
==13204==    by 0x8143741: mysql_parse(THD *, char *, unsigned int) (sql_parse.cc:3683)
==13204==    by 0x813DE50: dispatch_command(enum_server_command, THD *, char *, unsigned int) (sql_parse.cc:1308)
==13204==    by 0x813D80E: do_command(THD *) (sql_parse.cc:1119)
==13204==    by 0x813CE68: handle_one_connection (sql_parse.cc:897)
==13204==    by 0x40241397: thread_wrapper (in /usr/local/lib/valgrind/libpthread.so)
==13204==    by 0x400491E8: do__apply_in_new_thread_bogusRA (in /usr/local/lib/valgrind/valgrind.so)
----

How to repeat:
cd mysql-test
./mysql-test-run func_gconcat
./mysql-test-run --valgrind func_gconcat
[30 Sep 2003 8:08] Lenz Grimmer
Still happens with the current 4.1 tree - this needs to be fixed before we can release 4.1.1!
[12 Mar 2004 6:16] Michael Widenius
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html

Additional info:

Tested with current 4.1 tree and there was no errors, so I assume this has been fixed.  Fix should be in 4.1.2