Bug #25834 | Test failure in "func_group" | ||
---|---|---|---|
Submitted: | 24 Jan 2007 16:52 | Modified: | 13 Mar 2007 1:49 |
Reporter: | Lenz Grimmer | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Tests | Severity: | S7 (Test Cases) |
Version: | 5.0-current | OS: | Linux (Linux) |
Assigned to: | Ramil Kalimullin | CPU Architecture: | Any |
[24 Jan 2007 16:52]
Lenz Grimmer
[24 Jan 2007 17:23]
Valeriy Kravchuk
Thank you for a bug report. Verified just as described with 5.0-BK on Linux. Works OK with 5.1-BK: openxs@suse:~/dbs/5.0/mysql-test> ./mysql-test-run.pl func_group Logging: ./mysql-test-run.pl func_group MySQL Version 5.0.36 Using ndbcluster when necessary, mysqld supports it Skipping SSL, mysqld not compiled with SSL mysql-test-run: WARNING: Could not find all required ndb binaries, all ndb tests will fail, use --skip-ndbcluster to skip testing it. Using MTR_BUILD_THREAD = 0 Using MASTER_MYPORT = 9306 Using MASTER_MYPORT1 = 9307 Using SLAVE_MYPORT = 9308 Using SLAVE_MYPORT1 = 9309 Using SLAVE_MYPORT2 = 9310 Using NDBCLUSTER_PORT = 9310 Using IM_PORT = 9312 Using IM_MYSQLD1_PORT = 9313 Using IM_MYSQLD2_PORT = 9314 Killing Possible Leftover Processes Removing Stale Files Creating Directories Installing Master Database Installing Master Database ======================================================= Starting Tests in the 'main' suite TEST RESULT TIME (ms) ------------------------------------------------------- func_group [ fail ] Errors are (from /home/openxs/dbs/5.0/mysql-test/var/log/mysqltest-time) : mysqltest: Result length mismatch (the last lines may be the most important ones) Below are the diffs between actual and expected results: ------------------------------------------------------- *** r/func_group.result 2007-01-24 16:42:59.000000000 +0300 --- r/func_group.reject 2007-01-24 18:42:25.000000000 +0300 *************** *** 1182,1190 **** 3 4 0.00000000 select i, count(*), std(o1/o2) from bug22555 group by i order by i; i count(*) std(o1/o2) ! 1 4 0 ! 2 4 0 ! 3 4 0 select i, count(*), std(e1/e2) from bug22555 group by i order by i; i count(*) std(e1/e2) 1 4 0.00000000 --- 1182,1190 ---- 3 4 0.00000000 select i, count(*), std(o1/o2) from bug22555 group by i order by i; i count(*) std(o1/o2) ! 1 4 1.9708095987452e-17 ! 2 4 1.9712988154832e-18 ! 3 4 9.1019119466255e-18 select i, count(*), std(e1/e2) from bug22555 group by i order by i; i count(*) std(e1/e2) 1 4 0.00000000 *************** *** 1208,1216 **** 3 4 0.000000000000000000000000000000 select i, count(*), std(o1/o2) from bug22555 group by i order by i; i count(*) std(o1/o2) ! 1 4 0 ! 2 4 0 ! 3 4 0 select i, count(*), std(e1/e2) from bug22555 group by i order by i; i count(*) std(e1/e2) 1 4 0.000000000000000000000000000000 --- 1208,1216 ---- 3 4 0.000000000000000000000000000000 select i, count(*), std(o1/o2) from bug22555 group by i order by i; i count(*) std(o1/o2) ! 1 4 1.9708095987452e-17 ! 2 4 1.9712988154832e-18 ! 3 4 9.1019119466255e-18 select i, count(*), std(e1/e2) from bug22555 group by i order by i; i count(*) std(e1/e2) 1 4 0.000000000000000000000000000000 *************** *** 1233,1241 **** 3 4 0.000000000000000000000000000000 select i, count(*), std(o1/o2) from bug22555 group by i order by i; i count(*) std(o1/o2) ! 1 4 0 ! 2 4 0 ! 3 4 0 select i, count(*), std(e1/e2) from bug22555 group by i order by i; i count(*) std(e1/e2) 1 4 0.000000000000000000000000000000 --- 1233,1241 ---- 3 4 0.000000000000000000000000000000 select i, count(*), std(o1/o2) from bug22555 group by i order by i; i count(*) std(o1/o2) ! 1 4 1.9708095987452e-17 ! 2 4 1.9712988154832e-18 ! 3 4 9.1019119466255e-18 select i, count(*), std(e1/e2) from bug22555 group by i order by i; i count(*) std(e1/e2) 1 4 0.000000000000000000000000000000 ------------------------------------------------------- Please follow the instructions outlined at http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html to find the reason to this problem and how to report this. Result from queries before failure can be found in r/func_group.log Aborting: func_group failed in default mode. To continue, re-run with '--force'. Stopping All Servers openxs@suse:~/dbs/5.0/mysql-test> cd ../../5.1/ openxs@suse:~/dbs/5.1> cd mysql-test/ openxs@suse:~/dbs/5.1/mysql-test> ./mysql-test-run.pl func_group Logging: ./mysql-test-run.pl func_group MySQL Version 5.1.15 Using binlog format 'mixed' Using ndbcluster when necessary, mysqld supports it Skipping SSL, mysqld not compiled with SSL mysql-test-run: WARNING: Could not find all required ndb binaries, all ndb tests will fail, use --skip-ndbcluster to skip testing it. Using MTR_BUILD_THREAD = 0 Using MASTER_MYPORT = 9306 Using MASTER_MYPORT1 = 9307 Using SLAVE_MYPORT = 9308 Using SLAVE_MYPORT1 = 9309 Using SLAVE_MYPORT2 = 9310 Using NDBCLUSTER_PORT = 9310 Using NDBCLUSTER_PORT_SLAVE = 9311 Using IM_PORT = 9312 Using IM_MYSQLD1_PORT = 9313 Using IM_MYSQLD2_PORT = 9314 Killing Possible Leftover Processes Removing Stale Files Creating Directories Installing Master Database Installing Master Database ======================================================= Starting Tests in the 'main' suite TEST RESULT TIME (ms) ------------------------------------------------------- func_group [ pass ] 1483 ------------------------------------------------------- Stopping All Servers All 1 tests were successful. The servers were restarted 1 times Spent 1.483 seconds actually executing testcases
[20 Feb 2007 16:30]
Lenz Grimmer
Still occurs in 5.0 and 5.1 as of today, blocking the creation of the daily snapshot builds we publish on http://snaps.mysql.com ...
[20 Feb 2007 16:33]
Mads Martin Joergensen
I'm setting this to P1 and tagging it, since it's a test failure which blocks our daily snapshot builds.
[21 Feb 2007 18:43]
Daniel Fischer
This bug is different from bug#22555. I isolated this behaviour to builds with -O3 in CXXFLAGS, which is the default of the scripts in the BUILD directory. From my outdated understanding of assembly, the key difference is that with -O3, sql/item_sum.cc:variance_fp_recurrence_next is inlined. The test case passes if this inlining is prevented. There are (at least) two workarounds that worked for me: 1.) Use CXXFLAGS=-O2 BUILD/compile-dist etc. to build 2.) Use the following patch to prevent inlining for this specific function if compiled with GCC: --- build-1/sql/item_sum.cc 2007-02-20 08:14:22.000000000 +0100 +++ build-2/sql/item_sum.cc 2007-02-21 18:53:38.000000000 +0100 @@ -1216,6 +1216,10 @@ variance. The difference between the two classes is that the first is used for a mundane SELECT, while the latter is used in a GROUPing SELECT. */ +#ifdef __GNUC__ +/* prevent bug#25384 */ +static void variance_fp_recurrence_next(double *m, double *s, ulonglong *count, double nr) __attribute__((__noinline__)); +#endif static void variance_fp_recurrence_next(double *m, double *s, ulonglong *count, double nr) { *count += 1; This patch was effective both on my home workstation and on the host that builds our daily snapshot builds. Please comment.
[27 Feb 2007 7:02]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/20624 ChangeSet@1.2444, 2007-02-27 11:01:58+04:00, ramil@mysql.com +2 -0 Fix for bug #25834: Test failure in "func_group" Round the results of std() for some calls with double arguments to avoid double math precision problems.
[8 Mar 2007 21:35]
Timothy Smith
pushed to 5.0.38, 5.1.17
[13 Mar 2007 1:49]
Paul DuBois
No changelog entry needed.