[GRASS-dev] Re: [GRASS-user] [bug #3041] nviz max resolution ppm image dump

Michael Barton michael.barton at asu.edu
Tue Aug 29 14:38:29 EDT 2006


Just to confuse the issue somewhat, the max resolution PPM dump almost works
on my Mac (18 August build). As you can see below, it is failing because I
apparently do not have an external command - pnmcat.

Is this required  for nviz and grass? Is it supposed to be a dependency? Or
is it just assumed to be present on systems

Here is what I get...

Writing Tile 1 of 16
Writing Tile 2 of 16
Writing Tile 3 of 16
Writing Tile 4 of 16
Writing Tile 5 of 16
Writing Tile 6 of 16
Writing Tile 7 of 16
Writing Tile 8 of 16
Writing Tile 9 of 16
Writing Tile 10 of 16
Writing Tile 11 of 16
Writing Tile 12 of 16
Writing Tile 13 of 16
Writing Tile 14 of 16
Writing Tile 15 of 16
Writing Tile 16 of 16
Assembling Tiles
sh: line 1: pnmcat: command not found
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
sh: line 1: pnmcat: command not found
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
sh: line 1: pnmcat: command not found
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
sh: line 1: pnmcat: command not found
pnmcat failed to create assembled image
Check that pnmcat is installed and path is set
sh: line 1: pnmcat: command not found
pnmcat failed to create assembled images
Check that pnmcat is installed and path is set

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton



> From: Bob Covill <bcovill at tekmap.ns.ca>
> Date: Tue, 29 Aug 2006 08:57:37 -0300
> To: Hamish <hamish_nospam at yahoo.com>
> Cc: GRASS developers list <grass-dev at grass.itc.it>
> Subject: [GRASS-dev] Re: [GRASS-user] [bug #3041] nviz max resolution ppm
> image dump
> 
> 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 GLXPixmap
>> 
>> no 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.ppm
>> 
>> assembly 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
> 
> 




More information about the grass-dev mailing list