Opened 8 years ago
Closed 4 years ago
#3295 closed defect (fixed)
GRASS GIS fails to start without terminal
Reported by: | wenzeslaus | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | 8.0.0 |
Component: | Startup | Version: | unspecified |
Keywords: | gisset, wxGUI, init, grass.py, nohup, terminal, shell, GUI, CLI, exec, g.gui | Cc: | |
CPU: | Unspecified | Platform: | Linux |
Description
On Ubuntu (16.04):
- Do Ctrl+F2 (window to directly run commands - rather than desktop applications)
- Type grass
- Fill the startup screen
- Start session
- Start fails
In 7.2 you get error about g.extension (#3253) and trunk you don't get anything (it fails later on).
It is reproducible with nohup:
nohup grass
Using less nohup.out
you can get the output which mainly reveals:
ERROR: Variable 'LOCATION_NAME' not set
followed by
Traceback (most recent call last): File "/usr/lib/grass72/gui/wxpython/wxgui.py", line 158, in <module> sys.exit(main()) File "/usr/lib/grass72/gui/wxpython/wxgui.py", line 145, in main app = GMApp(workspaceFile) File "/usr/lib/grass72/gui/wxpython/wxgui.py", line 48, in __init__ ... grass.exceptions.CalledModuleError: [it depends] Traceback (most recent call last): File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs func(*targs, **kargs) PyAssertionError: C++ assertion "GetEventHandler() == this" failed at ../src/common/wincmn.cpp(478) in ~wxWindowBase(): any pushed event handlers must have been removed Error in sys.exitfunc: Traceback (most recent call last): File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs func(*targs, **kargs) wx._core.PyAssertionError: C++ assertion "GetEventHandler() == this" failed at ../src/common/wincmn.cpp(478) in ~wxWindowBase(): any pushed event handlers must have been removed
Workaround which assumes you have some default mapset already:
grass --exec g.gui
Answer to the "What did you expect to happen?" question:
- GRASS GIS should start using this method as other applications do (e.g. QGIS or Gimp).
Other possible improvements:
- Message saying that the session is not started instead of "Variable 'LOCATION_NAME' not set"
- Some temporary location generated for the case where there is not 'last location used' so that
grass --exec g.gui
(orgrass --tmp-loc --exec g.gui
) works on a fresh machine (it seems that the demolocation is not part of the Ubuntu distribution) - The above point and code packed into just
grass
. This comes to the discussion about role of location at startup from different side. However, it is pretty far from the core of this ticket which deals with GRASS GIS running without terminal.
Change History (5)
comment:1 by , 8 years ago
comment:3 by , 6 years ago
Milestone: | 7.4.1 → 7.4.2 |
---|
comment:4 by , 6 years ago
Milestone: | 7.4.2 → 8.0.0 |
---|
comment:5 by , 4 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Both cases, Ctrl+F2 and nohup, fixed by PR:768. Open new issues on GitHub in case there are follow up problems.
Note:
See TracTickets
for help on using tickets.
From the nohup case I get the following in the output (as expected, I suppose):
With the following patch, nohup case actually runs.
grass.py
start_gui(grass_gui)However, with Ctrl+F2 I still get the same behavior. I don't see anything helpful in the
sudo strace -p... -s9999 -e write
output (using PID ofgrass
andgis_set.py
).