Bug #33556 mysql_real_connect bring about segfault when charset files don't exist on disk
Submitted: 28 Dec 2007 15:49 Modified: 16 Aug 2008 13:36
Reporter: Alexander Golovnyov Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Server: C API (client library) Severity:S1 (Critical)
Version:5.0.45, 5.0.27 OS:Linux (CentOS 4.3)
Assigned to: CPU Architecture:Any
Tags: mysql_real_connect charset

[28 Dec 2007 15:49] Alexander Golovnyov
Description:
mysql_real_connect bring about segfault when charset files don't exist on disk.

Program terminated with signal 11, Segmentation fault.
#0  0x0808797c in my_stat (path=0xb7da2880 "/usr/share/mysql/charsets/Index.xml", stat_area=0xb7da27e0, my_flags=0) at my_lib.c:650
(gdb) 

problem disappear when I install MySQL-server-standard

How to repeat:
may be installed:
MySQL-devel-standard
MySQL-shared-standard
BUT DON'T INSTALL -> MySQL-server-standard package. (have charsets)

mysql_init(&m_MySQLEnv);
bool bSafe = mysql_thread_safe();
	
mysql_real_connect(&m_MySQLEnv,
		m_sHost.c_str(), m_sUserName.c_str(), m_sPWD.c_str(),
		'DBNAME', 0, 0, CLIENT_MULTI_STATEMENTS);
[29 Dec 2007 15:57] Valeriy Kravchuk
Thank you for a problem report. Please, try to repeat with a newer version, 5.0.45, and inform about the results.
[4 Jan 2008 12:34] Alexander Golovnyov
I just tested it on 5.0.45(MySQL-devel-community-5.0.45-0.rhel4.i386.rpm)
Result is SAME!
[4 Jan 2008 12:35] Alexander Golovnyov
gdb backtrace:
(gdb) frame 5
#5  0x080993ac in mysql_real_connect ()
(gdb) frame 4
#4  0x08098d08 in mysql_init_character_set () 
(gdb) frame 3
#3  0x0808575c in get_charset_by_csname () 
(gdb) frame 2
#2  0x080852db in init_available_charsets () 
(gdb) frame 1
#1  0x08084fe6 in my_read_charset_file () 
(gdb) frame 0
#0  0x08086844 in my_stat ()
[4 Jul 2008 13:23] MySQL Verification Team
Could you please provide the complete C test code. Thanks in advance.
[7 Jul 2008 8:59] Alexander Golovnyov
that is C API code for repeat this bug:

MYSQL* pMyRes = mysql_init(&m_MySQLEnv);

mysql_real_connect(&m_MySQLEnv,m_sHost.c_str(), m_sUserName.c_str(), m_sPWD.c_str(),	pszDBName, 0, pszUSock, CLIENT_MULTI_STATEMENTS)
[16 Jul 2008 13:36] Susanne Ebrecht
Please try this:

MySQL mysql;

mysql_init(&mysql);

mysql_real_connect(&mysql,"host","user","pw","db",port,NULL,0);
[16 Aug 2008 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".