Bug #45882 | dtoa.c might not work with gcc 4.4.0 | ||
---|---|---|---|
Submitted: | 1 Jul 2009 14:54 | Modified: | 7 Jul 2010 18:52 |
Reporter: | Paul DuBois | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | azalea | OS: | Any |
Assigned to: | Alexey Kopytov | CPU Architecture: | Any |
[1 Jul 2009 14:54]
Paul DuBois
[1 Jul 2009 15:31]
MySQL Verification Team
Thank you for the bug report.
[2 Jul 2009 18:16]
Sergei Golubchik
as a way to verify it we can try to compile with gcc 4.4.0 and run the test suite. If it'll work, perhaps SELECT "1.1"+0 (or something) will fail
[2 Jul 2009 21:46]
MySQL Verification Team
The test suite fails: main.locktrans_myisam [ pass ] 439 main.mysql_client_test [ fail ] Test ended at 2009-07-02 15:03:05 CURRENT_TEST: main.mysql_client_test mysqltest: At line 14: command "$MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1" failed Output from before failure: exec of '/home/miguel/dbs/azalea/bin/mysql_client_test --defaults-file=/home/miguel/dbs/azalea/mysql-test/var/my.cnf --testcase --vardir=/home/miguel/dbs/azalea/mysql-test/var --getopt-ll-test=25600M >> /home/miguel/dbs/azalea/mysql-test/var/log/mysql_client_test.out.log 2>&1' failed, error: 256, status: 1, errno: 0 The result from queries just before the failure was: SET @old_general_log= @@global.general_log; - saving '/home/miguel/dbs/azalea/mysql-test/var/log/main.mysql_client_test/' to '/home/miguel/dbs/azalea/mysql-test/var/log/main.mysql_client_test/' Only 459 of 1564 completed. mysql-test-run: *** ERROR: Not all tests completed however the other test suggested by Serg no: [miguel@hegel azalea]$ bin/mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.4.4-alpha-debug Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SELECT "1.1"+0; +---------+ | "1.1"+0 | +---------+ | 1.1 | +---------+ 1 row in set (0.00 sec) mysql> exit Bye [miguel@hegel azalea]$ gcc --version gcc (GCC) 4.4.0 20090506 (Red Hat 4.4.0-4) Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [miguel@hegel azalea]$ Please let me know if needed more test. Thanks
[2 Aug 2009 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[26 May 2010 14:35]
Tor Didriksen
This unit test does *not* fail in optimized build for me: #include <gtest/gtest.h> #include <m_string.h> TEST(Dtoa_test, convert) { char char_buf[] = "1.1"; double d= my_atof(char_buf); char flt_buff[FLOATING_POINT_BUFFER]; my_bool error= FALSE; size_t ret= my_fcvt(d, 1, flt_buff, &error); EXPECT_EQ(strlen(char_buf), ret) << flt_buff; EXPECT_EQ(0, strcmp(char_buf, flt_buff)) << flt_buff; } But I do get lots of warnings like: warning: dereferencing pointer ‘a.73’ does break strict-aliasing rules We should download, and integrate http://www.netlib.org/fp/dtoa.c
[1 Jun 2010 12:25]
Jon Olav Hauglid
I get test failures that seem related to this bug. I'm using next-mr-bugfixing, release build (Ver 5.6.99-m4 for Linux on x86_64) on Ubuntu 10.04 x86_64 (2.6.32-22). Tests that fail include type_float.test, type_decimal.test, insert.test, loaddata.test and func_math.test. They all fail by hanging until they timeout. Stacktrace for hanging type_float.test: #0 lshift (b=0x7ffff29de580, k=3069, alloc=0x7ffff29de360) at /export/home/x/mysql-next-mr-bugfixing-test/strings/dtoa.c:1058 #1 0x00000000007ead75 in my_strtod_int (str=<value optimized out>, end=<value optimized out>, error=<value optimized out>) at /export/home/x/mysql-next-mr-bugfixing-test/strings/dtoa.c:1740 #2 my_strtod (str=<value optimized out>, end=<value optimized out>, error=<value optimized out>) at /export/home/x/mysql-next-mr-bugfixing-test/strings/dtoa.c:469 #3 0x0000000000668660 in Item_float (this=0xf37c98, str_arg=0xf37c90 "1e-50", length=5) at /export/home/x/mysql-next-mr-bugfixing-test/sql/item.cc:5574 #4 0x0000000000628e13 in MYSQLparse (yythd=0xe7a530) at /export/home/x/mysql-next-mr-bugfixing-test/sql/sql_yacc.yy:11739 I also get this test failure in cast.test: SELECT f1 AS double_val, CAST(f1 AS SIGNED INT) AS cast_val FROM t1; double_val cast_val --1e30 -9223372036854775808 -1e30 9223372036854775807 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '-1e30' -Warning 1292 Truncated incorrect INTEGER value: '1e30' +-1e16 -10000000000000000 +1e16 10000000000000000
[1 Jun 2010 17:38]
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/109798 3087 Alexey Kopytov 2010-06-01 Bug #45882: dtoa.c might not work with gcc 4.4.0 - Ported relevant changes from the upstream version to not break strict-aliasing rules and to fix compiler warnings and and infinite loops caused by that issue. - Fixed compilation with Honor_FLT_ROUNDS defined. - Fixed an unused variable warning.
[15 Jun 2010 8:08]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100615080459-smuswd9ooeywcxuc) (version source revid:marko.makela@oracle.com-20100601134335-ccthwwru23kn09qw) (merge vers: 5.1.48) (pib:16)
[15 Jun 2010 8:24]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100615080558-cw01bzdqr1bdmmec) (version source revid:alik@sun.com-20100615080431-gu5icn0anrt47dsx) (pib:16)
[7 Jul 2010 18:52]
Paul DuBois
Noted in 5.5.5 changelog. gcc 4.4.0 could fail to compile dtoa.c.