Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.0.2, 6.1.0 Beta3
-
None
Description
I'm opening a meta-bug to centralize the discussions regarding the behavioral and performance regressions of QList / QVector in Qt 6.0.
These are causing a number of other bugs, including memory leaks, performance degradations and whole crashes. (See the linked tasks).
A lot of discussion happened in the gerrit fixes for those bugs, making them hard to find and hard to track (discussions start in one issue and continue in another).
To summarize some of issues, at this moment:
- Q6Vector regressed API against Q5Vector: for instance, capacity() contract is now violated due to the prepend space.
- In general, Q6Vector will soft-leak memory (using more than necessary) because it will grow when prepending with no space on the left (but space available on the right). QTBUG-92912
QTBUG-91801 - The current implementation of the prepend optimization degenerates on some inputs and triggers OOM.
QTBUG-91360
Attachments
Issue Links
- relates to
-
QTBUG-92941 REG 5->6: QVector size() does not reach capacity() before reallocating
- Reported
-
QTBUG-92912 Recursive QTimer:singleshot causes memory leak.
- Open
-
QTBUG-91360 [REG 5.15-6.0] ListView crash with scrollbar scroll
- Closed
-
QTBUG-91801 Potential memory leak in sending queued signals?
- Closed
Gerrit Reviews
For Gerrit Dashboard: QTBUG-93019 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
340586,15 | Resurrect data moves in QList | 6.1.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345258,8 | Add tests for QtPrivate::q_relocate_overlap_n | 6.1.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345331,15 | Add more tests for QList/QString/QBA | 6.1.0 | qt/qtbase | Status: MERGED | -1 | 0 |
345336,9 | Change QList's insert() and emplace() to always invalidate [pos, end()) | 6.1.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345606,5 | Resurrect data moves in QList | dev | qt/qtbase | Status: MERGED | +2 | 0 |
345609,2 | Resurrect data moves in QList | 6.1 | qt/qtbase | Status: MERGED | +2 | 0 |
345610,2 | Resurrect data moves in QList | 6.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345611,3 | Change QList's insert() and emplace() to always invalidate [pos, end()) | 6.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345612,4 | Add tests for QtPrivate::q_relocate_overlap_n | dev | qt/qtbase | Status: MERGED | +2 | 0 |
345613,5 | Change QList's insert() and emplace() to always invalidate [pos, end()) | dev | qt/qtbase | Status: MERGED | +2 | 0 |
345614,3 | Change QList's insert() and emplace() to always invalidate [pos, end()) | 6.1 | qt/qtbase | Status: MERGED | +2 | 0 |
345615,2 | Add tests for QtPrivate::q_relocate_overlap_n | 6.1 | qt/qtbase | Status: MERGED | +2 | 0 |
345616,2 | Add tests for QtPrivate::q_relocate_overlap_n | 6.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345617,4 | Add more tests for QList/QString/QBA | dev | qt/qtbase | Status: MERGED | +2 | 0 |
345620,2 | Add more tests for QList/QString/QBA | 6.0 | qt/qtbase | Status: MERGED | +2 | 0 |
345623,2 | Add more tests for QList/QString/QBA | 6.1 | qt/qtbase | Status: MERGED | +2 | 0 |
346493,3 | Introduce side-aware methods to QList: resize and reserve | dev | qt/qtbase | Status: DEFERRED | 0 | 0 |
350928,4 | Introduce side-aware capacity-like methods to QList | dev | qt/qtbase | Status: DEFERRED | 0 | 0 |