[GRASS-dev] GRASS 6.2.2: gis.m crashes when there are more
than one map with same name in path
Michael Barton
michael.barton at asu.edu
Tue Oct 16 13:11:05 EDT 2007
This bug is a combination of TclTk and non-TclTk issues. The proximate
'cause' is that TclTk treats all data sent to stderr as real errors.
The current fix in 6.3 involves select.tcl (which now adds @[mapset] to all
selected items -- I don't know if this would or would not break other things
in 6.2), changes to quiet extraneous messages like the one below in some of
the GRASS modules, and changes to mapcanvas.tcl (and many other modules) to
greatly improve error trapping. The latter involves new error trapping
routines in gm.tcl.
I agree with Glynn that the easiest fix is to replace exit with return. This
will simply output the "error" message to the terminal and continue on.
I'm not sure how to put this into 6.2.2. Can you do it Moritz?
Michael
On 10/16/07 5:37 AM, "Glynn Clements" <glynn at gclements.plus.com> wrote:
>
> Moritz Lennert wrote:
>
>>> I don't know if this is a problem with just my installation (compiled
>>> Debian 6.2.2 package with source code from Debian site) but it seems
>>> that that an important bug which (AFAIK) is fixed in 6.3, is still
>>> present in 6.2.2:
>>>
>>> In spearfish:
>>>
>>> 1) g.copy vect=fields at PERMANENT,fields
>>>
>>> 2) Select 'fields' as vector file to display and in Map Display "Zoom to
>>> selected map".
>>>
>>> => gis.m crashes and in terminal you see:
>>>
>>> WARNING: 'vector/fields' was found in more mapsets (also found in user1).
>>>
>>> If another bugfix release of 6.2 is foreseen can this be backported ?
>>>
>> Re-launching this question since we will begin GIS classes soon with
>> 6.2.2 and I would like to resolve this before.
>>
>> Can someone confirm this bug ? If yes, could someone point me to the fix
>> in 6.3, so that I can at least locally backport it to 6.2.2 ?
>
> In mapcanvas.tcl, proc MapCanvas::zoom_gregion:
>
> 6.2.2:
> if {[catch {close $input} error]} {
> puts $error
> exit
> }
> CVS:
> if {[catch {close $input} error]} {
> Gm::errmsg $error [G_msg "Error setting region"]
> }
>
> The quickest fix is to change "exit" to "return" (Gm::errmsg ends with
> "uplevel 1 return", which causes its caller to return).
>
> BTW, I note that the top of gm.tcl has been modified to catch errors
> and call Gm::errmsg. But Gm::errmsg hasn't been defined at that point.
__________________________________________
Michael Barton, Professor of Anthropology
Director of Graduate Studies
School of Human Evolution & Social Change
Center for Social Dynamics and Complexity
Arizona State University
phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton
More information about the grass-dev
mailing list