Hi.
Your version of QtSerialPort is too very old (according to call-stack).
Please update to latest (e.g. to 5.3.2/5.3.3).
BR,
Denis
29.10.2014 21:35, Murphy, Sean пишет:
I’m getting a weird issue where I can repeatedly cause a crash to
happen in QSerialPort if I attempt to close the serial port when I’m
in a slot connected to the readyRead() signal, and I’m just wondering
if I’m doing something weird.
I’ve got a class that inherits from QSerialPort. I instantiate this
object in the UI thread but immediately move it to a separate thread.
This object has a slot, disconnectFromDevice(), that sends a reset
command to the serial device.
So the way I intended the software to work is the user clicks the
disconnect button in the UI thread, which sends a signal to the serial
port object. That object sends the reset command to the serial device
and the serial device responds with an acknowledge response. The
acknowledge response triggers the QSerialPort::readyRead() signal,
which triggers my readyRead() slot. I parse the acknowledge, then
emit a signal back to the UI thread letting the UI know that the
disconnect was successful, and then call QSerialPort::close() in the
serial port object (still inside of my readyRead() slot).
When I execute setup in a debug build, at this point the application
crashes with a SIGSEV. For some reason it kicks me into the
disassembler instead of breaking in my code. If I comment out the
close() call, the segfault doesn’t happen.
Below is what’s shown in the call stack, but since none of my code is
shown in the call stack, I don’t know if I’m crashing on the close()
call itself, or if I crash sometime later because I’m doing something
when the port isn’t open. If I set a breakpoint anywhere in my
readyRead() slot the crash DOESN’T occur. I only know that removing
the close() call removes the crash.
Any ideas? Specifically, why am I not seeing any of my calls in the
call stack?
Sean
0 ReadOverlappedCompletionNotifier::processCompletionRoutine
qserialport_win.cpp 188 0x6704e8ed
1 AbstractOverlappedEventNotifier::event qserialport_win.cpp
119 0x6704e6d2
2 QApplicationPrivate::notify_helper qapplication.cpp
3467 0xa9ede0f
3 QApplication::notify qapplication.cpp
2888 0xa9eb72b
4 QCoreApplication::notifyInternal qcoreapplication.cpp
878 0x6b91b572
5 QCoreApplication::sendEvent qcoreapplication.h 232
0x6b9bee2b
6 QEventDispatcherWin32Private::activateEventNotifier
qeventdispatcher_win.cpp 335 0x6b9646e8
7 QEventDispatcherWin32::processEvents
qeventdispatcher_win.cpp 759 0x6b965de7
8 QEventLoop::processEvents qeventloop.cpp 136 0x6b919650
9 QEventLoop::exec qeventloop.cpp
212 0x6b9198eb
10 QThread::exec qthread.cpp 509 0x6b794f85
11 QThread::run qthread.cpp 576 0x6b7950ed
12 QThreadPrivate::start qthread_win.cpp
347 0x6b797ac2
13 msvcrt!_itow_s C:\windows\syswow64\msvcrt.dll 0x775d1287
14 msvcrt!_endthreadex C:\windows\syswow64\msvcrt.dll
0x775d1328
15 KERNEL32!BaseCleanupAppcompatCacheSupport
C:\windows\syswow64\kernel32.dll 0x7594338a
16 ?? 0x16d0ffd4
17 ntdll!RtlpNtSetValueKey C:\windows\system32\ntdll.dll 0x77c19f72
18 ?? 0x166b7660
19 ntdll!RtlpNtSetValueKey C:\windows\system32\ntdll.dll 0x77c19f45
20 msvcrt!_endthreadex C:\windows\syswow64\msvcrt.dll
0x775d12e5
21 ??
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest