[bug #4725] [GRASS-dev] still togl problems in NVIZ for volume
Hamish
hamish_nospam at yahoo.com
Wed Aug 23 03:22:26 EDT 2006
Markus wrote:
> With tcltk <= 8.4.11 it crashes :-( Tested on RHEL4 and Mandriva2006.
latest 6.3-cvs on Debian/sarge with tcltk 8.4 [threaded] it crashes when
I try to [Add] a new isosurface. First time I tried it happened when
adding the 3rd isosurface, second time it segfaulted on the first surface.
I found this earlier:
=========================
from https://intevation.de/rt/webrt?serial_num=4725
Wed, Jun 28 2006 12:13:10 Mail sent by hbowman
Hi,
"nviz volume=map3d" segfaults.. see bug report for spearfish example.
I've traced it back to incorrect mode in nviz/src/volume.c
slice_get_drawmode()
mode=1969841253 (or so)
when it should be like DM_GOURAUD=256 or DM_FLAT=512
actual segfault seems to happen after slice_get_drawmode()'s
return (TCL_ERROR);
???
called from scripts/panel_vol.tcl line ~450:
set Nv_(ShadeStyle) [Nvol$curr slice get_drawmode]
I followed "mode" into lib/ogsf/GVL2.c GVL_slice_get_drawmode()
and then *gvl to gvl_get_vol() in lib/ogsf/gvl.c, but then I get lost.
uninit'd variable?
Hamish
> Markus Neteler wrote:
>
> > > With tcltk <= 8.4.11 it crashes :-( Tested on RHEL4 and
> > > Mandriva2006.
> >
> > On Mandriva2006 it crashes like this:
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to Thread -1238534432 (LWP 24083)]
> > 0xb7fa09d7 in gvl_read_char (pos=0, data=0x0) at gvl_calc.c:602
> > 602 {
> > (gdb) bt full
> > #0 0xb7fa09d7 in gvl_read_char (pos=0, data=0x0) at gvl_calc.c:602
> > No locals.
> > #1 0xb7fa1a17 in gvld_isosurf (gvl=0x8158d78) at gvld.c:248
> > tx = 0.00224719103
> > ty = 0.00224719103
> > tz = 0.0224719103
> > cols = 593
> > rows = 340
> > depths = 4
> > x = 0
> > y = 0
> > z = 0
> > i = Variable "i" is not available.
>
> Both of these reports have a NULL data field in the geovol_isosurf
> structure. This field is NULL when the structure is initially created,
> and initialised by gvl_isosurf_calc() (gvl_calc.c:542).
>
> gvld_vol() calls gvl_isosurf_calc() before calling gvld_isosurf(), so
> it appears that gvl_isosurf_calc() is failing to initialise the field
> for some reason.
>
> I can only suggest single-stepping through gvl_isosurf_calc() to try
> to figure out why the field doesn't get set.
>
> So far as trying to comprehend that code is concerned, fixing the
> formatting would probably help, as would fixing the macros at the top
> of that file so that they don't refer to local variables.
>
> --
> Glynn Clements <glynn at gclements.plus.com>
>
> _______________________________________________
> grass-dev mailing list
> grass-dev at grass.itc.it
> http://grass.itc.it/mailman/listinfo/grass-dev
More information about the grass-dev
mailing list