Bug #16287 '(int) i8_data == rc' failure in mysql_client_test
Submitted: 8 Jan 2006 20:16 Modified: 13 Jan 2006 21:16
Reporter: Christian Carey Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:5.0.18 OS:Linux (SuSE Linux 10.0)
Assigned to: CPU Architecture:Any

[8 Jan 2006 20:16] Christian Carey
Description:
I've compiled MySQL 5.0.18 on SuSE Linux 10.0, using the distribution's gcc [4.0.2 20050901 (prerelease)] and a self-compiled OpenSSL 0.9.8a [the distribution comes with 0.9.7g]. When running mysql-test-run [using the distribution's Perl 5.8.7, self-installing DBI 1.50 and DBD::mysql 3.0002], the mysql_client_test test reports a failure in this manner:

Errors are (from /usr/local/mysql/mysql-test/var/log/mysqltest-time) :
mysql_client_test.c:3869: 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)

The two error lines above were the only contents of the mysqltest-time file. Note that this test also failed individually when mysql-test-run was run with the --local mysql_client_test option. Both var/log/mysqltest.trace and var/log/mysql_client_test.trace files are available, which were created by using both the --debug and the --local mysql_client_test options.

Given that the failure was with checking the value of a bound and fetched tiny integer (I presume that the int8 type is a signed char), perhaps one of the possible causes could be that it's some sort of bug (e.g. a casting bug) with this particular version of gcc?

How to repeat:
Install SuSE Linux 10.0. Download/install all security patches/bug fixes from suse.com using its yast2 utility. Download OpenSSL 0.9.8a, and compile it like this:

./config --prefix='/usr/local' --openssldir='/usr/local/openssl'\
 no-sse2 threads shared zlib-dynamic no-rc5 no-mdc2 no-idea\
 `perl -e 'use Config; print $Config{"ccflags"}'`\
 `perl -e 'use Config; print $Config{"optimize"}'`
make depend
make
make test
make install

After its installation, update both the ${HOME}/.profile file and the shell's current environment to include /usr/local/lib in the LD_LIBRARY_PATH environment variable. Follow the instructions in MySQL 5.0.18's INSTALL-SOURCE file, but using this configure command line:

CFLAGS='-O3 -mpentiumpro' CXX='gcc'\
 CXXFLAGS='-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti'\
 ./configure --prefix='/usr/local/mysql' --enable-assembler --with-debug\
 --with-charset='utf8' --with-extra-charsets='all'\
 --with-collation='utf8_unicode_ci' --with-big-tables\
 --with-openssl='/usr/local' --enable-thread-safe-client

Start mysql_safe according to INSTALL-SOURCE, and run mysql-test-run, with or without the --local mysql_client_test option, with or without the --debug option.
[8 Jan 2006 20:22] Christian Carey
This is a compressed var/log/mysql_client_trace file for bug #16287.

Attachment: mysql_client_test.trace.gz (application/x-gzip, text), 28.03 KiB.

[9 Jan 2006 9:03] Hartmut Holzgraefe
works fine for me using gcc 4.0.2 (release version) and openssl 0.9.8a 
(both self compiled on Suse 9.3)
[13 Jan 2006 21:16] Christian Carey
I had no success with using a self-compiled gcc 4.0.2. After reverting to a self-compiled gcc 3.4.5, the MySQL test suite passes with no problems.