xenome
7th May 2011, 17:51
Hi,
I'm not sure if this is a QT bug or something of my own doing, but the qbytearray that acts as the receive buffer for QTcpSocket crashes while performing a memcpy (called by resize)
The only socket read I perform is in the following slot code:
void DataFeed::readData(void)
{ //cout << "Reading data from device in slot..." << endl; QByteArray *pData = new QByteArray; *pData = mp_socket->readAll(); emit postData(pData); }
Here is my connection to the slot:
connect(mp_socket, SIGNAL(readyRead()), this, SLOT(readData()));
Here is my stack trace, from what I can tell the error is not generated because of my code or is related to the QByteArray I create on the heap.
0 memcpy /lib/x86_64-linux-gnu/libc.so.6 0 0x00007ffff66a6abb
1 QByteArray::realloc qbytearray.cpp 1424 0x00007ffff73fd56b
2 QByteArray::resize qbytearray.cpp 1389 0x00007ffff73fd9a9
3 QRingBuffer::reserve qringbuffer_p.h 158 0x00007ffff791e6df
4 QAbstractSocketPrivate::readFromSocket qabstractsocket.cpp 1158 0x00007ffff791912f
5 QAbstractSocketPrivate::canReadNotification qabstractsocket.cpp 614 0x00007ffff79194f5
6 QReadNotifier::event qnativesocketengine.cpp 1103 0x00007ffff7908791
7 QCoreApplicationPrivate::notify_helper qcoreapplication.cpp 867 0x00007ffff75024cf
8 QCoreApplication::notify qcoreapplication.cpp 813 0x00007ffff750254e
9 QCoreApplication::notifyInternal qcoreapplication.cpp 732 0x00007ffff75020a4
10 sendEvent qcoreapplication.h 215 0x00007ffff752fa3a
11 socketNotifierSourceDispatch qeventdispatcher_glib.cpp 110 0x00007ffff752fa3a
12 g_main_context_dispatch /lib/x86_64-linux-gnu/libglib-2.0.so.0 0 0x00007ffff5d5ebcd
13 ?? /lib/x86_64-linux-gnu/libglib-2.0.so.0 0 0x00007ffff5d5f3a8
14 g_main_context_iteration /lib/x86_64-linux-gnu/libglib-2.0.so.0 0 0x00007ffff5d5f639
15 QEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 415 0x00007ffff752fbcc
16 QEventLoop::processEvents qeventloop.cpp 149 0x00007ffff75013f5
17 QEventLoop::exec qeventloop.cpp 201 0x00007ffff7501646
18 QThread::exec qthread.cpp 490 0x00007ffff73f8014
19 DataFeed::run datafeed.cpp 103 0x000000000040c477
20 QThreadPrivate::start qthread_unix.cpp 266 0x00007ffff73faf5f
21 start_thread /lib/x86_64-linux-gnu/libpthread.so.0 0 0x00007ffff7157d8c
22 clone /lib/x86_64-linux-gnu/libc.so.6 0 0x00007ffff670204d
23 ?? 0 0x0000000000000000
I'm not sure if this is a QT bug or something of my own doing, but the qbytearray that acts as the receive buffer for QTcpSocket crashes while performing a memcpy (called by resize)
The only socket read I perform is in the following slot code:
void DataFeed::readData(void)
{ //cout << "Reading data from device in slot..." << endl; QByteArray *pData = new QByteArray; *pData = mp_socket->readAll(); emit postData(pData); }
Here is my connection to the slot:
connect(mp_socket, SIGNAL(readyRead()), this, SLOT(readData()));
Here is my stack trace, from what I can tell the error is not generated because of my code or is related to the QByteArray I create on the heap.
0 memcpy /lib/x86_64-linux-gnu/libc.so.6 0 0x00007ffff66a6abb
1 QByteArray::realloc qbytearray.cpp 1424 0x00007ffff73fd56b
2 QByteArray::resize qbytearray.cpp 1389 0x00007ffff73fd9a9
3 QRingBuffer::reserve qringbuffer_p.h 158 0x00007ffff791e6df
4 QAbstractSocketPrivate::readFromSocket qabstractsocket.cpp 1158 0x00007ffff791912f
5 QAbstractSocketPrivate::canReadNotification qabstractsocket.cpp 614 0x00007ffff79194f5
6 QReadNotifier::event qnativesocketengine.cpp 1103 0x00007ffff7908791
7 QCoreApplicationPrivate::notify_helper qcoreapplication.cpp 867 0x00007ffff75024cf
8 QCoreApplication::notify qcoreapplication.cpp 813 0x00007ffff750254e
9 QCoreApplication::notifyInternal qcoreapplication.cpp 732 0x00007ffff75020a4
10 sendEvent qcoreapplication.h 215 0x00007ffff752fa3a
11 socketNotifierSourceDispatch qeventdispatcher_glib.cpp 110 0x00007ffff752fa3a
12 g_main_context_dispatch /lib/x86_64-linux-gnu/libglib-2.0.so.0 0 0x00007ffff5d5ebcd
13 ?? /lib/x86_64-linux-gnu/libglib-2.0.so.0 0 0x00007ffff5d5f3a8
14 g_main_context_iteration /lib/x86_64-linux-gnu/libglib-2.0.so.0 0 0x00007ffff5d5f639
15 QEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 415 0x00007ffff752fbcc
16 QEventLoop::processEvents qeventloop.cpp 149 0x00007ffff75013f5
17 QEventLoop::exec qeventloop.cpp 201 0x00007ffff7501646
18 QThread::exec qthread.cpp 490 0x00007ffff73f8014
19 DataFeed::run datafeed.cpp 103 0x000000000040c477
20 QThreadPrivate::start qthread_unix.cpp 266 0x00007ffff73faf5f
21 start_thread /lib/x86_64-linux-gnu/libpthread.so.0 0 0x00007ffff7157d8c
22 clone /lib/x86_64-linux-gnu/libc.so.6 0 0x00007ffff670204d
23 ?? 0 0x0000000000000000