[GRASS-dev] [GRASS GIS] #3365: r.in.gdal: crash on large dataset

GRASS GIS trac at osgeo.org
Tue Jul 4 05:51:36 PDT 2017


#3365: r.in.gdal: crash on large dataset
----------------------+---------------------------------
  Reporter:  neteler  |      Owner:  grass-dev@…
      Type:  defect   |     Status:  new
  Priority:  normal   |  Milestone:  7.2.2
 Component:  Raster   |    Version:  svn-releasebranch72
Resolution:           |   Keywords:  r.in.gdal
       CPU:  x86-64   |   Platform:  Linux
----------------------+---------------------------------

Old description:

> Trying to import a large VRT dataset, I get a crash:
>
> {{{
> GRASS 7.2.2svn (latlong):~/software/grass72_svn_debugmode/bin.x86_64-pc-
> linux-gnu > r.in.gdal
> input=/mnt/kvm7-storage/geodata/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
> output=loss_global_forest_cover_loss_2000_2015
> Proceeding with import of 1 raster bands...
> Importing raster map <loss_global_forest_cover_loss_2000_2015>...
> Segmentation fault (core dumped)
> }}}
>
> Debugging:
> {{{
> GRASS 7.2.2svn (latlong):~/software/grass72_svn_debugmode/bin.x86_64-pc-
> linux-gnu > gdb r.in.gdal
> GNU gdb (GDB) Fedora 7.12.1-48.fc25
> Copyright (C) 2017 Free Software Foundation, Inc.
> [...]
> Reading symbols from r.in.gdal...done.
> (gdb) r
> input=/mnt//GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015.vrt
> output=loss_global_forest_cover_loss_2000_2015
> Starting program:
> /home/mundialis/software/grass72_svn_debugmode/dist.x86_64-pc-linux-
> gnu/bin/r.in.gdal
> input=/mnt//GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015.vrt
> output=loss_global_forest_cover_loss_2000_2015
> Missing separate debuginfos, use: dnf debuginfo-install
> glibc-2.24-8.fc25.x86_64
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> Proceeding with import of 1 raster bands...
> Importing raster map <loss_global_forest_cover_loss_2000_2015>...
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007ffff77a1ab9 in put_data (fd=0, null_buf=0x7fffffe9b020 "",
> cell=0x7fffc62ac010, row=0, n=1440000, zeros_r_nulls=0) at put_row.c:370
> 370             compressed_buf[0] = work_buf[0] = nbytes;
>

>
> (gdb) bt full
> #0  0x00007ffff77a1ab9 in put_data (fd=0, null_buf=0x7fffffe9b020 "",
> cell=0x7fffc62ac010, row=0, n=1440000, zeros_r_nulls=0) at put_row.c:370
>         wk = 0x7fffff91cb31 ""
>         nbytes = 1
>         compressed_buf = 0x7fffff7bd220 <error: Cannot access memory at
> address 0x7fffff7bd220>
>         total = 1440000
>         fcb = 0x691080
>         compressed = 1
>         len = 4
>         work_buf = 0x7fffff91cb30 "\001"
>         wk = 0x7fffff91cb31 ""
>         nwrite = 0
> #1  0x00007ffff77a1f98 in put_raster_data (fd=0, null_buf=0x7fffffe9b020
> "", rast=0x7fffc62ac010, row=0, n=1440000, zeros_r_nulls=0, map_type=0)
>     at put_row.c:476
>         fcb = 0x691080
> #2  0x00007ffff77a2bdb in put_raster_row (fd=0, buf=0x7fffc62ac010,
> data_type=0, zeros_r_nulls=0) at put_row.c:699
>         convert_and_write_FtypeOtype = {{0x0, 0x7ffff77a23d9
> <convert_and_write_if>, 0x7ffff77a25f5 <convert_and_write_id>}, {
>             0x7ffff77a280f <convert_and_write_fi>, 0x0, 0x7ffff77a26f3
> <convert_and_write_fd>}, {0x7ffff77a2928 <convert_and_write_di>,
>             0x7ffff77a24d7 <convert_and_write_df>, 0x0}}
>         fcb = 0x691080
>         null_buf = 0x7fffffe9b020 ""
> #3  0x00007ffff77a0f8b in Rast_put_row (fd=0, buf=0x7fffc62ac010,
> data_type=0) at put_row.c:67
> No locals.
> #4  0x0000000000406e4d in ImportBand (hBand=0x7dbcb0, output=0x627dc0
> "loss_global_forest_cover_loss_2000_2015", group_ref=0x0) at main.c:1141
>         data_type = 0
>         eGDT = GDT_Int32
>         eRawGDT = GDT_Byte
>         row = 1
>         nrows = 560000
>         ncols = 1440000
>         complex = 0
>         cf = 0
>         cfR = 32767
>         cfI = -145625496
>         bNoDataEnabled = 0
>         indx = 32767
>         cell = 0x7fffc62ac010
>         cellReal = 0x77
>         cellImg = 0x7fffffffac40
>         bufComplex = 0x7fffffffab40
>         dfNoData = -10000
>         outputReal =
> "0\341\377\367\377\177\000\000\260\254\377\377\377\177\000\000\071\031@\000\000\000\000\000\243\366\251\242\000\000\000\000\377\377\377\377",
> '\000' <repeats 12 times>,
> "H\017\064\366\377\177\000\000\000\240\374\367\377\177\000\000\000\000\000\000\000\000\360?",
> '\000' <repeats 14 times>, "\360?", '\000' <repeats 30 times>,
> "\360?\000\000\000\000\000\000\000\000\220\062@\000\000\000\000\000\314\345w\367\377\177\000\000P\255\377\377\377\177\000\000\350\262`\000\000\000\000\000\220\062@\000\000\000\000\000\320\332\377\377\377\177",
> '\000' <repeats 18 times>, "\360\331\377\377\377\177\000\000"...
>         outputImg = '\000' <repeats 32 times>,
> "\377\000\000\000\000\000\377\377\000\000\000\000\000\000\377\377\000\000\000\000\000\000\377\377\377\377\377\377\000\377\377\377",
> '\000' <repeats 22 times>, "\360?", '\000' <repeats 14 times>, "\360?",
> '\000' <repeats 14 times>,
> "\360?\000\000\000\000\000\000\000\000\210\345w\367\377\177", '\000'
> <repeats 26 times>,
> "\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\200\256\377\377\377\177\000\000\240\224z\367\377\177\000\000\000\273}",
> '\000' <repeats 13 times>...
>         nullFlags = 0x0
>         history = {fields = {0x7ffff7fca000 "", 0x7fffffffabe8 "",
> 0x7fffffffabe4 "", 0x7ffff7ff7b78 "\350\343\377\367\377\177",
>             0x7fffffffaba0 "\300\254\377\377\377\177", 0x401939
> "GDALGetRasterBand", 0x400be8 "\261\a", 0x7fffffffabe8 ""}, nlines =
> -1565919581,
>           lines = 0x28aa7da}
>         GDALmetadata = 0x7ffff77aa094
>         have_colors = 0
>         gdal_rat = 0x7ffff752f25f <find_file1+198>
> #5  0x0000000000405231 in main (argc=3, argv=0x7fffffffdad8) at
> main.c:619
>         nBand = 1
>         input = 0x627d20
> "/mnt/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015.vrt"
>         output = 0x627dc0 "loss_global_forest_cover_loss_2000_2015"
>         title = 0x0
>         cellhd = {format = 0, compressed = 0, rows = 560000, rows3 =
> 560000, cols = 1440000, cols3 = 1440000, depths = 1, proj = 3, zone = 0,
>           ew_res = 0.00025000000000000017, ew_res3 =
> 0.00025000000000000017, ns_res = 0.00025000000000000017, ns_res3 =
> 0.00025000000000000017, tb_res = 1,
>           north = 80, south = -60.000000000000085, east =
> 180.00000000000023, west = -180, top = 1, bottom = 0}
>         loc_wind = {format = 0, compressed = -1, rows = 1, rows3 = 1,
> cols = 1, cols3 = 1, depths = 1, proj = 3, zone = 0, ew_res = 1, ew_res3
> = 1,
>           ns_res = 1, ns_res3 = 1, tb_res = 1, north = 1, south = 0, east
> = 1, west = 0, top = 1, bottom = 0}
>         cur_wind = {format = 0, compressed = 0, rows = 0, rows3 = 0, cols
> = 0, cols3 = 0, depths = 0, proj = 0, zone = 0, ew_res = 0, ew_res3 = 0,
>           ns_res = 0, ns_res3 = 0, tb_res = 0, north = 0, south = 0, east
> = 0, west = 0, top = 0, bottom = 0}
>         proj_info = 0x68ced0
>         proj_units = 0x68cbf0
>         loc_proj_info = 0x68e5f0
>         loc_proj_units = 0x7db4f0
>         hDS = 0x7dbb00
>         hDriver = 0x62ef90
>         hBand = 0x7dbcb0
>         adfGeoTransform = {-180, 0.00025000000000000017, 0, 80, 0,
> -0.00025000000000000017}
>         n_bands = 0
>         force_imagery = 0
>         error_msg = "\253\000\000\000\022", '\000' <repeats 19 times>,
> "i\000\000\000\022", '\000' <repeats 19 times>, "\222\000\000\000\022",
> '\000' <repeats 19 times>, "\231\000\000\000\022", '\000' <repeats 19
> times>, "\001\000\000\000
> \000\000\000@\323\377\377\377\177\000\000\260\327\377\377\377\177\000\000\350
> Y\372\367\377\177\000\000\060U\372\367\377\177\000\000\001\000\000\000\000\000\000\000\235\066\313\335\377\177\000\000\260Q\336\367\377\177\000\000\000\000\000\000\000\000\000\000D|\336\367\377\177\000\000`O\372\367\377\177\000\000\210\337\377\367\377\177\000\000\000\000\000\000\000\000\000\000"...
>         projcomp_error = 1
>         overwrite = 0
>         offset = 0
>         suffix = 0x629130 ""
>         num_digits = 0
>         module = 0x7ffff777ea28 <state+40>
>         parm = {input = 0x7ffff777ea88 <state+136>, output = 0x626ea0,
> target = 0x6270e0, title = 0x6271a0, outloc = 0x6274a0, band = 0x626f60,
>           memory = 0x627020, offset = 0x627260, num_digits = 0x627320,
> map_names_file = 0x6273e0, rat = 0x627560}
>         flag_o = 0x7ffff777ea58 <state+88>
>         flag_e = 0x626840
>         flag_k = 0x627ab0
>         flag_f = 0x627a10
>         flag_l = 0x627a60
>         flag_c = 0x627b00
>         flag_p = 0x627b50
>         flag_j = 0x626550
> (gdb)
> }}}
>

>
> Doing a convert operation with GDAL, no apparent issues (I CTRL-C'd it
> then):
> {{{
> gdal_translate
> /mnt/geodata/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
> /scratch/bla.tif
> Input file size is 1440000, 560000
> 0..
> }}}
>
> **Data source:**
> http://earthenginepartners.appspot.com/science-2013-global-
> forest/download_v1.3.html
>
> I created a VRT from the "loss" layer tiles which I then tried to import
> as above:
> {{{
> gdalbuildvrt loss_global_forest_cover_loss_2000_2015.vrt *.tif
>
> gdalinfo loss_global_forest_cover_loss_2000_2015.vrt
> Driver: VRT/Virtual Raster
> [...]
> Size is 1440000, 560000
> Coordinate System is:
> GEOGCS["WGS 84",
>     DATUM["WGS_1984",
>         SPHEROID["WGS 84",6378137,298.257223563,
>             AUTHORITY["EPSG","7030"]],
>         AUTHORITY["EPSG","6326"]],
>     PRIMEM["Greenwich",0],
>     UNIT["degree",0.0174532925199433],
>     AUTHORITY["EPSG","4326"]]
> Origin = (-180.000000000000000,80.000000000000000)
> Pixel Size = (0.000250000000000,-0.000250000000000)
> Corner Coordinates:
> Upper Left  (-180.0000000,  80.0000000) (180d 0' 0.00"W, 80d 0' 0.00"N)
> Lower Left  (-180.0000000, -60.0000000) (180d 0' 0.00"W, 60d 0' 0.00"S)
> Upper Right ( 180.0000000,  80.0000000) (180d 0' 0.00"E, 80d 0' 0.00"N)
> Lower Right ( 180.0000000, -60.0000000) (180d 0' 0.00"E, 60d 0' 0.00"S)
> Center      (   0.0000000,  10.0000000) (  0d 0' 0.00"E, 10d 0' 0.00"N)
> Band 1 Block=128x128 Type=Byte, ColorInterp=Gray
> }}}
>
> Test with GRASS GIS 7.3:
>
> {{{
> GRASS 7.3.svn (latlong):~/software/grass73_svn > r.in.gdal
> input=/mnt/geodata/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
> output=loss_global_forest_cover_loss_2000_2015
> Importing raster map <loss_global_forest_cover_loss_2000_2015>...
> 0% Segmentation fault (core dumped)
> }}}
>
> System:
> {{{
> gcc -v
> ...
> gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
>
> uname -a
> Linux fedora-calc 4.9.12-200.fc25.x86_64 #1 SMP Thu Feb 23 19:31:49 UTC
> 2017 x86_64 x86_64 x86_64 GNU/Linux
> }}}

New description:

 Trying to import a large VRT dataset, I get a crash:

 {{{
 GRASS 7.2.2svn (latlong):~/software/grass72_svn_debugmode/bin.x86_64-pc-
 linux-gnu > r.in.gdal
 input=/mnt/kvm7-storage/geodata/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
 output=loss_global_forest_cover_loss_2000_2015
 Proceeding with import of 1 raster bands...
 Importing raster map <loss_global_forest_cover_loss_2000_2015>...
 Segmentation fault (core dumped)
 }}}

 Debugging:
 {{{
 GRASS 7.2.2svn (latlong):~/software/grass72_svn_debugmode/bin.x86_64-pc-
 linux-gnu > gdb r.in.gdal
 GNU gdb (GDB) Fedora 7.12.1-48.fc25
 Copyright (C) 2017 Free Software Foundation, Inc.
 [...]
 Reading symbols from r.in.gdal...done.
 (gdb) r
 input=/mnt//GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015.vrt
 output=loss_global_forest_cover_loss_2000_2015
 Starting program:
 /home/mundialis/software/grass72_svn_debugmode/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal
 input=/mnt//GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015.vrt
 output=loss_global_forest_cover_loss_2000_2015
 Missing separate debuginfos, use: dnf debuginfo-install
 glibc-2.24-8.fc25.x86_64
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib64/libthread_db.so.1".
 Proceeding with import of 1 raster bands...
 Importing raster map <loss_global_forest_cover_loss_2000_2015>...

 Program received signal SIGSEGV, Segmentation fault.
 0x00007ffff77a1ab9 in put_data (fd=0, null_buf=0x7fffffe9b020 "",
 cell=0x7fffc62ac010, row=0, n=1440000, zeros_r_nulls=0) at put_row.c:370
 370             compressed_buf[0] = work_buf[0] = nbytes;



 (gdb) bt full
 #0  0x00007ffff77a1ab9 in put_data (fd=0, null_buf=0x7fffffe9b020 "",
 cell=0x7fffc62ac010, row=0, n=1440000, zeros_r_nulls=0) at put_row.c:370
         wk = 0x7fffff91cb31 ""
         nbytes = 1
         compressed_buf = 0x7fffff7bd220 <error: Cannot access memory at
 address 0x7fffff7bd220>
         total = 1440000
         fcb = 0x691080
         compressed = 1
         len = 4
         work_buf = 0x7fffff91cb30 "\001"
         wk = 0x7fffff91cb31 ""
         nwrite = 0
 #1  0x00007ffff77a1f98 in put_raster_data (fd=0, null_buf=0x7fffffe9b020
 "", rast=0x7fffc62ac010, row=0, n=1440000, zeros_r_nulls=0, map_type=0)
     at put_row.c:476
         fcb = 0x691080
 #2  0x00007ffff77a2bdb in put_raster_row (fd=0, buf=0x7fffc62ac010,
 data_type=0, zeros_r_nulls=0) at put_row.c:699
         convert_and_write_FtypeOtype = {{0x0, 0x7ffff77a23d9
 <convert_and_write_if>, 0x7ffff77a25f5 <convert_and_write_id>}, {
             0x7ffff77a280f <convert_and_write_fi>, 0x0, 0x7ffff77a26f3
 <convert_and_write_fd>}, {0x7ffff77a2928 <convert_and_write_di>,
             0x7ffff77a24d7 <convert_and_write_df>, 0x0}}
         fcb = 0x691080
         null_buf = 0x7fffffe9b020 ""
 #3  0x00007ffff77a0f8b in Rast_put_row (fd=0, buf=0x7fffc62ac010,
 data_type=0) at put_row.c:67
 No locals.
 #4  0x0000000000406e4d in ImportBand (hBand=0x7dbcb0, output=0x627dc0
 "loss_global_forest_cover_loss_2000_2015", group_ref=0x0) at main.c:1141
         data_type = 0
         eGDT = GDT_Int32
         eRawGDT = GDT_Byte
         row = 1
         nrows = 560000
         ncols = 1440000
         complex = 0
         cf = 0
         cfR = 32767
         cfI = -145625496
         bNoDataEnabled = 0
         indx = 32767
         cell = 0x7fffc62ac010
         cellReal = 0x77
         cellImg = 0x7fffffffac40
         bufComplex = 0x7fffffffab40
         dfNoData = -10000
         outputReal =
 "0\341\377\367\377\177\000\000\260\254\377\377\377\177\000\000\071\031@\000\000\000\000\000\243\366\251\242\000\000\000\000\377\377\377\377",
 '\000' <repeats 12 times>,
 "H\017\064\366\377\177\000\000\000\240\374\367\377\177\000\000\000\000\000\000\000\000\360?",
 '\000' <repeats 14 times>, "\360?", '\000' <repeats 30 times>,
 "\360?\000\000\000\000\000\000\000\000\220\062@\000\000\000\000\000\314\345w\367\377\177\000\000P\255\377\377\377\177\000\000\350\262`\000\000\000\000\000\220\062@\000\000\000\000\000\320\332\377\377\377\177",
 '\000' <repeats 18 times>, "\360\331\377\377\377\177\000\000"...
         outputImg = '\000' <repeats 32 times>,
 "\377\000\000\000\000\000\377\377\000\000\000\000\000\000\377\377\000\000\000\000\000\000\377\377\377\377\377\377\000\377\377\377",
 '\000' <repeats 22 times>, "\360?", '\000' <repeats 14 times>, "\360?",
 '\000' <repeats 14 times>,
 "\360?\000\000\000\000\000\000\000\000\210\345w\367\377\177", '\000'
 <repeats 26 times>,
 "\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\200\256\377\377\377\177\000\000\240\224z\367\377\177\000\000\000\273}",
 '\000' <repeats 13 times>...
         nullFlags = 0x0
         history = {fields = {0x7ffff7fca000 "", 0x7fffffffabe8 "",
 0x7fffffffabe4 "", 0x7ffff7ff7b78 "\350\343\377\367\377\177",
             0x7fffffffaba0 "\300\254\377\377\377\177", 0x401939
 "GDALGetRasterBand", 0x400be8 "\261\a", 0x7fffffffabe8 ""}, nlines =
 -1565919581,
           lines = 0x28aa7da}
         GDALmetadata = 0x7ffff77aa094
         have_colors = 0
         gdal_rat = 0x7ffff752f25f <find_file1+198>
 #5  0x0000000000405231 in main (argc=3, argv=0x7fffffffdad8) at main.c:619
         nBand = 1
         input = 0x627d20
 "/mnt/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015.vrt"
         output = 0x627dc0 "loss_global_forest_cover_loss_2000_2015"
         title = 0x0
         cellhd = {format = 0, compressed = 0, rows = 560000, rows3 =
 560000, cols = 1440000, cols3 = 1440000, depths = 1, proj = 3, zone = 0,
           ew_res = 0.00025000000000000017, ew_res3 =
 0.00025000000000000017, ns_res = 0.00025000000000000017, ns_res3 =
 0.00025000000000000017, tb_res = 1,
           north = 80, south = -60.000000000000085, east =
 180.00000000000023, west = -180, top = 1, bottom = 0}
         loc_wind = {format = 0, compressed = -1, rows = 1, rows3 = 1, cols
 = 1, cols3 = 1, depths = 1, proj = 3, zone = 0, ew_res = 1, ew_res3 = 1,
           ns_res = 1, ns_res3 = 1, tb_res = 1, north = 1, south = 0, east
 = 1, west = 0, top = 1, bottom = 0}
         cur_wind = {format = 0, compressed = 0, rows = 0, rows3 = 0, cols
 = 0, cols3 = 0, depths = 0, proj = 0, zone = 0, ew_res = 0, ew_res3 = 0,
           ns_res = 0, ns_res3 = 0, tb_res = 0, north = 0, south = 0, east
 = 0, west = 0, top = 0, bottom = 0}
         proj_info = 0x68ced0
         proj_units = 0x68cbf0
         loc_proj_info = 0x68e5f0
         loc_proj_units = 0x7db4f0
         hDS = 0x7dbb00
         hDriver = 0x62ef90
         hBand = 0x7dbcb0
         adfGeoTransform = {-180, 0.00025000000000000017, 0, 80, 0,
 -0.00025000000000000017}
         n_bands = 0
         force_imagery = 0
         error_msg = "\253\000\000\000\022", '\000' <repeats 19 times>,
 "i\000\000\000\022", '\000' <repeats 19 times>, "\222\000\000\000\022",
 '\000' <repeats 19 times>, "\231\000\000\000\022", '\000' <repeats 19
 times>, "\001\000\000\000
 \000\000\000@\323\377\377\377\177\000\000\260\327\377\377\377\177\000\000\350
 Y\372\367\377\177\000\000\060U\372\367\377\177\000\000\001\000\000\000\000\000\000\000\235\066\313\335\377\177\000\000\260Q\336\367\377\177\000\000\000\000\000\000\000\000\000\000D|\336\367\377\177\000\000`O\372\367\377\177\000\000\210\337\377\367\377\177\000\000\000\000\000\000\000\000\000\000"...
         projcomp_error = 1
         overwrite = 0
         offset = 0
         suffix = 0x629130 ""
         num_digits = 0
         module = 0x7ffff777ea28 <state+40>
         parm = {input = 0x7ffff777ea88 <state+136>, output = 0x626ea0,
 target = 0x6270e0, title = 0x6271a0, outloc = 0x6274a0, band = 0x626f60,
           memory = 0x627020, offset = 0x627260, num_digits = 0x627320,
 map_names_file = 0x6273e0, rat = 0x627560}
         flag_o = 0x7ffff777ea58 <state+88>
         flag_e = 0x626840
         flag_k = 0x627ab0
         flag_f = 0x627a10
         flag_l = 0x627a60
         flag_c = 0x627b00
         flag_p = 0x627b50
         flag_j = 0x626550
 (gdb)
 }}}




 Doing a convert operation with GDAL, no apparent issues (I CTRL-C'd it
 then):
 {{{
 gdal_translate
 /mnt/geodata/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
 /scratch/bla.tif
 Input file size is 1440000, 560000
 0..
 }}}

 **Data source:**
 http://earthenginepartners.appspot.com/science-2013-global-
 forest/download_v1.3.html

 I created a VRT from the "loss" layer tiles which I then tried to import
 as above:
 {{{
 gdalbuildvrt loss_global_forest_cover_loss_2000_2015.vrt *.tif

 gdalinfo loss_global_forest_cover_loss_2000_2015.vrt
 Driver: VRT/Virtual Raster
 [...]
 Size is 1440000, 560000
 Coordinate System is:
 GEOGCS["WGS 84",
     DATUM["WGS_1984",
         SPHEROID["WGS 84",6378137,298.257223563,
             AUTHORITY["EPSG","7030"]],
         AUTHORITY["EPSG","6326"]],
     PRIMEM["Greenwich",0],
     UNIT["degree",0.0174532925199433],
     AUTHORITY["EPSG","4326"]]
 Origin = (-180.000000000000000,80.000000000000000)
 Pixel Size = (0.000250000000000,-0.000250000000000)
 Corner Coordinates:
 Upper Left  (-180.0000000,  80.0000000) (180d 0' 0.00"W, 80d 0' 0.00"N)
 Lower Left  (-180.0000000, -60.0000000) (180d 0' 0.00"W, 60d 0' 0.00"S)
 Upper Right ( 180.0000000,  80.0000000) (180d 0' 0.00"E, 80d 0' 0.00"N)
 Lower Right ( 180.0000000, -60.0000000) (180d 0' 0.00"E, 60d 0' 0.00"S)
 Center      (   0.0000000,  10.0000000) (  0d 0' 0.00"E, 10d 0' 0.00"N)
 Band 1 Block=128x128 Type=Byte, ColorInterp=Gray
 }}}

 Test with GRASS GIS 7.3:

 {{{
 GRASS 7.3.svn (latlong):~/software/grass73_svn > r.in.gdal
 input=/mnt/geodata/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
 output=loss_global_forest_cover_loss_2000_2015
 Importing raster map <loss_global_forest_cover_loss_2000_2015>...
 0% Segmentation fault (core dumped)
 }}}

 System:
 {{{
 gcc -v
 ...
 gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)

 uname -a
 Linux fedora-calc 4.9.12-200.fc25.x86_64 #1 SMP Thu Feb 23 19:31:49 UTC
 2017 x86_64 x86_64 x86_64 GNU/Linux
 }}}

--

Comment (by neteler):

 Using valgrind:

 {{{
 GRASS 7.3.svn (latlong):~ > valgrind $CMD
 ==30211== Memcheck, a memory error detector
 ==30211== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
 ==30211== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright
 info
 ==30211== Command: r.in.gdal
 input=/mnt/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
 output=loss_global_forest_cover_loss_2000_2015
 ==30211==
 Importing raster map <loss_global_forest_cover_loss_2000_2015>...
 ==30211== Warning: client switching stacks?  SP change: 0xffee9d140 -->
 0xffe91ed30
 ==30211==          to suppress, use: --max-stackframe=5760016 or greater
 ==30211== Invalid write of size 8
 ==30211==    at 0x5273D89: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x52744B4: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x4063DE: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==    by 0x404F64: main (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==  Address 0xffe91ed28 is on thread 1's stack
 ==30211==
 ==30211== Invalid read of size 8
 ==30211==    at 0x6D63E3F: lseek (in /usr/lib64/libc-2.24.so)
 ==30211==    by 0x5273D8D: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x52744B4: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x4063DE: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==    by 0x404F64: main (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==  Address 0xffe91ed28 is on thread 1's stack
 ==30211==  in frame #0, created by lseek (???:)
 ==30211==
 ==30211== Invalid write of size 1
 ==30211==    at 0x527378C: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x52744B4: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x4063DE: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==    by 0x404F64: main (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==  Address 0xffe91ed34 is on thread 1's stack
 ==30211==
 ==30211== Invalid write of size 1
 ==30211==    at 0x5273798: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x52744B4: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x4063DE: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==    by 0x404F64: main (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==  Address 0xffe91ed32 is on thread 1's stack
 ==30211==
 ==30211== Invalid read of size 1
 ==30211==    at 0x527384E: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x52744B4: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==    by 0x4063DE: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==    by 0x404F64: main (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal)
 ==30211==  Address 0xffe91ed31 is on thread 1's stack
 ==30211==
 ==30211==
 ==30211== More than 10000000 total errors detected.  I'm not reporting any
 more.
 ==30211== Final error counts will be inaccurate.  Go fix your program!
 ==30211== Rerun with --error-limit=no to disable this cutoff.  Note
 ==30211== that errors may occur in your program without prior warning from
 ==30211== Valgrind, because errors are no longer being displayed.
 ==30211==
 ==30211==
 ==30211== Process terminating with default action of signal 11 (SIGSEGV):
 dumping core
 ==30211==  Access not within mapped region at address 0xFFE7BF420
 ==30211==    at 0x5273CBA: ??? (in
 /home/mundialis/software/grass73_svn/dist.x86_64-pc-linux-
 gnu/lib/libgrass_raster.7.3.svn.so)
 ==30211==  If you believe this happened as a result of a stack
 ==30211==  overflow in your program's main thread (unlikely but
 ==30211==  possible), you can try to increase the size of the
 ==30211==  main thread stack using the --main-stacksize= flag.
 ==30211==  The main thread stack size used in this run was 8388608.
 ==30211==
 ==30211== Process terminating with default action of signal 11 (SIGSEGV)
 ==30211==  Access not within mapped region at address 0xFFE7BF418
 ==30211==    at 0x4A286C0: _vgnU_freeres (vg_preloaded.c:59)
 ==30211==  If you believe this happened as a result of a stack
 ==30211==  overflow in your program's main thread (unlikely but
 ==30211==  possible), you can try to increase the size of the
 ==30211==  main thread stack using the --main-stacksize= flag.
 ==30211==  The main thread stack size used in this run was 8388608.
 ==30211==
 ==30211== HEAP SUMMARY:
 ==30211==     in use at exit: 106,603,369 bytes in 11,066 blocks
 ==30211==   total heap usage: 78,802 allocs, 67,736 frees, 136,593,845
 bytes allocated
 ==30211==
 ==30211== LEAK SUMMARY:
 ==30211==    definitely lost: 134 bytes in 5 blocks
 ==30211==    indirectly lost: 353 bytes in 20 blocks
 ==30211==      possibly lost: 0 bytes in 0 blocks
 ==30211==    still reachable: 106,602,882 bytes in 11,041 blocks
 ==30211==         suppressed: 0 bytes in 0 blocks
 ==30211== Rerun with --leak-check=full to see details of leaked memory
 ==30211==
 ==30211== For counts of detected and suppressed errors, rerun with: -v
 ==30211== ERROR SUMMARY: 10000000 errors from 5 contexts (suppressed: 0
 from 0)
 Segmentation fault (core dumped)
 }}}

 Next I converted the VRT to GeoTIFF and tried to import that:

 {{{
 GRASS 7.3.svn (latlong):~ > nice gdal_translate -co "COMPRESS=DEFLATE"
 /mnt/global_forest/GFC-2015-v1.3/loss_global_forest_cover_loss_2000_2015/loss_global_forest_cover_loss_2000_2015.vrt
 /scratch/loss_global_forest_cover_loss_2000_2015.tif
 Input file size is 1440000, 560000
 0..10...20...30...40...50...60...70...80...90...100 - done.

 GRASS 7.3.svn (latlong):~ > r.in.gdal
 /scratch/loss_global_forest_cover_loss_2000_2015.tif
 out=loss_global_forest_cover_loss_2000_2015
 Importing raster map <loss_global_forest_cover_loss_2000_2015>...
 Segmentation fault (core dumped)
 }}}

 The debug results are the same as before:

 {{{
 GRASS 7.2.2svn (latlong):~/software/grass72_svn_debugmode/bin.x86_64-pc-
 linux-gnu > gdb r.in.gdal
 r GNU gdb (GDB) Fedora 7.12.1-48.fc25
 Copyright (C) 2017 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later
 <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
 and "show warranty" for details.
 This GDB was configured as "x86_64-redhat-linux-gnu".
 Type "show configuration" for configuration details.
 For bug reporting instructions, please see:
 <http://www.gnu.org/software/gdb/bugs/>.
 Find the GDB manual and other documentation resources online at:
 <http://www.gnu.org/software/gdb/documentation/>.
 For help, type "help".
 Type "apropos word" to search for commands related to "word"...
 Reading symbols from r.in.gdal...done.
 (gdb) r /scratch/loss_global_forest_cover_loss_2000_2015.tif
 out=loss_global_forest_cover_loss_2000_2015
 Starting program:
 /home/mundialis/software/grass72_svn_debugmode/dist.x86_64-pc-linux-
 gnu/bin/r.in.gdal /scratch/loss_global_forest_cover_loss_2000_2015.tif
 out=loss_global_forest_cover_loss_2000_2015
 Missing separate debuginfos, use: dnf debuginfo-install
 glibc-2.24-8.fc25.x86_64
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib64/libthread_db.so.1".
 Proceeding with import of 1 raster bands...
 Importing raster map <loss_global_forest_cover_loss_2000_2015>...

 Program received signal SIGSEGV, Segmentation fault.
 0x00007ffff77a1ab9 in put_data (fd=0, null_buf=0x7fffffe9b080 "",
 cell=0x7fffc57fd010, row=0, n=1440000, zeros_r_nulls=0) at put_row.c:370
 370             compressed_buf[0] = work_buf[0] = nbytes;

 }}}

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3365#comment:2>
GRASS GIS <https://grass.osgeo.org>



More information about the grass-dev mailing list