With the introduction of Qt 6 we encountered a memory leak which seems to be caused by sending queued signals.
I attached an example project along with a heaptrack summary that points to some QByteArray reallocation when queued_activate for a signal is called.
The sample project is quite simple: A producer generates some signals in a thread. These signals are connected as Qt::QueuedConnections to a slot of an object in the main thread.
If I do something wrong in connection the thread please let me know
Btw, I made the same test with Qt 5.15 and the memory usage was stable.
|For Gerrit Dashboard: QTBUG-91801|
|344081,3||QPostEventList: port to std::vector||dev||qt/qtbase||Status: NEW||-1||0|
|340105,1||Fix QList::remove(0, ...) case||dev||qt/qtbase||Status: ABANDONED||-1||0|
|340586,15||Resurrect data moves in QList||6.1.0||qt/qtbase||Status: MERGED||+2||0|
|341360,3||Shift data left in QList::remove() when too much free space at begin||dev||qt/qtbase||Status: ABANDONED||-1||0|
|343627,1||WIP: Test cyclic reinsertion into QList||dev||qt/qtbase||Status: ABANDONED||-2||0|
|344244,3||Teach QList to readjust its free space||dev||qt/qtbase||Status: ABANDONED||-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|