[GRASS5] [bug #4049] (grass) d.m: dozens of d.mon zombies

Michael Barton michael.barton at asu.edu
Tue Jan 31 16:32:44 EST 2006


Thanks. This will help I'm sure.

Michael
______________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ  85287-2402
USA

voice: 480-965-6262; fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton


> From: Glynn Clements <glynn at gclements.plus.com>
> Date: Tue, 31 Jan 2006 19:00:11 +0000
> To: Request Tracker <grass-bugs at intevation.de>
> Cc: <grass5 at grass.itc.it>, Michael Barton <michael.barton at asu.edu>
> Subject: Re: [GRASS5] [bug #4049] (grass) d.m: dozens of d.mon zombies
> 
> 
> Request Tracker wrote:
> 
>> this bug's URL: http://intevation.de/rt/webrt?serial_num=4049
>> -------------------------------------------------------------------------
>> 
>> Subject: d.m: dozens of d.mon zombies
>> 
>> Platform: GNU/Linux/x86
>> grass obtained from: Trento Italy site
>> grass binary for platform: Compiled from Sources
>> GRASS Version: CVS 2005.01.27
>> 
>> Uisng d.m leads to lots of zombi d.mon processes.
>> 
>> 1. grass61 -text
>> 
>> 2. d.m
>> 
>> 3. ps -A | grep d.mon
>> 19313 pts/2    00:00:00 d.mon <defunct>
>> 
>> 4. press "x1" in d.m, or redraw, zoom, pan
>> 
>> 5. ps -A | grep d.mon
>> 19313 pts/2    00:00:00 d.mon <defunct>
>> 19340 pts/2    00:00:00 d.mon <defunct>
>> 
>> ... and so on.
>> 
>> By the end of Grass session there are dozens of d.mon zombies. Quiting d.m
>> colses them all.
> 
> FWIW, I also see lots of g.region zombies.
> 
> AFAICT, it's due to the use of "open", e.g.:
> 
> gm.tcl:298:  if ![catch {open "|d.mon -L" r} input] {
> gm.tcl:319:  if ![catch {open "|d.mon -L" r} input] {
> gm.tcl:385:  if ![catch {open "|d.mon -L" r} input] {
> gm.tcl:611:  if ![catch {open "|d.mon -L" r} input] {
> mapcanvas.tcl:233: if ![catch {open "|g.region -g" r} input] {
> mapcanvas.tcl:283: if ![catch {open "|d.mon -L" r} input] {
> mapcanvas.tcl:436: if ![catch {open "|g.region -g" r} input] {
> mapcanvas.tcl:599: if ![catch {open "|g.region -g" r} input] {
> mapcanvas.tcl:962: if ![catch {open "|g.region -g" r} input] {
> vector.tcl:548:  if ![catch {open "|d.mon -L" r} input] {
> 
> I can't find a single case which calls "close $input" once the stream
> is finished with. I suspect that wish won't actually wait() for the
> process until you call close, hence the accumulation of zombies.
> 
> BTW, I suspect that most of those "d.mon -L" commands are unnecessary.
> You should be unconditionally starting the monitor before drawing
> anything and unconditionally stopping it once you're done.
> 
> Also, none of the "d.mon start=PNG" commands have the -s switch; this
> will interfere with the user's choice of selected monitor. Use -s and
> $MONITOR_OVERRIDE instead of modifying $GISRC.
> 
> -- 
> Glynn Clements <glynn at gclements.plus.com>




More information about the grass-dev mailing list