Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
4.7.3, 4.7.4, 4.8.0
-
None
-
Windows
-
0307c008bf71e1272385d0e7f7c8d2c5a1ba6526
Description
It is possible to be in this situation (from debugger, this condition is hit, and then Thread n is blocked)
Thread n
QLocalSocket::close() -> QWindowsPipeWriter::~QWindowsPipeWriter() -> terminate()
Thread QWindowsPipeWriter
emit bytesWritten(totalWritten);
Because Thread QWindowsPiperWriter is holding signalSlotLock(object of QWindowsPipeWriter) when emitting and be terminated, and then in Thread n
QWindowsPipeWriter::~QWindowsPipeWriter() -> QThread::~QThread() -> QObject::~Object() will always wait signalSlotLock(object of QWindowsPipeWriter) and be blocked.
Attachments
Issue Links
- relates to
-
QTBUG-38185 QWindowsPipeWriter blocks if the reading process hangs
- Closed
For Gerrit Dashboard: QTBUG-23378 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
83649,4 | fix 30 seconds wait in QWindowsPipeWriter's destructor | stable | qt/qtbase | Status: ABANDONED | -1 | 0 |
126424,3 | prevent deadlock when destroying QWindowsPipeWriter | 5.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
126425,5 | make QWindowsPipeWriter race-free | 5.5 | qt/qtbase | Status: ABANDONED | -1 | 0 |
152304,6 | Make QWindowsPipeWriter thread-free. | 5.6 | qt/qtbase | Status: MERGED | +2 | 0 |