bjornblissing / osgoculusviewer

An OsgViewer with support for the Oculus Rift
Other
106 stars 67 forks source link

CompositeViewer - Segfault #30

Closed mungewell closed 9 years ago

mungewell commented 9 years ago

Previous version (ie. Oct 27) worked OK, now I am getting a segfault when running the Composite viewer. Other viewers function OK.

Seen below without Rift connected, I have a 'fake' rift and don't want that to confuse the issue.

simon@bigbox:/storage/osgoculusviewer-git$ git log | head
commit ceca3c16a5a9af739e7abd3eb5c0eddee286fe5e
Author: Björn Blissing <bjorn.blissing@vti.se>
Date:   Mon Nov 3 14:45:29 2014 +0100

    Xinerama is not a dependency for OVR since 0.4.x

commit 097852a9eb5a81a43b39437a7c402f4094d1d3d5
Merge: 1120932 0bd1158
Author: Björn Blissing <bjorn.blissing@vti.se>
Date:   Fri Oct 31 14:54:36 2014 +0100
simon@bigbox:/storage/osgoculusviewer-git$ gdb ./bin/OculusCompositeViewerExample 
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./bin/OculusCompositeViewerExample...done.
(gdb) r /storage/speed-dreams-git-svn/data/data/objects/wheel2.ac
Starting program: /storage/osgoculusviewer-git/bin/OculusCompositeViewerExample /storage/speed-dreams-git-svn/data/data/objects/wheel2.ac
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7fcd700 (LWP 3316)]
Warning: No device could be found. Creating emulated device 
Product:         Oculus Rift DK1
Manufacturer:    Oculus VR
VendorId:        -1
ProductId:       -1
SerialNumber:    
FirmwareVersion: -1.-1
osgDB ac3d reader: could not find texture "wheel3d.png"
osgDB ac3d reader: could not find texture "wheel3d.png"

Program received signal SIGSEGV, Segmentation fault.
0x0000000000446db2 in osg::ref_ptr<osg::GraphicsContext::Traits>::get (this=0x40) at /usr/include/osg/ref_ptr:92
92          T* get() const { return _ptr; }
(gdb) bt
#0  0x0000000000446db2 in osg::ref_ptr<osg::GraphicsContext::Traits>::get (this=0x40) at /usr/include/osg/ref_ptr:92
#1  0x000000000044656a in osg::GraphicsContext::getTraits (this=0x0) at /usr/include/osg/GraphicsContext:286
#2  0x0000000000444397 in OculusDevice::createRTTCamera (this=0x73cd60, texture=0x745420, eye=OculusDevice::LEFT, 
    referenceFrame=osg::Transform::ABSOLUTE_RF, gc=0x0) at oculusdevice.cpp:469
#3  0x000000000043e177 in main (argc=2, argv=0x7fffffffdf88) at compositeviewerexample.cpp:45
(gdb)
Factoid commented 9 years ago

Line 469 in oculusdevice.cpp should read

GLenum buffer = gc && gc->getTraits()->doubleBuffer ? GL_BACK : GL_FRONT;

mungewell commented 9 years ago

Awesome. That works for me, Thanks.