[GRASS-dev] [bug #5076] (grass) gis.m: freeze when zooming on Map Display 2 while Map Display 1 is being refreshed

this bug's URL: http://intevation.de/rt/webrt?serial_num=5076
-------------------------------------------------------------------------

Subject: gis.m: freeze when zooming on Map Display 2 while Map Display 1 is being refreshed

Platform: GNU/Linux/x86
grass obtained from: CVS
grass binary for platform: Compiled from Sources
GRASS Version: 2006-08-29

In spearfish60.

1. $ grass63 -text
2. $ g.region rast=slope res=1 -a
(setting res to 1 to slow down the display to make the bug easy to reproduce)

3. $ gis.m
4. add some raster, display it
5. start Map Display 2, add another raster
6. refresh Map Display 2 and try to press 'zoom in' on Map Display 1 while Map Display 2 is being refreshed - the outcome is:

error renaming "/home/grassdata/spearfish60/sieczka/.tmp/sorbus/15530.0.ppm": no such file or directory
error renaming "/home/grassdata/spearfish60/sieczka/.tmp/sorbus/15530.0.ppm": no such file or directory
    while executing
"file rename -force $mapfile($mon) $lfile($id)"
    (procedure "GmCommonLayer::display_commands" line 31)
    invoked from within
"GmCommonLayer::display_commands $namespace $id [list $cmd]"
    (procedure "GmCommonLayer::display_command" line 2)
    invoked from within
"GmCommonLayer::display_command [namespace current] $id $cmd"
    (procedure "GmRaster::display" line 71)
    invoked from within
"GmRaster::display $node $mod"
    ("raster" arm line 2)
    invoked from within
"switch $type {
        group {
            GmGroup::display $node $mod
    }
    raster {
      GmRaster::display $node $mod
    }
    labels {
      GmLabels::disp..."
    (procedure "GmTree::display_node" line 7)
    invoked from within
"GmTree::display_node $n $mod"
    (procedure "GmGroup::display" line 25)
    invoked from within
"GmGroup::display "root" $mod"
    (procedure "MapCanvas::runprograms" line 69)
    invoked from within
"MapCanvas::runprograms $mon [expr {$mymodified != 0}]"
    (procedure "MapCanvas::drawmap" line 38)
    invoked from within
"MapCanvas::drawmap $mon"
    (procedure "MapCanvas::display_server" line 9)
    invoked from within
"MapCanvas::display_server"
    ("after" script)

gis.m freezes, I have to kill -9 it's wish.

I'm not saying that zooming on one display while the other is being refreshed must work (I don't think it is critical), but if the user tries to do such a thing (it's likely - the refresh takes long on Map Display 1, so he decides to use Map Display 2 in the meantime) it cannot result in a complete freeze of gis.m.

Maciek

-------------------------------------------- Managed by Request Tracker

Request Tracker wrote:

this bug's URL: http://intevation.de/rt/webrt?serial_num=5076
-------------------------------------------------------------------------

Subject: gis.m: freeze when zooming on Map Display 2 while Map Display 1 is being refreshed

Platform: GNU/Linux/x86
grass obtained from: CVS
grass binary for platform: Compiled from Sources
GRASS Version: 2006-08-29

In spearfish60.

1. $ grass63 -text
2. $ g.region rast=slope res=1 -a
(setting res to 1 to slow down the display to make the bug easy to reproduce)

3. $ gis.m
4. add some raster, display it
5. start Map Display 2, add another raster
6. refresh Map Display 2 and try to press 'zoom in' on Map Display 1 while Map Display 2 is being refreshed - the outcome is:

error renaming "/home/grassdata/spearfish60/sieczka/.tmp/sorbus/15530.0.ppm": no such file or directory
error renaming "/home/grassdata/spearfish60/sieczka/.tmp/sorbus/15530.0.ppm": no such file or directory

gis.m freezes, I have to kill -9 it's wish.

I'm not saying that zooming on one display while the other is being
refreshed must work (I don't think it is critical), but if the user
tries to do such a thing (it's likely - the refresh takes long on Map
Display 1, so he decides to use Map Display 2 in the meantime) it
cannot result in a complete freeze of gis.m.

It's likely that something is calling update when it probably
shouldn't. The gronsole code is the first place I'd look.

Just in case I haven't already made this point often enough in
relation to NVIZ: calling Tcl's "update" function is REALLY dangerous.

Unless you are going to check every single event handler to ensure
that:

a) the event handler will operate correctly when called at that point, AND
b) executing the event handler will not interfere with the code which
called update,

then: DON'T call "update".

--
Glynn Clements <glynn@gclements.plus.com>

I just added error trapping for trying to re-render 2 maps simultaneously.
What happens now is that the slower-rendering map just doesn't get rendered
and you have to click the render button again.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
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

From: Request Tracker <grass-bugs@intevation.de>
Reply-To: Request Tracker <grass-bugs@intevation.de>
Date: Wed, 30 Aug 2006 17:13:30 +0200 (CEST)
To: <grass-dev@grass.itc.it>
Subject: [GRASS-dev] [bug #5076] (grass) gis.m: freeze when zooming on Map
Display 2 while Map Display 1 is being refreshed

this bug's URL: http://intevation.de/rt/webrt?serial_num=5076
-------------------------------------------------------------------------

Subject: gis.m: freeze when zooming on Map Display 2 while Map Display 1 is
being refreshed

Platform: GNU/Linux/x86
grass obtained from: CVS
grass binary for platform: Compiled from Sources
GRASS Version: 2006-08-29

In spearfish60.

1. $ grass63 -text
2. $ g.region rast=slope res=1 -a
(setting res to 1 to slow down the display to make the bug easy to reproduce)

3. $ gis.m
4. add some raster, display it
5. start Map Display 2, add another raster
6. refresh Map Display 2 and try to press 'zoom in' on Map Display 1 while Map
Display 2 is being refreshed - the outcome is:

error renaming "/home/grassdata/spearfish60/sieczka/.tmp/sorbus/15530.0.ppm":
no such file or directory
error renaming "/home/grassdata/spearfish60/sieczka/.tmp/sorbus/15530.0.ppm":
no such file or directory
    while executing
"file rename -force $mapfile($mon) $lfile($id)"
    (procedure "GmCommonLayer::display_commands" line 31)
    invoked from within
"GmCommonLayer::display_commands $namespace $id [list $cmd]"
    (procedure "GmCommonLayer::display_command" line 2)
    invoked from within
"GmCommonLayer::display_command [namespace current] $id $cmd"
    (procedure "GmRaster::display" line 71)
    invoked from within
"GmRaster::display $node $mod"
    ("raster" arm line 2)
    invoked from within
"switch $type {
        group {
            GmGroup::display $node $mod
}
raster {
GmRaster::display $node $mod
}
labels {
GmLabels::disp..."
    (procedure "GmTree::display_node" line 7)
    invoked from within
"GmTree::display_node $n $mod"
    (procedure "GmGroup::display" line 25)
    invoked from within
"GmGroup::display "root" $mod"
    (procedure "MapCanvas::runprograms" line 69)
    invoked from within
"MapCanvas::runprograms $mon [expr {$mymodified != 0}]"
    (procedure "MapCanvas::drawmap" line 38)
    invoked from within
"MapCanvas::drawmap $mon"
    (procedure "MapCanvas::display_server" line 9)
    invoked from within
"MapCanvas::display_server"
    ("after" script)

gis.m freezes, I have to kill -9 it's wish.

I'm not saying that zooming on one display while the other is being refreshed
must work (I don't think it is critical), but if the user tries to do such a
thing (it's likely - the refresh takes long on Map Display 1, so he decides to
use Map Display 2 in the meantime) it cannot result in a complete freeze of
gis.m.

Maciek

-------------------------------------------- Managed by Request Tracker