[Interest] Crash in QSerialPort when closing?
Denis Shienkov
denis.shienkov at gmail.com
Wed Oct 29 19:47:28 CET 2014
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 at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20141029/5c6ef059/attachment.html>
More information about the Interest
mailing list