Le lundi 15 février 2016 17:15:08, Jesse McGraw a écrit : > Thanks Even. > > I've uploaded it to dropbox here: > https://www.dropbox.com/s/7tcxh9bvk4127c6/Washington_SEC.tif?dl=0
Fixed per https://trac.osgeo.org/gdal/ticket/6365 (the complexity of the own tile caching mechanisms of the driver, correlated with the GDAL block cache, has gone a bit out of control...) A workaround would likely be to increase GDAL_CACHEMAX to a number exceeding the uncompressed size of the input + output raster. Even > > On 02/15/2016 09:53 AM, Even Rouault wrote: > > Jesse, > > > > The geotiff would be necessary to replicate. > > > > Even > > > > Le lundi 15 février 2016 15:46:15, Jesse McGraw a écrit : > >> I was fiddling with Even's geopackage examples > >> <http://erouault.blogspot.com/2014/12/gdal-geopackage-raster-support.htm > >> l> when I came across a core dump issue in gdal_translate > >> > >> gdal version is compiled from github trunk as of 15 February 2016 under > >> Ubuntu 15.10 x64 > >> > >> gdal_translate --version > >> GDAL 2.1.0dev, released 2015/99/99 > >> > >> I can share the geotiff in question if need be. Let me know if I can > >> provide any other helpful information > >> > >> Basic command is: > >> gdal_translate \ > >> > >> Washington_SEC.tif \ > >> test.gpkg \ > >> -of GPKG \ > >> -co TILE_FORMAT=PNG \ > >> -co TILING_SCHEME=GoogleMapsCompatible > >> > >> Out from Valgrind is: > >> jlmcgraw@UbuntuMate1504:~/Documents/myPrograms/gdal_tests$ > >> CPL_DEBUG=ON \ > >> > >> > valgrind --tool=memcheck --leak-check=yes --read-var-info=yes \ > >> > gdal_translate \ > >> > > >> > Washington_SEC.tif \ > >> > test.gpkg \ > >> > -of GPKG \ > >> > -co TILE_FORMAT=PNG \ > >> > -co TILING_SCHEME=GoogleMapsCompatible > >> > >> ==30978== Memcheck, a memory error detector > >> ==30978== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward > >> et al. > >> ==30978== Using Valgrind-3.11.0 and LibVEX; rerun with -h for > >> copyright info > >> ==30978== Command: gdal_translate Washington_SEC.tif test.gpkg -of > >> GPKG -co TILE_FORMAT=PNG -co TILING_SCHEME=GoogleMapsCompatible > >> ==30978== > >> GDAL: GDALOpen(Washington_SEC.tif, this=0xf7e9d80) succeeds as > >> GTiff. Input file size is 15538, 11309 > >> GDAL: GDAL_CACHEMAX = 100 MB > >> GDAL: GDALWarpKernel()::GWKGeneralCase() > >> Src=0,0,1944x1415 Dst=0,0,2737x1992 > >> 0GDAL: GDALWarpKernel()::GWKGeneralCase() > >> Src=1941,0,1945x1415 Dst=2737,0,2737x1992 > >> .GDAL: GDALWarpKernel()::GWKGeneralCase() > >> Src=3883,0,1945x1415 Dst=5474,0,2737x1992 > >> --30978-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0xf2 > >> --30978-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0xf2 > >> --30978-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0xf2 > >> --30978-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0xf2 > >> ==30978== Invalid write of size 8 > >> ==30978== at 0x4C3259F: memset (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x5692CD8: memset (string3.h:90) > >> ==30978== by 0x5692CD8: GDALGeoPackageDataset::ReadTile(int, > >> int, unsigned char*, bool*) (gdalgeopackagerasterband.cpp:641) > >> ==30978== by 0x5692FA2: GDALGeoPackageDataset::ReadTile(int, > >> int) (gdalgeopackagerasterband.cpp:489) > >> ==30978== by 0x5694B51: > >> GDALGeoPackageRasterBand::IReadBlock(int, int, void*) > >> (gdalgeopackagerasterband.cpp:733) > >> ==30978== by 0x5553B15: GDALRasterBand::GetLockedBlockRef(int, > >> int, int) (gdalrasterband.cpp:1142) > >> ==30978== by 0x5572525: GDALRasterBand::IRasterIO(GDALRWFlag, > >> int, int, int, int, void*, int, int, GDALDataType, long long, long > >> long, GDALRasterIOExtraArg*) (rasterio.cpp:307) > >> ==30978== by 0x557312A: > >> GDALDataset::BlockBasedRasterIO(GDALRWFlag, int, int, int, int, > >> void*, int, int, GDALDataType, int, int*, long long, long long, > >> long long, GDALRasterIOExtraArg*) (rasterio.cpp:2938) > >> ==30978== by 0x551B09C: GDALDataset::RasterIO(GDALRWFlag, int, > >> int, int, int, void*, int, int, GDALDataType, int, int*, long long, > >> long long, long long, GDALRasterIOExtraArg*) (gdaldataset.cpp:1991) > >> ==30978== by 0x551B11D: GDALDatasetRasterIO > >> (gdaldataset.cpp:2034) ==30978== by 0x56384C4: > >> GDALWarpOperation::WarpRegion(int, int, int, int, int, int, int, > >> int, int, int, double, double) > >> (gdalwarpoperation.cpp:1370) > >> ==30978== by 0x56387C6: > >> GDALWarpOperation::ChunkAndWarpImage(int, int, int, int) > >> (gdalwarpoperation.cpp:720) > >> ==30978== by 0x57A9F5A: GDALGeoPackageDataset::CreateCopy(char > >> const*, GDALDataset*, int, char**, int (*)(double, char const*, > >> void*), void*) (ogrgeopackagedatasource.cpp:3242) > >> ==30978== Address 0x0 is not stack'd, malloc'd or (recently) > >> free'd ==30978== > >> ==30978== > >> ==30978== Process terminating with default action of signal 11 > >> > >> (SIGSEGV) ==30978== Access not within mapped region at address 0x0 > >> > >> ==30978== at 0x4C3259F: memset (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x5692CD8: memset (string3.h:90) > >> ==30978== by 0x5692CD8: GDALGeoPackageDataset::ReadTile(int, > >> int, unsigned char*, bool*) (gdalgeopackagerasterband.cpp:641) > >> ==30978== by 0x5692FA2: GDALGeoPackageDataset::ReadTile(int, > >> int) (gdalgeopackagerasterband.cpp:489) > >> ==30978== by 0x5694B51: > >> GDALGeoPackageRasterBand::IReadBlock(int, int, void*) > >> (gdalgeopackagerasterband.cpp:733) > >> ==30978== by 0x5553B15: GDALRasterBand::GetLockedBlockRef(int, > >> int, int) (gdalrasterband.cpp:1142) > >> ==30978== by 0x5572525: GDALRasterBand::IRasterIO(GDALRWFlag, > >> int, int, int, int, void*, int, int, GDALDataType, long long, long > >> long, GDALRasterIOExtraArg*) (rasterio.cpp:307) > >> ==30978== by 0x557312A: > >> GDALDataset::BlockBasedRasterIO(GDALRWFlag, int, int, int, int, > >> void*, int, int, GDALDataType, int, int*, long long, long long, > >> long long, GDALRasterIOExtraArg*) (rasterio.cpp:2938) > >> ==30978== by 0x551B09C: GDALDataset::RasterIO(GDALRWFlag, int, > >> int, int, int, void*, int, int, GDALDataType, int, int*, long long, > >> long long, long long, GDALRasterIOExtraArg*) (gdaldataset.cpp:1991) > >> ==30978== by 0x551B11D: GDALDatasetRasterIO > >> (gdaldataset.cpp:2034) ==30978== by 0x56384C4: > >> GDALWarpOperation::WarpRegion(int, int, int, int, int, int, int, > >> int, int, int, double, double) > >> (gdalwarpoperation.cpp:1370) > >> ==30978== by 0x56387C6: > >> GDALWarpOperation::ChunkAndWarpImage(int, int, int, int) > >> (gdalwarpoperation.cpp:720) > >> ==30978== by 0x57A9F5A: GDALGeoPackageDataset::CreateCopy(char > >> const*, GDALDataset*, int, char**, int (*)(double, char const*, > >> void*), void*) (ogrgeopackagedatasource.cpp:3242) > >> ==30978== If you believe this happened as a result of a stack > >> ==30978== overflow in your program's main thread (unlikely but > >> ==30978== possible), you can try to increase the size of the > >> ==30978== main thread stack using the --main-stacksize= flag. > >> ==30978== The main thread stack size used in this run was 8388608. > >> ==30978== > >> ==30978== HEAP SUMMARY: > >> ==30978== in use at exit: 138,658,730 bytes in 10,473 blocks > >> ==30978== total heap usage: 58,500 allocs, 48,027 frees, > >> 326,332,504 bytes allocated > >> ==30978== > >> ==30978== 1,032 bytes in 1 blocks are possibly lost in loss record > >> 4,171 of 4,283 > >> ==30978== at 0x4C2BBCF: malloc (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x7CECC56: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CC92F5: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCC5A6: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CEB222: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D200D7: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D29826: sqlite3_step (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D2A899: sqlite3_exec (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x57B297B: SQLCommand(sqlite3*, char const*) > >> (ogrgeopackageutility.cpp:41) > >> ==30978== by 0x57A4D5C: > >> GDALGeoPackageDataset::FinalizeRasterRegistration() > >> (ogrgeopackagedatasource.cpp:1383) > >> ==30978== by 0x57A9CBA: GDALGeoPackageDataset::CreateCopy(char > >> const*, GDALDataset*, int, char**, int (*)(double, char const*, > >> void*), void*) (ogrgeopackagedatasource.cpp:3150) > >> ==30978== by 0x5522F48: GDALDriver::CreateCopy(char const*, > >> GDALDataset*, int, char**, int (*)(double, char const*, void*), > >> void*) (gdaldriver.cpp:803) > >> ==30978== > >> ==30978== 1,032 bytes in 1 blocks are possibly lost in loss record > >> 4,172 of 4,283 > >> ==30978== at 0x4C2BBCF: malloc (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x7CECC56: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CC92F5: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCC5A6: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CEB222: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D200D7: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D29826: sqlite3_step (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D2A899: sqlite3_exec (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x57B297B: SQLCommand(sqlite3*, char const*) > >> (ogrgeopackageutility.cpp:41) > >> ==30978== by 0x5695415: > >> GDALGeoPackageDataset::WriteShiftedTile(int, int, int, int, int, > >> int, int) (gdalgeopackagerasterband.cpp:1645) > >> ==30978== by 0x5695CAC: > >> GDALGeoPackageRasterBand::IWriteBlock(int, int, void*) > >> (gdalgeopackagerasterband.cpp:2121) > >> ==30978== by 0x555805F: GDALRasterBlock::Write() > >> (gdalrasterblock.cpp:743) > >> ==30978== > >> ==30978== 1,304 bytes in 1 blocks are possibly lost in loss record > >> 4,186 of 4,283 > >> ==30978== at 0x4C2BBCF: malloc (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x7CECC56: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CC92F5: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCC5A6: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCD0FF: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D003AE: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D007FA: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D012E8: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D0374F: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D06D63: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D09554: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D2346A: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== > >> ==30978== 3,912 bytes in 3 blocks are possibly lost in loss record > >> 4,228 of 4,283 > >> ==30978== at 0x4C2BBCF: malloc (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x7CECC56: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CC92F5: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCC5A6: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCD0FF: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D003AE: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D007FA: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D012E8: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D0374F: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D06EB7: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D09554: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D2346A: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== > >> ==30978== 710,680 bytes in 545 blocks are possibly lost in loss > >> record 4,275 of 4,283 > >> ==30978== at 0x4C2BBCF: malloc (in > >> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > >> ==30978== by 0x7CECC56: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CC92F5: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCC5A6: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7CCD0FF: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D003AE: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D007FA: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D012E8: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D0374F: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D09228: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D2346A: ??? (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== by 0x7D29826: sqlite3_step (in > >> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6) > >> ==30978== > >> ==30978== LEAK SUMMARY: > >> ==30978== definitely lost: 0 bytes in 0 blocks > >> ==30978== indirectly lost: 0 bytes in 0 blocks > >> ==30978== possibly lost: 717,960 bytes in 551 blocks > >> ==30978== still reachable: 137,940,770 bytes in 9,922 blocks > >> ==30978== of which reachable via heuristic: > >> ==30978== length64 : 483,616 > >> bytes in 2,334 blocks > >> ==30978== suppressed: 0 bytes in 0 blocks > >> ==30978== Reachable blocks (those to which a pointer was found) are > >> not shown. > >> ==30978== To see them, rerun with: --leak-check=full > >> --show-leak-kinds=all > >> ==30978== > >> ==30978== For counts of detected and suppressed errors, rerun with: > >> -v ==30978== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: > >> 0 from > >> > >> 0) Segmentation fault (core dumped) -- Spatialys - Geospatial professional services http://www.spatialys.com _______________________________________________ gdal-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/gdal-dev
