Le 18/09/2024 à 18:27, Fox, Shawn D (US) via gdal-dev a écrit :
Could someone help me understand this sentence from the documentation
at gdal.h: Raster C API — GDAL documentation
<https://gdal.org/en/latest/api/raster_c_api.html> for the GDALDestroy
function?
“Since GDAL 2.4.0, this function may be called by application code,
since it is no longer called automatically, on non-MSVC builds, due to
ordering problems with respect to automatic destruction of global C++
objects.”
What are the ordering problems and why might it be called due to
ordering problems? The statement does state some kind of difference
between MSVC and non-MSVC builds. The sentence doesn’t clearly state
to me whether I should or shouldn’t call that function to cleanup. The
language in the documentation is ambiguous, and it is not clear to me
how important it is to call this method. Cleaning up seems like a
good idea but I could simply free the memory via delete for any object
that is returned instead of calling GDALDestroy.
You don't necessarily have to call GDALDestroy(). It reclaims various
static objects allocated by GDAL. Basically it helps for "valgrind
--leak-check=full" use cases.
The issue that caused it to no longer be registered as a GCC destructor
function is that if you have for example a static GDALDataset object, it
was found that GDALDestroy() was called before the destruction of the
GDALDataset object, which lead to double-free. Cf commit comment of
https://github.com/OSGeo/gdal/commit/e8c9bea5dbe8e90d01d575f94a040fcaee27c24f
On a RHEL8 build, which is non-MSVC, I am observing segmentation
faults. The errors vary from one execution of the program to another.
Hard to tell the reason. Show the code, use Valgrind.
Check also with ldd that your executable isn't linked to 2 different
versions of libproj. The error message you mention is typical of that
situation
--
http://www.spatialys.com
My software is free, but my time generally not.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev