#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 ----------------------+---------------------------------
Comment (by mmetz): Replying to [comment:2 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) > }}} Maybe you need to recompile GRASS with -g in order to replace "???" with some real information. I could reproduce the problem, the segfault is caused by stack overflow because alloca allocates memory in the stack, while malloc and calloc allocate memory in the heap. I could fix the segfault by replacing G_alloca()/G_freea() with G_malloc()/G_free(). Please try the attached patch against lib/raster/. -- Ticket URL: <https://trac.osgeo.org/grass/ticket/3365#comment:4> GRASS GIS <https://grass.osgeo.org>
_______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev