Skip to content
Commit 64c9c7aa authored by Milian Wolff's avatar Milian Wolff
Browse files

Do not leak CollectionExecuteWrapper of dequeued collections

When the collection gets dequeued the execute wrapper never got
cleanup called, thus it would get leaked. This patch fixes it:
```
Direct leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7fc7c54e2002 in operator new(unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7fc7c4ec67a2 in ThreadWeaver::Collection::aboutToBeQueued_locked(ThreadWeaver::QueueAPI*) /home/milian/projects/kde/src/frameworks/threadweaver/src/collection.cpp:77
    #2 0x7fc7c4f13245 in ThreadWeaver::Job::aboutToBeQueued(ThreadWeaver::QueueAPI*) /home/milian/projects/kde/src/frameworks/threadweaver/src/job.cpp:138
    #3 0x7fc7c4f6b8bb in ThreadWeaver::Weaver::enqueue_p(QList<QSharedPointer<ThreadWeaver::JobInterface> > const&) /home/milian/projects/kde/src/frameworks/threadweaver/src/weaver.cpp:221
    #4 0x7fc7c4f974e3 in ThreadWeaver::WeaverImplState::enqueue(QList<QSharedPointer<ThreadWeaver::JobInterface> > const&) /home/milian/projects/kde/src/frameworks/threadweaver/src/weaverimplstate.cpp:59
    #5 0x7fc7c4f6ad52 in ThreadWeaver::Weaver::enqueue(QList<QSharedPointer<ThreadWeaver::JobInterface> > const&) /home/milian/projects/kde/src/frameworks/threadweaver/src/weaver.cpp:207
    #6 0x7fc7c4f4048b in ThreadWeaver::Queue::enqueue(QList<QSharedPointer<ThreadWeaver::JobInterface> > const&) /home/milian/projects/kde/src/frameworks/threadweaver/src/queue.cpp:169
    #7 0x7fc7c4f4084e in ThreadWeaver::Queue::enqueue(QSharedPointer<ThreadWeaver::JobInterface> const&) /home/milian/projects/kde/src/frameworks/threadweaver/src/queue.cpp:174
    #8 0x55888b3c19a9 in QSharedPointer<ThreadWeaver::JobInterface> ThreadWeaver::enqueue<QSharedPointer<ThreadWeaver::JobInterface> >(ThreadWeaver::Queue*, QSharedPointer<ThreadWeaver::JobInterface>) /home/milian/projects/kde/src/frameworks/threadweaver/src/queueing.h:68
    #9 0x55888b3c1b09 in ThreadWeaver::enqueue_raw(ThreadWeaver::Queue*, ThreadWeaver::JobInterface*) /home/milian/projects/kde/src/frameworks/threadweaver/src/queueing.h:82
    #10 0x55888b39b805 in JobTests::DequeueSuspendedSequenceTest() /home/milian/projects/kde/src/frameworks/threadweaver/autotests/JobTests.cpp:900
    #11 0x55888b3aee9e in JobTests::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/milian/projects/kde/build/frameworks/threadweaver/autotests/ThreadWeaverJobTests_autogen/include/moc_JobTests.cpp:551
    #12 0x7fc7c47500a4 in QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) (/usr/lib/libQt6Core.so.6+0x1500a4) (BuildId: b6b6413f12bdfa0f594dbec300f816d4442d5baf)
    #13 0x7fc7c475040b in QMetaMethod::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) (/usr/lib/libQt6Core.so.6+0x15040b) (BuildId: b6b6413f12bdfa0f594dbec300f816d4442d5baf)
```
parent ed96e854
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment