On jeudi 9 novembre 2017 23:07:11 CET Even Rouault wrote: > On vendredi 10 novembre 2017 07:24:09 CET Nyall Dawson wrote: > > Hi all (specifically bugfixing devs) > > > > While doing a bunch of mapping tasks yesterday on master (i.e. being a > > QGIS user, not a developer!) I hit a bunch of frequent crashes on > > Windows. Nathan's awesome crash report tool identified the issue as > > occurring at qgsogrfeatureiterator.cpp:52. > > > > Looking into that some more it seems that the previous line is failing > > to acquire the connection to the datasource. I can't see anything > > which would obviously explain this (failing a bug in Qt's > > QSemaphore::tryAcquire e.g. possibly exposed by 49de489c). > > This hypothesis is not so impossible. I had first a look at Qt4 tryAcquire > implementation, and I can't see how it would fail. But for Qt5, I found > https://code.woboq.org/qt5/qtbase/src/corelib/thread/qsemaphore.cpp.html > (not sure which point version this is) > > bool QSemaphore::tryAcquire(int n, int timeout) > { > Q_ASSERT_X(n >= 0, "QSemaphore::tryAcquire", "parameter 'n' must be > non-negative"); if (futexAvailable()) > return futexSemaphoreTryAcquire<true>(u, n, timeout < 0 ? -1 : > timeout); QDeadlineTimer timer(timeout); > QMutexLocker locker(&d->mutex); > qint64 remainingTime = timer.remainingTime(); > while (n > d->avail && remainingTime > 0) { > if (!d->cond.wait(locker.mutex(), remainingTime)) > return false; > remainingTime = timer.remainingTime(); > } > if (n > d->avail) > return false; > d->avail -= n; > return true; > }
Digging further this code comes from the dev branch of qt5: https://github.com/qt/qtbase/blob/dev/src/corelib/thread/qsemaphore.cpp#L414 Released branches use a different logic: https://github.com/qt/qtbase/blob/5.10/src/corelib/thread/qsemaphore.cpp#L217 Are you running bleeding edge Qt ? -- Spatialys - Geospatial professional services http://www.spatialys.com
_______________________________________________ QGIS-Developer mailing list [email protected] List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
