[gdal-dev] Trying to debug a GDAL crash in "GDALClose(hDataset); "

Joaquim Luis jluis at ualg.pt
Fri Nov 13 18:47:08 PST 2015


Hi,

I'm having strange crashes in GDAL (SVN) when called via GMT. The crashes  
occur at a call to

GDALClose(hDataset);

Now, this is only occurs when I try to read a sub-region of a grid but  
those are GMT details.
It doesn't happen to colleagues on OSX but they are using gdal 1.11. Can't  
say that's the reason but this used to work for me as well on Windows (I  
should know because I wrote that code).

I built a GDAL debug and can see that the crash happens in  
cpl_atomic_ops.cpp

int CPLAtomicCompareAndExchange(volatile int* ptr, int oldval, int newval)
{
   return (LONG)InterlockedCompareExchange((volatile LONG*)(ptr),  
(LONG)newval, (LONG)oldval) == (LONG)oldval;
}

because the 'ptr' is invalid. That function is called by  
gdalrasterblock.cpp

GDALRasterBlock::DropLockForRemovalFromStorage()

	if( CPLAtomicCompareAndExchange(&nLockCount, 0, -1) )

and the debugger tells me that

	nLockCount	<Unable to read memory>	

and here I'm lost. Where is nLockCount supposed to be set?

Thanks

Joaquim


More information about the gdal-dev mailing list