Opened 5 years ago

Last modified 4 years ago

#3910 new defect

nviz: Switching to 3d view kills the wxGUI

Reported by: neteler Owned by: grass-dev@…
Priority: normal Milestone: 7.8.3
Component: wxGUI Version: git-releasebranch78
Keywords: nviz, python3 Cc:
CPU: Unspecified Platform: Linux

Description

(reported via a user)

Switching to 3d view kills the GUI. When it goes to set up GLX, the X11 Display object has random pointers instead of locking functions, so it segfaults. The dpy->lock pointer is invalid:

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007f1c1901d03d in XQueryExtension (dpy=dpy@entry=0x55feadc10810,
name=name@entry=0x7f1c14aaf006 "GLX", major_opcode=major_opcode@entry=0
x55feaf092f94, first_event=first_event@entry=0x7fffbb41b3d4,
    first_error=first_error@entry=0x55feaf092f98) at QuExt.c:43
43          LockDisplay(dpy);
(gdb) where
#0  0x00007f1c1901d03d in XQueryExtension
    (dpy=dpy@entry=0x55feadc10810, name=name@entry=0x7f1c14aaf006
"GLX", major_opcode=major_opcode@entry=0x55feaf092f94,
first_event=first_event@entry=0x7fffbb41b3d4,
first_error=first_error@entry=0x55feaf092f98) at QuExt.c:43
#1  0x00007f1c14aaae8d in InitDisplayInfoEntry (dpy=0x55feadc10810) at
libglxmapping.c:645
#2  0x00007f1c14aaae8d in __glXLookupDisplay (dpy=<optimized out>,
dpy@entry=0x55feadc10810) at libglxmapping.c:737
#3  0x00007f1c14aa6e09 in glXQueryVersion (dpy=0x55feadc10810,
major=0x7fffbb41b480, minor=0x7fffbb41b484) at libglx.c:1170
#4  0x00007f1c14b798c5 in wxGLCanvasX11::GetGLXVersion() () at
../include/wx/utils.h:780
#5  0x00007f1c14b79c95 in wxGLContext::wxGLContext(wxGLCanvas*,
wxGLContext const*) (this=0x55feae041760, gc=0x55feaf0b8550, other=0x0)
at ../src/unix/glx11.cpp:155
#6  0x00007f1c14bead8d in sipwxGLContext::sipwxGLContext(wxGLCanvas*,
wxGLContext const*) () at /usr/lib64/python3.7/site-
packages/wx/_glcanvas.cpython-37m-x86_64-linux-gnu.so
#7  0x00007f1c14beae9c in init_type_wxGLContext () at
/usr/lib64/python3.7/site-packages/wx/_glcanvas.cpython-37m-x86_64-
linux-gnu.so
#8  0x00007f1c1a85f918 in sipSimpleWrapper_init () at
/usr/lib64/python3.7/site-packages/wx/siplib.so
#9  0x00007f1c228ee1c7 in type_call
    (kwds=<optimized out>,
args=(<GLWindow(parent=<MapFrame(parent=<LayerTree(displayIndex=0,
lmgr=<GMFrame(parent=None, baseTitle='GRASS GIS 7.8.0 Layer Manager',
iconsize=(16, 16), displayIndex=1, currentPage=<Panel(maptree=<...>) at
remote 0x7f1c05729550>, currentPageNum=0, workspaceFile=None,
workspaceChanged=False, loadingWorkspace=False, cwdPath=None,
_giface=<LayerManagerGrassInterface(lmgr=<...>,
mapCreated=<Signal(_name='LayerManagerGrassInterface.mapCreated') at
remote 0x7f1bc0bf4ed0>,
updateMap=<Signal(_name='LayerManagerGrassInterface.updateMap') at
remote 0x7f1bc0bf4fd0>) at remote 0x7f1bc0bf4e50>,
_menuTreeBuilder=<LayerManagerMenuData(menustyle=1,
model=<TreeModel(_root=<ModuleNode(label='root', data={},
_children=[<ModuleNode(label='&File', data={},
_children=[<ModuleNode(label='Workspace', data={},
_children=[<ModuleNode(label='New', data={'label': 'New',
'description': 'Create new workspace', 'handler': 'OnWorkspaceNew',
'command': '', 'keywords': '', 'shortcut': 'Ctrl+N', 'wxId':
<StandardID() at remote 0x7f1c180e2460>, '...(truncated),
type=<optimized out>) at /usr/src/debug/python3-3.7.4-
1.fc30.x86_64/Objects/typeobject.c:933
#10 0x00007f1c228ee1c7 in _PyObject_FastCallKeywords
(callable=<sip.wrappertype at remote 0x55feae190390>, stack=<optimized
out>, nargs=<optimized out>, kwnames=<optimized out>)
    at /usr/src/debug/python3-3.7.4-1.fc30.x86_64/Objects/call.c:199
#11 0x00007f1c228ef829 in call_function (pp_stack=0x7fffbb41b840,
oparg=<optimized out>, kwnames=0x0) at /usr/src/debug/python3-3.7.4-
1.fc30.x86_64/Python/ceval.c:4619
#12 0x00007f1c2292ba02 in _PyEval_EvalFrameDefault (f=<optimized out>,
throwflag=<optimized out>) at /usr/src/debug/python3-3.7.4-
1.fc30.x86_64/Python/ceval.c:3093
#13 0x00007f1c228dd080 in _PyEval_EvalCodeWithName
    (_co=<optimized out>, globals=<optimized out>, locals=<optimized
out>, args=<optimized out>, argcount=<optimized out>,
kwnames=0x7f1c0586a068, kwargs=0x7f1c0586a070, kwcount=<optimized out>,
kwstep=2, defs=0x7f1bc18a6868, defcount=1, kwdefs=0x0, closure=0x0,
name='__init__', qualname='GLWindow.__init__') at
/usr/src/debug/python3-3.7.4-1.fc30.x86_64/Python/ceval.c:3930
#14 0x00007f1c228de71e in _PyFunction_FastCallDict (func=<optimized
out>, args=0x7fffbb41ba90, nargs=<optimized out>, kwargs=<optimized
out>) at /usr/src/debug/python3-3.7.4-1.fc30.x86_64/Objects/call.c:367
#15 0x00007f1c228b29c6 in _PyObject_Call_Prepend
    (callable=<function at remote 0x7f1bc18a8440>, obj=<optimized out>,
args=(<MapFrame(parent=<LayerTree(displayIndex=0,
lmgr=<GMFrame(parent=None, baseTitle='GRASS GIS 7.8.0 Layer Manager',
iconsize=(16, 16), displayIndex=1, currentPage=<Panel(maptree=<...>) at
remote 0x7f1c05729550>, currentPageNum=0, workspaceFile=None,
workspaceChanged=False, loadingWorkspace=False, cwdPath=None,
_giface=<LayerManagerGrassInterface(lmgr=<...>,
mapCreated=<Signal(_name='LayerManagerGrassInterface.mapCreated') at
remote 0x7f1bc0bf4ed0>,
updateMap=<Signal(_name='LayerManagerGrassInterface.updateMap') at
remote 0x7f1bc0bf4fd0>) at remote 0x7f1bc0bf4e50>,
_menuTreeBuilder=<LayerManagerMenuData(menustyle=1,
model=<TreeModel(_root=<ModuleNode(label='root', data={},
_children=[<ModuleNode(label='&File', data={},
_children=[<ModuleNode(label='Workspace', data={},
_children=[<ModuleNode(label='New', data={'label': 'New',
'description': 'Create new workspace', 'handler': 'OnWorkspaceNew',
'command': '', 'keywords': '', 'shortcut': 'Ctrl+N', 'wxId':
<StandardID() at remote 0x7f1c180e2460>, 'icon': ''},
_chil...(truncated), kwargs={'giface':
<LayerManagerGrassInterfaceForMapDisplay(_giface=<LayerManagerGrassInte
rface(lmgr=<GMFrame(parent=None, baseTitle='GRASS GIS 7.8.0 Layer
Manager', iconsize=(16, 16), displayIndex=1,
currentPage=<Panel(maptree=<LayerTree(displayIndex=0, lmgr=<...>,
notebook=<FlatNotebook(_bForceSelection=False, _nPadding=6, _nFrom=0,
_pages=<PageContainer(_ImageList=None, _iActivePage=0,
_pDropTarget=<FNBDropTarget(_parent=<...>,
_dataobject=<CustomDataObject at remote 0x7f1c058f5910>) at remote
0x7f1c058f57d0>, _nLeftClickZone=0, _iPreviousActivePage=-1,
_pRightClickMenu=<Menu at remote 0x7f1c058f5550>, _nXButtonStatus=0,
_nArrowDownButtonStatus=0, _pParent=<...>, _nRightButtonStatus=0,
_nLeftButtonStatus=0, _nTabXButtonStatus=0, _nHoveringOverTabIndex=-1,
_nHoveringOverLastTabIndex=-1, _setCursor=False,
_pagesInfoVec=[<PageInfo(_strCaption='Display 1', _TabAngle=0,
_ImageIndex=-1, _bEnabled=True, _pos=<Point at remote 0x7f1c057507d0>,
_size=<Size at remote 0x7f1c05750870>, _region=<Region at remote
0x7f1c0575b050>...(truncated)) at /usr/src/debug/python3-3.7.4-
1.fc30.x86_64/Objects/call.c:908
#16 0x00007f1c228ed2e3 in slot_tp_init
  • GRASS GIS 7.8.0
  • System: Fedora 30, 64bit

Change History (3)

comment:1 by neteler, 4 years ago

Milestone: 7.8.17.8.2

Ticket retargeted after milestone closed

comment:2 by neteler, 4 years ago

Milestone: 7.8.2

Ticket retargeted after milestone closed

comment:3 by neteler, 4 years ago

Milestone: 7.8.3
Note: See TracTickets for help on using tickets.