| Bug #19694 | prepared statements broken when compiling with gcc-4 | ||
|---|---|---|---|
| Submitted: | 10 May 2006 19:36 | Modified: | 3 Jul 2006 22:09 |
| Reporter: | Jens Theisen | ||
| Status: | Closed | ||
| Category: | Server: PS | Severity: | S2 (Serious) |
| Version: | 4.1.19 | OS: | Linux (GNU/Linux) |
| Assigned to: | Bugs System | Target Version: | |
[10 May 2006 19:36]
Jens Theisen
[10 May 2006 19:39]
Jens Theisen
I should add the tested architectures: AMD64 and x86.
[11 May 2006 13:13]
Hartmut Holzgraefe
Fails with both gcc-4.0.3 and gcc-4.0.2 (default compiler on SuSE 10.0) TEST RESULT ------------------------------------------------------- mysql_client_test [ fail ] Errors are (from /home/hartmut/projects/mysql/releases/mysql-4.1.19/mysql-test/var/log/mysqltest-time) : mysql_client_test.c:3573: check failed: '(int) i8_data == rc' mysqltest: At line 10: command "$MYSQL_CLIENT_TEST --getopt-ll-test=25600M" failed (the last lines may be the most important ones)
[12 May 2006 14:38]
Chad MILLER
I can't reproduce. mysql-4.1__bug19694/mysql-test $ ./mysql-test-run.pl --debug mysql_client_test TEST RESULT ------------------------------------------------------- mysql_client_test [ pass ] ------------------------------------------------------- Ending Tests Shutting-down MySQL daemon Master(s) shutdown finished Slave(s) shutdown finished All 1 tests were successful. mysql-4.1__bug19694/mysql-test $ gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=pentium4 --enable-checking=release i486-linux-gnu Thread model: posix gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
[12 May 2006 16:33]
Jani Tolonen
Unable to reproduce with latest 4.1 source, last changeset: ChangeSet@1.2470.1.3, 2006-05-10 21:53:01+02:00, kent@mysql.com mysql.spec.sh: Compile in all character sets in Max (bug#14918) gcc --version gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux) Copyright (C) 2005 Free Software Foundation, Inc. uname -a Linux a193-229-222-105 2.6.13-15.8-smp #1 SMP Tue Feb 7 11:07:24 UTC 2006 i686 i686 i386 GNU/Linux SuSE 10 installation. The test passes.
[12 May 2006 17:49]
Chad MILLER
Ah, I can now. The problem disappears if one turns on our debugging flags. I'm claiming this bug.
[5 Jun 2006 12:06]
Michael Widenius
Verified with 5.1.12 tree and gcc 4.0.2 It's look like this is a client only problem (either mysql_client_test or libmysql.c) as this only happens with a client compiled with optimzation (and maybe with gcc 4.0?) becasue if I recompile just the client part and run it against an optimized mysqld version, the test succeeds. Fast way to test this is to start mysqld in a debugger and run from the command line: ./tests/mysql_client_test test_fetch_float Until we know the exact cause of the problem, we should treat this as a critical error as we don't know what other similar errors could exists
[5 Jun 2006 12:24]
Konstantin Osipov
Bug#20266 has been marked as a duplicate of this bug.
[6 Jun 2006 6:13]
Elliot Murphy
Bug#20175 has been marked a duplicate of bug#20266, which was marked a duplicate of this bug. Setting to P1 as Bug#20175 is a crash.
[30 Jun 2006 1:23]
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/8519
[30 Jun 2006 2:50]
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/8526
[30 Jun 2006 16:52]
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 bug fix. More information about accessing the source trees is
available at
http://www.mysql.com/doc/en/Installing_source_tree.html
This bug affected prepared statements with result sets that returned float (but not not
double) values that was bound to an int8 value.
The problem was wrong cast usage that caused gcc 4.0 to produce wrong code when using
both options: -fstrict-aliasing and -fschedule-insns2, which are set when using -O2.
(This was found by changing -O3 in libmysql/Makefile to -O1 and add different -O2 options
to compile line until test started failing)
Fix will be in 4.0.21, 5.0.24 and 5.1.13
[30 Jun 2006 16:52]
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 bug fix. More information about accessing the source trees is
available at
http://www.mysql.com/doc/en/Installing_source_tree.html
This bug affected prepared statements with result sets that returned float (but not not
double) values that was bound to an int8 value.
The problem was wrong cast usage that caused gcc 4.0 to produce wrong code when using
both options: -fstrict-aliasing and -fschedule-insns2, which are set when using -O2.
(This was found by changing -O3 in libmysql/Makefile to -O1 and add different -O2 options
to compile line until test started failing)
Fix will be in 4.1.21, 5.0.24 and 5.1.13
[3 Jul 2006 22:09]
Paul DuBois
Noted in 4.1.21, 5.0.24, and 5.1.12 (there is no 5.1.13 yet) changelogs. A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0.
[13 Jul 2006 5:42]
Paul DuBois
5.0.x fix went to 5.0.25 instead.
[29 Sep 2006 0:40]
Joshua Hoblitt
I just encountered this exact same issue building 4.1.21 on amd64 with gcc 4.1.1. Is this fix really in 4.1.21 or is it actually in 4.1.22? Rebuliding with gcc 3.4.6 resolved the issue.
