Qt+linux调用数据库查询的时候崩溃
在用Qt4.8.5在嵌入式linux上开发的应用程序,但是在程序老化过程中突然发生了崩溃
通过gdb查看调用堆栈发现在调用QSqlquery.exec的时候崩溃掉了,应用场景是5s调用一次数据库查询;堆栈信息如下
(gdb)
#0 0x7639bc48 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#1 0x76396900 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#2 0x76398324 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#3 0x76399020 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#4 0x76386c60 in QSqlQuery::exec() ()
from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#5 0x000ea7e4 in SqliteInterface::queryGyPatientData (this=0x221c4e8,
filter=..., sign=true)
at ../CelercareV5-dingzhi/DataBase/SqliteInterface.cpp:677
#6 0x00509858 in CLS_MyHttpLib::getReportResultIdList (this=0x20089e8,
lastDataTime=..., resultIdList=...)
at ../CelercareV5-dingzhi/cls_myhttplib.cpp:193
#7 0x76d79fa8 in HttpReportTestResult::startReportTestResult() ()
from /usr/local/freescale/qt4.8.5/lib/libHttpCommonCpp.so
#8 0x76d7a4e8 in reportTestResultThreadRun(void*) ()
from /usr/local/freescale/qt4.8.5/lib/libHttpCommonCpp.so
#9 0x755f5b10 in start_thread () from /lib/libpthread.so.0
#10 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) thread apply all bt
Thread 14 (Thread 0x6e7c8460 (LWP 1417)):
#0 0x75406730 in malloc () from /lib/libc.so.6
#1 0x763b4858 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 13 (Thread 0x7536b000 (LWP 1075)):
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x0003ff36 in ScanEngineCtl::SetScan (
this=<error reading variable: Cannot access memory at address 0xfffffff0>)
at ../CelercareV5-dingzhi/CmdComm/ScanEngineCtl.cpp:367
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 12 (Thread 0x70fc8460 (LWP 1408)):
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x00041b30 in IpLineEdit::setDotLabel (this=0x0)
at ../CelercareV5-dingzhi/CustomUI/iplineedit.cpp:100
#3 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 11 (Thread 0x707c8460 (LWP 1411)):
---Type <return> to continue, or q <return> to quit---
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x000cb820 in Ui_Debug::retranslateUi (this=0xae, Debug=0x29e9512)
at ./ui_debugdialog.h:4205
#3 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 10 (Thread 0x71fc8460 (LWP 1404)):
#0 0x755fa658 in pthread_cond_timedwait@@GLIBC_2.4 ()
from /lib/libpthread.so.0
#1 0x7567804c in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#2 0x7567869c in QThread::msleep(unsigned long) ()
from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#3 0x004380fc in QBluetoothThread::run (this=0x23174a0)
at ../CelercareV5-dingzhi/bluetooth/qbluetooth.cpp:253
#4 0x7567916c in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#5 0x755f5b10 in start_thread () from /lib/libpthread.so.0
#6 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 9 (Thread 0x72fc8460 (LWP 1106)):
#0 0x755fa658 in pthread_cond_timedwait@@GLIBC_2.4 ()
from /lib/libpthread.so.0
---Type <return> to continue, or q <return> to quit---
#1 0x7567804c in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#2 0x7567869c in QThread::msleep(unsigned long) ()
from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#3 0x003b6708 in Comdata::run (this=0x1ffa9c0)
at ../CelercareV5-dingzhi/CmdComm/comdata.cpp:560
#4 0x7567916c in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#5 0x755f5b10 in start_thread () from /lib/libpthread.so.0
#6 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 8 (Thread 0x6efc8460 (LWP 1416)):
#0 0x7542ba00 in nanosleep () from /lib/libc.so.6
#1 0x7542b9f4 in nanosleep () from /lib/libc.so.6
#2 0x75759060 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 7 (Thread 0x74288460 (LWP 1104)):
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x756cef34 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 6 (Thread 0x6ffc8460 (LWP 1412)):
---Type <return> to continue, or q <return> to quit---
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x000926fa in Ui_Debug::setupUi (this=0x0, Debug=0x0)
at ./ui_debugdialog.h:978
#3 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 5 (Thread 0x6d8f4460 (LWP 1456)):
#0 0x7545bf84 in epoll_wait () from /lib/libc.so.6
#1 0x76d51b90 in Epoll::wait(int) ()
from /usr/local/freescale/qt4.8.5/lib/libHttpCommonCpp.so
#2 0x76d5999c in recvThreadRun(void*) ()
from /usr/local/freescale/qt4.8.5/lib/libHttpCommonCpp.so
#3 0x755f5b10 in start_thread () from /lib/libpthread.so.0
#4 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 4 (Thread 0x6f7c8460 (LWP 1414)):
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x756cef34 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
---Type <return> to continue, or q <return> to quit---
Thread 3 (Thread 0x717c8460 (LWP 1407)):
#0 0x755fa658 in pthread_cond_timedwait@@GLIBC_2.4 ()
from /lib/libpthread.so.0
#1 0x7567804c in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#2 0x7567869c in QThread::msleep(unsigned long) ()
from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#3 0x00039e68 in MyDelay::mdelay (milsec=2000)
at ../CelercareV5-dingzhi/CmdComm/MyDelay.h:23
#4 0x0045e728 in BlueTooth::run (this=0x22e6718)
at ../CelercareV5-dingzhi/CmdComm/BlueTooth.cpp:439
#5 0x7567916c in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtCore.so.4
#6 0x755f5b10 in start_thread () from /lib/libpthread.so.0
#7 0x7545b958 in clone () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 2 (Thread 0x74c5e460 (LWP 1080)):
#0 0x754550ec in select () from /lib/libc.so.6
#1 0x754550e0 in select () from /lib/libc.so.6
#2 0x00000100 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 1 (Thread 0x6d0f4460 (LWP 1487)):
#0 0x7639bc48 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
---Type <return> to continue, or q <return> to quit---
#1 0x76396900 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#2 0x76398324 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#3 0x76399020 in ?? () from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#4 0x76386c60 in QSqlQuery::exec() ()
from /usr/local/freescale/qt4.8.5/lib/libQtSql.so.4
#5 0x000ea7e4 in SqliteInterface::queryGyPatientData (this=0x221c4e8,
filter=..., sign=true)
at ../CelercareV5-dingzhi/DataBase/SqliteInterface.cpp:677
#6 0x00509858 in CLS_MyHttpLib::getReportResultIdList (this=0x20089e8,
lastDataTime=..., resultIdList=...)
at ../CelercareV5-dingzhi/cls_myhttplib.cpp:193
#7 0x76d79fa8 in HttpReportTestResult::startReportTestResult() ()
from /usr/local/freescale/qt4.8.5/lib/libHttpCommonCpp.so
#8 0x76d7a4e8 in reportTestResultThreadRun(void*) ()
from /usr/local/freescale/qt4.8.5/lib/libHttpCommonCpp.so
#9 0x755f5b10 in start_thread () from /lib/libpthread.so.0
#10 0x7545b958 in clone () from /lib/libc.so.6