Hi Hamish,
I suspect there are a few bugs with some of the math in this. The best
place to start looking is Nstart_zoom_cmd in do_zoom.c (nviz/src). The
off-screen stuff was generating the MALLOC error for me this morning.
After the off-screen buffer was created the maxx and maxy returned were
incorrect which resulted in negative numbers being passed to malloc
which of course produced an error. I disabled the off-screen stuff and
it worked fine.
To debug this I would first start by disabling the off-screen stuff in
Nstart_zoom and draw the images directly. Also, check the dimensions
that are being calculated and passed to GS_write_zoom.
Hope this helps.
--
Bob
On Tue, 2006-08-29 at 18:06 +1200, Hamish wrote:
William Hargrove wrote:
> >>My nviz dies with a segfault when I try to dump an image as maximum
> >>resolution ppm.
> >>
> >>I have this same problem with grass 6.1 under FC 5, and under grass
> >>5.4 under FC 4.
..
> >>I can dump the other formats just fine.
> >>
> >>The map products look great on the screen, but aren't much use if I
> >>can't get them into a high-res image file.
> >>
> >>Does anyone have any advice on this problem?Hamish wrote:
> >what's the date on the 6.1? 6.1.0 or 6.1-cvs? This was an old known
> >problem on 64bit &/or big endian (Mac G5), I had thought that it was
> >fixed by Glynn & crew some months ago.I guess it is this bug after all:
> > http://intevation.de/rt/webrt?serial_num=3041
William Hargrove wrote:
> This is 6.1.0 built from source, running under 64-bit FC 5.
>
> Here is what happens when I try to dump a max-res ppm:
>
> recalculating normals...
> recalculating normals...
> Diagnostic: invalid command name "Nviz_animation_save" -- Save
> procedure for panel animation may not be defined
> Diagnostic: invalid command name "Nviz_kanimator_save" -- Save
> procedure for panel kanimator may not be defined
> Diagnostic: invalid command name "Nviz_query_save" -- Save procedure
> for panel query may not be defined
> Diagnostic: invalid command name "Nviz_sdiff_save" -- Save procedure
> for panel sdiff may not be defined
> Diagnostic: invalid command name "Nviz_label_save" -- Save procedure
> for panel label may not be defined
> Diagnostic: invalid command name "Nviz_scale_save" -- Save procedure
> for panel scale may not be defined
> Diagnostic: invalid command name "Nviz_pos_save" -- Save procedure
> for panel pos may not be defined
> Diagnostic: invalid command name "Nviz_resize_save" -- Save procedure
>
> for panel resize may not be defined
> Diagnostic: invalid command name "Nviz_pick_save" -- Save procedure
> for panel pick may not be defined
> Diagnostic: invalid command name "Nviz_highlight_save" -- Save
> procedure for panel highlight may not be defined
> Creating PBuffer Using GLX 1.3
> Final Assembled Image will be 1 x 1
> Writing Tile 1 of 1
> Assembling Tiles
> GLX -- destroy pbuffer
> ./donviz: line 2: 10088 Segmentation fault nviz
> elevation=elev48.new color=neon2.25
> vector=states100,neondomains_states
>
> Any ideas?I get a segfault too: (32bit P4, 2gig RAM, Debian/stable)
Speafish with nviz window made to be large:
G63> nviz elevation.10m
Loading Data
Update elev null mask
Loading Data
translating colors from fp
recalculating normals...
r200_makeX86Normal3fv/197 CVAL 0 OFFSET 14 VAL 8260df0
r200_makeX86Normal3fv/198 CVAL 4 OFFSET 20 VAL 8260df4
r200_makeX86Normal3fv/199 CVAL 8 OFFSET 25 VAL 8260df8
r200_makeX86Normal3fv done
% recalculating normals...
Creating PBuffer Using GLX 1.3
Create PixMap Using GLX 1.1
Final Assembled Image will be 1935 x 2048
Writing Tile 1 of 9
Writing Tile 2 of 9
Writing Tile 3 of 9
MALLOC Failed
Segmentation fault(hard to replicate)
The "MALLOC Failed" message comes from lib/ogsf/gsd_prim.c
/************************************************************************/
int gsd_writeView(unsigned char **pixbuf, unsigned int xsize,
unsigned int ysize)
{/* Malloc Buffer for image */
*pixbuf = malloc(xsize * ysize * 4);if (!*pixbuf) {
fprintf(stderr, "MALLOC Failed\n");
return (0);
}/* Read image buffer */
glReadBuffer(GL_FRONT);/* Read Pixels into Buffer */
glReadPixels(0, 0, xsize, ysize, GL_RGBA, GL_UNSIGNED_BYTE, *pixbuf);
return (1);
}/************************************************************************/
with window left at starting size: [note larger "Final Assembled Size"]
G63> nviz elevation.10m
Loading Data
Update elev null mask
Loading Data
translating colors from fp
recalculating normals...
r200_makeX86Normal3fv/197 CVAL 0 OFFSET 14 VAL 82613f8
r200_makeX86Normal3fv/198 CVAL 4 OFFSET 20 VAL 82613fc
r200_makeX86Normal3fv/199 CVAL 8 OFFSET 25 VAL 8261400
r200_makeX86Normal3fv done
% Creating PBuffer Using GLX 1.3
Create PixMap Using GLX 1.1
Final Assembled Image will be 2048 x 2048
Writing Tile 1 of 9
Writing Tile 2 of 9
Writing Tile 3 of 9
Writing Tile 4 of 9
Writing Tile 5 of 9
Writing Tile 6 of 9
Writing Tile 7 of 9
Writing Tile 8 of 9
Writing Tile 9 of 9
Assembling Tiles
pnmcat: Zero byte allocation
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
pnmcat: Zero byte allocation
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
pnmcat: Zero byte allocation
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
pnmcat: EOF / read error reading magic number
pnmcat failed to create assembled images
Check that pnmcat is installed and path is set
Destroy Pixmap and GLXPixmapno segfault, NVIZ keeps running, these files are left behind:
(easy to replicate)0 Aug 29 17:24 spearNVhi2.ppm
3145745 Aug 29 17:24 spearNVhi2_1_1.ppm
3145745 Aug 29 17:24 spearNVhi2_1_2.ppm
14 Aug 29 17:24 spearNVhi2_1_3.ppm
3145745 Aug 29 17:24 spearNVhi2_2_1.ppm
3145745 Aug 29 17:24 spearNVhi2_2_2.ppm
14 Aug 29 17:24 spearNVhi2_2_3.ppm
14 Aug 29 17:24 spearNVhi2_3_1.ppm
14 Aug 29 17:24 spearNVhi2_3_2.ppm
11 Aug 29 17:24 spearNVhi2_3_3.ppm
0 Aug 29 17:24 spearNVhi2tmp1.ppm
0 Aug 29 17:24 spearNVhi2tmp2.ppm
0 Aug 29 17:24 spearNVhi2tmp3.ppm
0 Aug 29 17:30 spearNVhi3.ppm.ppmassembly of rows then full image fail as partials are not valid images
(14 byte ones). Images with data assemble, but contain random x-window
buffer weirdness: multi-virtual-desktop collages.Summary: the partial tiles are broken.
I haven't tried it with just one workspace.
minimizing the NVIZ window (before clicking "ok" for the output
filename) gives the same result.at the end of the bug report Glynn offers a reason, but I have no idea
where to go from there. Dumb debugging effort: I still get the broken
result if I comment out "Nset_cancel_func update" in
visualization/nviz/scripts/nviz2.2_script
and rebuild nviz.?
Hamish