#2034: GUI crashes on launch for newly compiled binary for Mac OS X
-----------------------+----------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
Type: defect | Status: new
Priority: critical | Milestone: 7.0.0
Component: wxGUI | Version: svn-trunk
Keywords: | Platform: MacOSX
Cpu: OSX/Intel |
-----------------------+----------------------------------------------------
Beginning several months ago, with the introduction of the new toolbox,
GRASS 7 GUI crashes on launch--after selecting a working location/mapset
and after the splash screen. the immediate cause of the crash is that
..xml/menudata.xml is empty.
The reason that menudata.xml is empty is that make xml/menudata.xml fails
during compilation. It fails with a bogus error of "No module named
wxversion".
Here is the error:
{{{
make /Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/etc/gui/wxpython/xml/module_items.xml
Generating interface description for all modules...
GISRC=/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/demolocation/.grassrc70
GISBASE=/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-darwin12.4.0
PATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:$PATH"
PYTHONPATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/etc/python:/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/etc/python:$PYTHONPATH"
DYLD_LIBRARY_PATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/lib:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/lib:" LC_ALL=C python tools/build_modules_xml.py >
/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/etc/gui/wxpython/xml/module_items.xml
make xml/menudata.xml
GISRC=/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/demolocation/.grassrc70
GISBASE=/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-darwin12.4.0
PATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:$PATH"
PYTHONPATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/etc/python:/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/etc/python:$PYTHONPATH"
DYLD_LIBRARY_PATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/lib:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/lib:" LC_ALL=C python core/toolboxes.py > xml/menudata.xml
ERROR: wxGUI requires wxPython. No module named wxversion
make[4]: *** [xml/menudata.xml] Error 1
make[3]: [default] Error 2 (ignored)
}}}
A little background:
1. I am compiling on OS X 10.8 (Mt. Lion) with some special hacks so that
the binary works with OS X 10.6 (Snow Leopard). All Mac binaries are
compiled with wxPython bundled in the binary so that there is no conflict
between the version use for compiling and the version on a user's
computer. This has worked fine for over a year.
2. Beginning in the fall of 2012, I started getting errors during
compilation from a series of new modules that share some new gui classes,
including mapswipe, cartographic composer, etc. BUT, these modules work
fine in spite of the compiler errors. I mention these because the cause of
these errors may be related to the problem in this report.
The crash reported here seems to be associated with the new toolbox
module. Glynn thinks that it may be a ctypes problem. He notes:
"It seems to start going wrong with lib/python/ctypes, specifically:
{{{
GISRC=/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/demolocation/.grassrc70
GISBASE=/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-darwin12.4.0
PATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:$PATH"
PYTHONPATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/etc/python:/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/etc/python:$PYTHONPATH"
DYLD_LIBRARY_PATH="/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/bin:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/lib:/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/lib:" LC_ALL=C ./ctypesgen.py --cpp "gcc -E
-I/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include -I/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/include -D__GLIBC_HAVE_LONG_LONG" -lgrass_gis.7.0.svn
/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include/grass/gis.h
/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include/grass/defs/gis.h -o OBJ.x86_64-apple-
darwin12.4.0/gis.py
Status: Preprocessing
/var/folders/dm/x_m7msz48xj_9c0059b59rf00000gn/T/tmpH5wFMB.h
Status: gcc -E -I/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/include
-I/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include -D__GLIBC_HAVE_LONG_LONG -U __BLOCKS__ -U __GNUC__
-dD "-Dinline=" "-D__inline__=" "-D__extension__=" "-D_Bool=uint8_t"
"-D__const=const" "-D__asm__(x)=" "-D__asm(x)=" "-DCTYPESGEN=1"
"-D__uint16_t=uint16_t" "-D__uint32_t=uint32_t" "-D__uint64_t=uint64_t"
/var/folders/dm/x_m7msz48xj_9c0059b59rf00000gn/T/tmpH5wFMB.h
Error: gcc -E -I/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/include
-I/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include -D__GLIBC_HAVE_LONG_LONG: In file included from
/usr/include/stdio.h:64,
Error: gcc -E -I/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/include
-I/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include -D__GLIBC_HAVE_LONG_LONG: from
/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include/grass/gis.h:24,
Error: gcc -E -I/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/include
-I/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include -D__GLIBC_HAVE_LONG_LONG: from
/var/folders/dm/x_m7msz48xj_9c0059b59rf00000gn/T/tmpH5wFMB.h:1:
Error: gcc -E -I/Users/Shared/grass_dev/grass7_dev/dist.x86_64
-apple-darwin12.4.0/include
-I/Users/Shared/grass_dev/grass7_dev/dist.x86_64-apple-
darwin12.4.0/include -D__GLIBC_HAVE_LONG_LONG:
/usr/include/sys/cdefs.h:81:2: warning: #warning "Unsupported compiler
detected"
Status: Parsing
/var/folders/dm/x_m7msz48xj_9c0059b59rf00000gn/T/tmpH5wFMB.h
Error: /usr/include/stdio.h:252: Syntax error at '__attribute__'
Error: /usr/include/stdio.h:252: Syntax error at 'i2'
}}}
I'm wondering if it's trying to use headers written for gcc with
clang, or vice versa.
In any case, if lib/python/ctypes fails, any Python modules which
import modules from grass.lib will fail."
This is where we are right now.
There is a workaround, found by Anna.
1. start GRASS 7
2. in the terminal, cd to ../gui/wxpython
3. run: python core/toolboxes.py > xml/menudata.xml
4. then you can start the GUI with g.gui
William Kyngesburye reports that he has no problem if he compiles with
wxPython 2.9 and Python 2.7. I'm using wxPython 2.8.12 and Python 2.6 for
backward compatibility, but there should not be any code specific to
wxPython 2.9 or Python 2.7 in the relevant modules. Also, I tried
compiling with new Python and wxPython and still got errors.
Anna, Glynn--and I--think this is a deeper problem (maybe in ctypes code
or implementation) that probably affects other things but that is not
causing a crash.
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2034>
GRASS GIS <http://grass.osgeo.org>