[Interest] Problem with: ICU 52.1 + Qt 5.1.1 + C MySQL Connector 6.0.2 + Windows XP
Thales Lange
thaleslange at gmail.com
Tue Dec 17 18:10:50 CET 2013
Dear Thiago Macieira.
In your last message you requested more debug information. So, I rebuilt
Qt with debug options and I generated a more detailed debug. Further, I
analyzed the debug information and I added more application debug.
I suspect the static function “QTextCode::codecForLocale()” is not well
behaviored with ICU 52.1. If you compare the app debug with and without
ICU 52.1 support you will notice:
1) With ICU 52.1: “QTextCode::codecForLocale()” is returning 0x0
2) Without ICU 52.1: “QTextCode::codecForLocale()” is return a valid pointer
Also, you can see the same behavior when comparing
QTextCodec::codecForName(mysql_character_set_name(mysql))
1) With ICU 52.1: it returns 0x0
2) Without ICU 52.1: it returns 0x3e4f48
Notes:
1) I am watching “QTextCode::codecForLocale()” and
“QTextCodec::codecForName(mysql_character_set_name(mysql))” because I
believe only these functions can change the variable: “QTextCodec
*MYSQLDriverPrivate::tc” [see stack #1 and #0]
2) You can find “QTextCodec *MYSQLDriverPrivate::tc” in:
qtbase\src\sql\drivers\mysql\qsql_mysql.cpp
Best regards,
Thales Lange.
On 16-12-2013 17:50, Thiago Macieira wrote:
> On segunda-feira, 16 de dezembro de 2013 16:25:46, Thales Lange wrote:
>> Dear Thiago Macieira,
>>
>> I attached to this e-mail the backtrace (GDB 7.6). Main Result:
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x68a11c03 in ZNK10QTextCodec11fromUnicodeERK7QString ()
>> from C:\test\Qt5Core.dll
>>
>> I didn't compile Qt itself with debug support. If you need more
>> information, ask me please. I am not used to gdb command line.
>
> To narrow it further down, I'll need debugging info.
>
> The function you listed above calls the virtual convertFromUnicode, which
> didn't show up in your stack trace and would indicate which codec it was
> trying to use and why it crashed.
>
> It's still possible that ICU is at fault here, but I can't prove it or
> disprove it right now.
>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
-------------- next part --------------
******************************WITH ICU 52.1******************************
##################function static QTextCode *codec(MYSQL *mysql)###############
mysql_character_set_name(mysql) : utf8
QTextCodec::codecForName(mysql_character_set_name(mysql)) : 0x0
###############################################################################
===============================================================================
#########################int main(int argc, char **argv)#######################
QTextCode::codecForLocale() : 0x0
Is Database open ? true
QSqlDatabase last Error : ""
-------------- next part --------------
******************************WITHOUT ICU 52.1*********************************
##################function static QTextCode *codec(MYSQL *mysql)###############
mysql_character_set_name(mysql) : utf8
QTextCodec::codecForName(mysql_character_set_name(mysql)) : 0x3e4f48
###############################################################################
===============================================================================
#########################int main(int argc, char **argv)#######################
QTextCode::codecForLocale() : 0x3e4eb8
Is Database open ? true
QSqlDatabase last Error : ""
is exec ok? : true
is next ok? : true
Value : "1"
###############################################################################
-------------- next part --------------
Starting program: C:\test\test.exe
[New Thread 3216.0xd70]
Program received signal SIGSEGV, Segmentation fault.
0x006593aa in QTextCodec::fromUnicode (this=0x0, str=...)
at codecs\qtextcodec.cpp:807
807 return convertFromUnicode(str.constData(), str.length(), 0);
#0 0x006593aa in QTextCodec::fromUnicode (this=0x0, str=...)
at codecs\qtextcodec.cpp:807
No locals.
#1 0x6ad818d6 in fromUnicode (tc=0x0, str=...)
at ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:122
No locals.
#2 0x6ad8363e in QMYSQLResult::reset (this=0x3e6b80, query=...)
at ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:704
encQuery = {d = 0x22fcd8}
numFields = 2293000
#3 0x67941f40 in QSqlQuery::exec (this=0x22fd90, query=...)
at kernel\qsqlquery.cpp:378
__PRETTY_FUNCTION__ = "bool QSqlQuery::exec(const QString&)"
#4 0x00401bb7 in main (argc=1, argv=0x3e2938) at main.cpp:30
app = {<QObject> = {
_vptr.QObject = 0x890fe8 <vtable for QCoreApplication+8>,
static staticMetaObject = {d = {superdata = 0x0,
stringdata = 0x826420 <qt_meta_stringdata_QObject>,
data = 0x826500 <qt_meta_data_QObject>,
static_metacall = 0x637084 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
extradata = 0x0}}, d_ptr = {d = 0x3e4298},
static staticQtMetaObject = {d = {superdata = 0x0,
stringdata = 0x8745a0 <qt_meta_stringdata_Qt>,
data = 0x87bf60 <qt_meta_data_Qt>, static_metacall = 0x0,
relatedMetaObjects = 0x0, extradata = 0x0}}},
static staticMetaObject = {d = {
superdata = 0x8260c0 <QObject::staticMetaObject>,
stringdata = 0x887480 <qt_meta_stringdata_QCoreApplication>,
data = 0x887640 <qt_meta_data_QCoreApplication>,
static_metacall = 0x688dfc <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
extradata = 0x0}}, static self = 0x22fd98}
db = {static defaultConnection =
0x67a06625 <_ZStL6ignore+419> "qt_sql_default_connection", d = 0x3e4618}
query = {d = 0x3e6ce0}
__PRETTY_FUNCTION__ = "int main(int, char**)"
A debugging session is active.
Inferior 1 [process 3216] will be killed.
Quit anyway? (y or n)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.cpp
Type: text/x-c++src
Size: 1122 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20131217/5f56c885/attachment.cpp>
-------------- next part --------------
#-------------------------------------------------
#
# Project created by QtCreator 2013-12-11T20:59:14
#
#-------------------------------------------------
QT += core sql
QT -= gui widgets
win32:DESTDIR = C:\test
CONFIG -= debug \
debug_and_release \
x11
CONFIG *= \
debug \
console
TARGET = test
TEMPLATE = app
SOURCES += main.cpp
More information about the Interest
mailing list