#1286 closed defect (fixed)
clean_temp can not be called before LOCATION_NAME is set
Reported by: | marisn | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 6.4.6 |
Component: | Startup | Version: | 6.4.1 RCs |
Keywords: | wingrass clean_temp init | Cc: | |
CPU: | Unspecified | Platform: | MSWindows Vista |
Description
clean_temp uses G_gisinit(argv[0]) and thus should never be run outside of GRASS session, still it is used in init.bat before location name is set on windows and is failing with error: "G_getenv(): Variable LOCATION_NAME not set" Calling G_getenv on non-existing variable is an fatal error and thus brings down whole startup procedure.
There are two possible solutions for this problem:
- do not use clean_temp in init.bat
- do not use G_gisinit() in clean_temp
Change History (13)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Keywords: | wingrass added |
---|
Replying to marisn:
clean_temp uses G_gisinit(argv[0]) and thus should never be run outside of GRASS session, still it is used in init.bat before location name is set on windows and is failing with error: "G_getenv(): Variable LOCATION_NAME not set" Calling G_getenv on non-existing variable is an fatal error and thus brings down whole startup procedure.
There are two possible solutions for this problem:
- do not use clean_temp in init.bat
- do not use G_gisinit() in clean_temp
Probably I overlooked something, clean_temp
is called in init.bat
on three different places. When I disable redirecting to nuldev and run GRASS with init.bat
I am getting no error messages and clean_tmp
seems to work well.
follow-up: 4 comment:3 by , 14 years ago
All three places of clean_tmp can be reached without LOCATION_NAME being set. http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/lib/init/init.ba
follow-ups: 5 7 comment:4 by , 14 years ago
Replying to marisn:
All three places of clean_tmp can be reached without LOCATION_NAME being set. http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/lib/init/init.ba
On which conditions? Seems to work here without any problem.
follow-up: 6 comment:5 by , 14 years ago
Replying to martinl:
Replying to marisn:
All three places of clean_tmp can be reached without LOCATION_NAME being set. http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/lib/init/init.ba
On which conditions? Seems to work here without any problem.
Please provide more precise information, it's marked as a "blocker"...
comment:6 by , 14 years ago
Priority: | blocker → critical |
---|
All three places of clean_tmp can be reached without LOCATION_NAME being set. http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/lib/init/init.ba
On which conditions? Seems to work here without any problem.
Please provide more precise information, it's marked as a "blocker"...
downgrading priority at this point
comment:7 by , 14 years ago
Replying to martinl:
Replying to marisn:
All three places of clean_tmp can be reached without LOCATION_NAME being set. http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/lib/init/init.ba
On which conditions? Seems to work here without any problem.
try removing the %HOME%/.grassrc6 file or installing on a fresh system/VM.
And/or cancel after initial startup with a new .grassrc6 file containing location (etc) set to <UNKNOWN>, then restart.
Or delete/rename the GISDBASE, LOCATION, or MAPSET dir which happens to be the last one used.
The .bat file just checks that the rc file exists in %HOME%, not that it contains valid entries, and if it's the same as init.sh, the operational version used by G_*() isn't the one in $HOME anyway.
I'm not sure if init.sh is terribly better about it checking validity, but the question is if it creates a fatal script exit in the WinGrass startup, while a similar problem would just create a harmless error message to the console on UNIX. ??
Hamish
comment:8 by , 13 years ago
Priority: | critical → major |
---|---|
Summary: | clean_temp can not be called before LCATION_NAME is set → clean_temp can not be called before LOCATION_NAME is set |
comment:9 by , 12 years ago
Milestone: | 6.4.1 → 6.4.4 |
---|
comment:11 by , 9 years ago
Milestone: | 6.4.4 → 6.4.6 |
---|
comment:12 by , 6 years ago
Keywords: | clean_temp init added |
---|---|
Resolution: | → fixed |
Status: | new → closed |
In G7 this is solved since clean_temp
(which is using G_gisinit()
) is called only in grass.py
and g.mapset
. grass.py
calls it only after proper setup and before teardown and g.mapset
itself uses G_gisinit()
. Closing as fixed.
grep --exclude-dir={.svn,OBJ.,dist.*,bin.*} -IrnE clean_temp
Replying to marisn:
There is only one possible solution: the first one. The purpose of clean_temp is to clean up the mapset's temp directory (<database>/<location>/<mapset>/.tmp/<hostname>). If you don't have a database/location/mapset set, clean_temp can't work.