#775: r.terraflow: file=/home/mlennert/STREAM/STREAM_tQhXkQ:cannot read!: Bad address -----------------------+---------------------------------------------------- Reporter: mlennert | Owner: grass-dev@lists.osgeo.org Type: defect | Status: new Priority: normal | Milestone: 6.4.0 Component: Raster | Version: svn-develbranch6 Resolution: | Keywords: terraflow bad address Platform: Linux | Cpu: Unspecified -----------------------+---------------------------------------------------- Comment (by mlennert):
Replying to [comment:6 glynn]: > I suggest changing runFormation() to only try to read as many items as it has space for, i.e. replace the existing code with the commented-out version in: > > {{{ > //for (size_t i=0; i< nb_runs; i++) { > while(!instream->eof()) { > //crt_run_size = (i == nb_runs-1) ? last_run_size: run_size; > > //SDEBUG cout << "i=" << i << ": runsize=" << crt_run_size << ", "; > > crt_run_size = makeRun_Block(instream, data, run_size, cmp); > /* #ifdef BLOCKED_RUN */ > /* makeRun(instream, data, crt_run_size, cmp); */ > /* #else */ > /* makeRun_Block(instream, data, crt_run_size, cmp); */ > /* #endif */ > }}} Is this what you meant ?: {{{ --- SRC/GRASS/grass_trunk/include/iostream/ami_sort_impl.h 2008-08-13 21:36:15.000000000 +0200 +++ SRC/GRASS/grass_trunk/dist.i486-pc-linux- gnu/include/grass/iostream/ami_sort_impl.h 2009-10-13 17:00:30.000000000 +0200 @@ -221,13 +221,13 @@ } SDEBUG MM_manager.print(); - //for (size_t i=0; i< nb_runs; i++) { - while(!instream->eof()) { - //crt_run_size = (i == nb_runs-1) ? last_run_size: run_size; + for (size_t i=0; i< nb_runs; i++) { + //while(!instream->eof()) { + crt_run_size = (i == nb_runs-1) ? last_run_size: run_size; - //SDEBUG cout << "i=" << i << ": runsize=" << crt_run_size << ", "; + SDEBUG cout << "i=" << i << ": runsize=" << crt_run_size << ", "; - crt_run_size = makeRun_Block(instream, data, run_size, cmp); + //crt_run_size = makeRun_Block(instream, data, run_size, cmp); /* #ifdef BLOCKED_RUN */ /* makeRun(instream, data, crt_run_size, cmp); */ /* #else */ }}} Now I get: {{{ GRASS 7.0.svn (nc_spm_06):~ > r.terraflow elevation=elevat...@permanent filled=fill direction=flow swatershed=waters accumulation=accum tci=tci STREAM temporary files in /var/tmp/ (THESE INTERMEDIATE STREAMS WILL NOT BE DELETED IN CASE OF ABNORMAL TERMINATION OF THE PROGRAM. TO SAVE SPACE PLEASE DELETE THESE FILES MANUALLY!) file stats.out exists - renaming. MFD flow direction D8CUT=999999986991104.000000 Memory size: 300.00M (314572800) bytes Memory manager registering memory in MM_IGNORE_MEMORY_EXCEEDED mode. total elements=2025000, nodata elements=0 largest temporary files: FILL: 108.15M (113400000) [2025000 elements, 56B each] FLOW: 154.50M (162000000) [2025000 elements, 80B each] Will need at least 308.99M (324000000) space available in /var/tmp/ ------------------------------ COMPUTING FLOW DIRECTIONS classifying nodata (inner & boundary) assigning preliminary directions finding flat areas (plateaus and depressions) EMPQUEUEADAPTIVE: starting in-memory pqueue EMPQUEUEADAPTIVE: available memory: 297.413MB EMPQUEUEADAPTIVE: desired memory: 297.413MB sz_stream: 270388 buf_arity: 200 mm_overhead: 8665728 mm_avail: 311859944. EMPQUEUEADAPTIVE: memory overhead set to 8.26428MB EMPQUEUEADAPTIVE: pqsize set to 37899277 r.terraflow: plateau.cc:364: void detectPlateaus::relabelPlateaus(): Assertion `root >= LABEL_START' failed. Aborted }}} backtrace of that attached. I again see {{{ ae = AMI_ERROR_NO_ERROR }}} even though everything is compiled with -g -O0. -- Ticket URL: <http://trac.osgeo.org/grass/ticket/775#comment:7> GRASS GIS <http://grass.osgeo.org>
_______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev