[GRASS-dev] gis.m crashes on zoom-out
Glynn Clements
glynn at gclements.plus.com
Thu Apr 5 12:34:08 EDT 2007
Hamish wrote:
> > Hamish wrote:
> > > found a bug in gis.m zoom out tool.
> > >
> > > start gis.m, select zoom out, draw a box, and poof! gis.m crashes.
> > >
> > > happens always in a lat long location when you zoom out past 90NS
> > > 180EW view or a bit harder to trigger in spearfish, but crashes on
> > > the 4th or 5th zoom out when the rows*cols gets to be something
> > > silly like 500e6*500e6.
> > >
> > >
> > > presumably g.region exits with an error which isn't handled well.
>
> Glynn Clements wrote:
> > Yep.
> >
> > If you spawn a child process with "open |...", any errors are reported
> > by way of the corresponding "close" throwing an exception. Tcl's
> > definition of "error" includes anything being written to stderr (so
> > any warnings are treated as errors), as well as a non-zero exit code.
> >
> > Any calls to "close" on a subprocess pipe should be enclosed in a
> > catch statement.
>
>
> gui/tcltk/gis.m$ grep close * | grep -v catch
>
>
> finds this one in georect.tcl
> proc GRMap::zoom_gregion { args} {
>
> and in histogram.tcl:
> proc GmHist::display { node mod } {
>
> and in rastnums.tcl:
> proc GmRnums::display { node mod } {
>
> and in runandoutput.tcl:
> proc guarantee_xmon {} {
>
>
> ..maybe more?
>
>
> I don't see the open|g.region in mapcanvas.tcl which triggers this bug?
Line 585, in Mapcanvas::runprograms:
if {[catch {close $input} error]} {
puts $error
exit 1
}
It catches the error, then prints the error message and exits. Not
really much point in catching it.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list