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.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.066 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.