hold stream in a qpointer
there is a very awkward race condition involving streams during
initialization. if any of the (KNS) backends fail to initialize and
become invalid they will eventually trigger
ResourcesModel::callerFetchingChanged
which will discard the now
invalid backends and emit backendsChanged
which will trigger
ResourcesProxyModel::invalidateFilter
which then may end up deleting
the current stream
if (m_currentStream) {
qCWarning(LIBDISCOVER_LOG) << "last stream isn't over yet" <<
m_filters << this;
delete m_currentStream;
this is in so far problematic as we "schedule" lambda executions in the
packagekit backend (most prominently in PackageKitBackend::search
)
with lambdas that hold the stream. these lambdas will eventually run on
since-deleted stream objects and best case fall into a nullptr but more
regularly just fall into a ditch of random memory until undefined
behavior bites us