Hello, I have two versions of GDAL in my machine:
- GDAL 1.7.0 from SVN - GDAL 1.7.0 with the WKT Raster driver I'm developing Today, I've updated the wktraster code from svn. I have the revision 4256. The last one. With this revision, there is a new version of gdal2wktraster script. I loaded this image ftp://ftp.remotesensing.org/geotiff/samples/gdal_eg/cea.tif with and old version of gdal2wktraster, that allowed GDAL to select the block size for the tiles. Then, I could load the image with default tiles of 514x15, 35 tiles. But with the new version of the script, I have to specify the block size by hand. For example, 514x15 (or 100x100). When I try this: gdal2wktraster.py -r cea.tif -t table_name -s 4267 -b 1 -k 514x15 -I -M -o output.sql -v I get this error: ERROR 7: Assertion `FALSE' failed in file `gdaldrivermanager.cpp', line 309 Reviewing the code, I saw that the last script's instruction called is: pixels = band.ReadAsArray(xoff, yoff, valid_read_block_size[0], valid_read_block_size[1], target_block_size[0], target_block_size[1]) That, somehow, should call the method "GDALDriverManager::RegisterDriver( GDALDriver * poDriver )" from gdalmanager.cpp. The code of the method is this: int GDALDriverManager::RegisterDriver( GDALDriver * poDriver ) { CPLMutexHolderD( &hDMMutex ); /* -------------------------------------------------------------------- */ /* If it is already registered, just return the existing */ /* index. */ /* -------------------------------------------------------------------- */ if( GetDriverByName( poDriver->GetDescription() ) != NULL ) { int i; for( i = 0; i < nDrivers; i++ ) { if( papoDrivers[i] == poDriver ) { return i; } } CPLAssert( FALSE ); // -------> THE LINE THAT CAUSES THE CRASH ******************************************* } /* -------------------------------------------------------------------- */ /* Otherwise grow the list to hold the new entry. */ /* -------------------------------------------------------------------- */ papoDrivers = (GDALDriver **) VSIRealloc(papoDrivers, sizeof(GDALDriver *) * (nDrivers+1)); papoDrivers[nDrivers] = poDriver; nDrivers++; if( poDriver->pfnCreate != NULL ) poDriver->SetMetadataItem( GDAL_DCAP_CREATE, "YES" ); if( poDriver->pfnCreateCopy != NULL ) poDriver->SetMetadataItem( GDAL_DCAP_CREATECOPY, "YES" ); int iResult = nDrivers - 1; return iResult; } So, basically, with the base 1.7.0 version of GDAL, I can load the TIFF file. With my version, crash in the previous method. Clearly, it's my driver's problem, but I don't know why. I have a test code to create a dataset using my driver and works... Why could the application crash when trying to list the registered drivers while loading a TIFF file? I have the TIFF driver loaded in my GDAL version. Thanks in advance, Best regards Jorge Paula Poundstone<http://www.brainyquote.com/quotes/authors/p/paula_poundstone.html> - "I don't have a bank account because I don't know my mother's maiden name."
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev