[QGIS-Developer] Call for emergency 3.22 release

Even Rouault even.rouault at spatialys.com
Wed Feb 1 18:37:49 PST 2023


Dereferencing a null dataProvider() seems to me to be a recurrent class 
of (crashing) bugs (I've for sure fixed such issues several times)

My idea is probably a bit silly, but what about 
https://gist.github.com/rouault/ed533d30738bda806ebeaa47f0877e2c ?

Basically:

- deprecate dataProvider() for C++, with a GCC 
__attribute__((deprecated()) annotation so we can spot all occurrences

- replace it with dataProviderNullable() which returns a 
QgsVectorDataProviderPtr structure that encapsulates the raw pointer and 
have a get() method to get it

So you have to replace code like:

mTracksLayer->dataProvider()->addFeature( feature, 
QgsFeatureSink::Flag::FastInsert );

with

if ( auto provider = mTracksLayer->dataProviderNullablePtr().get() )
{
     provider->addFeature( feature, QgsFeatureSink::Flag::FastInsert );
}

Of course someone could still do 
mTracksLayer->dataProviderNullablePtr().get()->addFeature( ... ) but 
that should be obvious they are cheating... And I guess some linting 
script could catch "dataProviderNullablePtr().get()->" buggy/risky patterns

And of course it forces checking for null in places where it cannot be, 
but perhaps be on the safe side...


Another alternative I thought was to have dataProvider() return a dummy 
non-null instance if mDataProvider is null, but that's probably not a 
good idea.

Even

Le 02/02/2023 à 02:19, Nyall Dawson via QGIS-Developer a écrit :
> Hi PSC/list,
>
> I came across this horrible regression during bug hunting today:
> https://github.com/qgis/QGIS/pull/51703
>
> If you load a project with any broken layers and then hover over the
> layer in the layer tree, QGIS will instantly crash. It's a regression
> caused by https://github.com/qgis/QGIS/pull/50256, and unfortunately
> that PR was backported to 3.22 and accordingly the crash present in
> the final release of 3.22.
>
> Given the extreme severity of this crash I believe we should be
> pushing out another unplanned 3.22 patch release, as we cannot leave
> the final 3.22 LTR with such a nasty regression in place.
>
> Nyall
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

-- 
http://www.spatialys.com
My software is free, but my time generally not.



More information about the QGIS-Developer mailing list