Bug #31228 Error:Run-Time Check Failure #3 - The variable 'MYSQLlval' is being used without
Submitted: 27 Sep 2007 10:57 Modified: 17 Sep 2009 20:43
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:mysql-5.1.24-rc-winx64 OS:Windows (XP 64-bit)
Assigned to: CPU Architecture:Any

[27 Sep 2007 10:57] Shane Bester
Description:
Too many Run-Time Check Failure #3 present in 5.0.48 winx64.

E:\mysql-enterprise-gpl-5.0.48-winx64\bin>mysqld-debug --console --skip-grant-tables --skip-name-resolve
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
070927 12:53:44  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
070927 12:53:45  InnoDB: Started; log sequence number 0 151274
070927 12:53:45 [Note] mysqld-debug: ready for connections.
Version: '5.0.48-enterprise-gpl-debug-log'  socket: ''  port: 3306  MySQL Enterprise Server - Debug (GPL)
Error:Run-Time Check Failure #3 - The variable 'MYSQLlval' is being used without being defined. At :0
Error:Run-Time Check Failure #3 - The variable 'MYSQLlval' is being used without being defined. At :0

How to repeat:
select now();
[16 Oct 2007 6:57] Sadao Hiratsuka
Hi, I have the same problem on XP 32bit.
And I think it may be GNU Bison's bug.

*Bison CangeLog

2005-07-24  Paul Eggert
	* NEWS: Version 2.0b.

...
2005-07-09  Paul Eggert
	* data/yacc.c (yyparse): Undo previous patch.  Instead,
	set yylsp[0] and yyvsp[0] only if the initial action
	sets yylloc and yylval, respectively.

	* data/yacc.c (yyparse): In the initial action, set
	yylsp[0] and yyvsp[0] rather than yylloc and yylval.
	This avoids the use of undefined variables if the initial
	action does not set yylloc and/or yylval.

This bug have been fixed 2 years ago,
But for example RHEL4 has bison 1.875c and this bug is not fiex yet.

Here is a simple workaround.

sql/sql_yacc.cpp
int yyparse()

/* The semantic value of the look-ahead symbol.  */
YYSTYPE yylval;
=> YYSTYPE yylval = { 0 };
[4 Dec 2007 10:27] Valeriy Kravchuk
Please, try to repeat with a newer version, 5.0.50, 5.0.52 or 5.0-BK, and inform about the results.
[5 Jan 2008 0: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".
[5 Jan 2008 14:09] Valeriy Kravchuk
Feedback is still needed, for 5.0.54.
[29 Jan 2008 12:00] MySQL Verification Team
seems fixed in 5.0.56 x64
[11 Feb 2008 10:21] MySQL Verification Team
re-opening because this affects mysqld-debug.exe in the 5.1.23-rc2 package.

E:\mysql-5.1.23-rc-winx64\bin>mysqld-debug --console --skip-grant-tables --skip-name-resolve
<cut>
080211 12:05:50 [Note] mysqld-debug: ready for connections.
Version: '5.1.23-rc-community-debug'  socket: ''  port: 3306  MySQL Community Server - Debug (GPL)
Error:Run-Time Check Failure #3 - The variable 'MYSQLlval' is being used without being defined. At :0
Error:Run-Time Check Failure #3 - The variable 'MYSQLlval' is being used without being defined. At :0
Error:Run-Time Check Failure #3 - The variable 'MYSQLlval' is being used without being defined. At :0
[11 Apr 2008 9:40] MySQL Verification Team
still affects mysql-5.1.24-rc-winx64 mysqld-debug.exe
[5 Jun 2008 13:23] Paul McCullagh
I can confirm that this bug still occurs with MySQL 5.1.24.

I can repeat the bug a 32-bit Windows XP machine. All you need to do us build a debug version. The error occurs when you execute: SHOW DATABASES; (and just about any statement).

You can "fix" the problem by editing sql_yacc.cc, line 15192 (+/-):

Change:

YYSTYPE yylval;

to

YYSTYPE yylval = { 0 };

This is generated code, so this looks very much like a problem in bison.
[5 Jun 2008 13:36] Paul McCullagh
I have Bison 2.1.

This seems to be the latest versions for Windows although it was built on Nov. 19, 2005.

This version still has the bug. If there is a newer version, please post a link!
[19 Mar 2009 0:07] MySQL Verification Team
I couldn't repeat with latest source server:

c:\dbs>5.1\bin\mysqld-debug --console --skip-grant-tables --skip-name-resolve
090318 21:04:34  InnoDB: Started; log sequence number 0 454966298
090318 21:04:36 [Note] 5.1\bin\mysqld-debug: ready for connections.
Version: '5.1.34-Win X64 revno: 2839-debug-log'  socket: ''  port: 3510  Source distribution
[17 Sep 2009 20:43] MySQL Verification Team
this is no longer repeatable with recent 5.1.38 versions.