<div dir="ltr"><div>This is the backtrace from gdb running in Qt Creator, taken after I paused execution right after the glGetString(GL_VERSION) call in glewContextInit, which returned 0x0 into the variable "s". So this is the "reason", while I'm still looking for the cause...<br><br></div>Elvis<br><div><br>Thread 1 (Thread 0x7ffff7f607c0 (LWP 5261)):<br>#0  glewContextInit () at /tmp/VTK-7.0.0/ThirdParty/glew/vtkglew/src/glew.c:10191<br>        s = 0x0<br>        dot = 0<br>        major = -13760<br>        minor = 32767<br>        extStart = 0x7ffff06bcd58 <vtkTimeStamp::Modified()::GlobalTimeStamp+8> "\252#"<br>        extEnd = 0x7a4970 "\001"<br>#1  0x00007ffff19c2096 in glewInit () at /tmp/VTK-7.0.0/ThirdParty/glew/vtkglew/src/glew.c:14407<br>        r = 32767<br>#2  0x00007ffff3cb5e48 in vtkOpenGLRenderWindow::OpenGLInitContext (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx:529<br>        result = 0<br>        m_valid = false<br>        lineWidthRange = {0, 0}<br>#3  0x00007ffff3cb589f in vtkOpenGLRenderWindow::OpenGLInit (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx:318<br>No locals.<br>#4  0x00007ffff3d48703 in vtkXOpenGLRenderWindow::WindowInitialize (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx:971<br>        ren = 0x0<br>#5  0x00007ffff3d48749 in vtkXOpenGLRenderWindow::Initialize (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx:980<br>No locals.<br>#6  0x00007ffff3d48b8f in vtkXOpenGLRenderWindow::Start (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx:1107<br>No locals.<br>#7  0x00007ffff23cc75f in vtkRenderWindow::DoStereoRender (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/Core/vtkRenderWindow.cxx:752<br>        rsit = 0x7fffffffcc30<br>#8  0x00007ffff23cc72d in vtkRenderWindow::DoFDRender (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/Core/vtkRenderWindow.cxx:741<br>        i = 1751607667<br>#9  0x00007ffff23cc100 in vtkRenderWindow::DoAARender (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/Core/vtkRenderWindow.cxx:620<br>        i = 0<br>#10 0x00007ffff23cb6e5 in vtkRenderWindow::Render (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/Core/vtkRenderWindow.cxx:436<br>        size = 0x6d4010<br>        x = 0<br>        y = 6895456<br>        p1 = 0x6d2ca0<br>#11 0x00007ffff3cb63aa in vtkOpenGLRenderWindow::Render (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx:597<br>No locals.<br>#12 0x00007ffff3d4b7ab in vtkXOpenGLRenderWindow::Render (this=0x6d3f90) at /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx:1853<br>        attribs = {x = 0, y = 0, width = -188422787, height = 32767, border_width = 2, depth = 0, visual = 0x6d2b00, root = 8133696, c_class = 8128160, bit_gravity = 0, win_gravity = 0, backing_store = 0, backing_planes = 7961424, backing_pixel = 2, save_under = -188524167, colormap = 1, map_installed = 7154432, map_state = 0, all_event_masks = 42957801120, your_event_mask = 7154720, do_not_propagate_mask = 140737488342640, override_redirect = 7154720, screen = 0x693760}<br>#13 0x00000000004139e9 in VTKWidget::paintEvent (this=0x6d2c20, event=0x7fffffffd6a0) at /tmp/insight/src/VTKWidget.cpp:37<br>No locals.<br>#14 0x00007ffff59c9439 in QWidget::event(QEvent*) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#15 0x00007ffff66c53bb in QVTKWidget::event (this=0x6d2c20, e=0x7fffffffd6a0) at /tmp/VTK-7.0.0/GUISupport/Qt/QVTKWidget.cxx:396<br>No locals.<br>#16 0x00007ffff5980974 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#17 0x00007ffff598633e in QApplication::notify(QObject*, QEvent*) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#18 0x00007ffff4c28034 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /home/estan/image/usr/lib/libQt5Core.so.5<br>No symbol table info available.<br>#19 0x00007ffff59b43d2 in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#20 0x00007ffff59cab8b in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#21 0x00007ffff5991075 in QWidgetPrivate::repaint_sys(QRegion const&) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#22 0x00007ffff59e8efb in ?? () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#23 0x00007ffff5980974 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#24 0x00007ffff598633e in QApplication::notify(QObject*, QEvent*) () from /home/estan/image/usr/lib/libQt5Widgets.so.5<br>No symbol table info available.<br>#25 0x00007ffff4c28034 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /home/estan/image/usr/lib/libQt5Core.so.5<br>No symbol table info available.<br>#26 0x00007ffff51b7e2e in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /home/estan/image/usr/lib/libQt5Gui.so.5<br>No symbol table info available.<br>#27 0x00007ffff51be39d in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /home/estan/image/usr/lib/libQt5Gui.so.5<br>No symbol table info available.<br>#28 0x00007ffff519f5db in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/estan/image/usr/lib/libQt5Gui.so.5<br>No symbol table info available.<br>#29 0x00007fffe5903650 in ?? () from /home/estan/image/usr/lib/libQt5XcbQpa.so.5<br>No symbol table info available.<br>#30 0x00007fffebce3642 in g_main_context_dispatch () from /home/estan/image/usr/lib/libglib-2.0.so.0<br>No symbol table info available.<br>#31 0x00007fffebce7c98 in ?? () from /home/estan/image/usr/lib/libglib-2.0.so.0<br>No symbol table info available.<br>#32 0x00007fffebce7e4c in g_main_context_iteration () from /home/estan/image/usr/lib/libglib-2.0.so.0<br>No symbol table info available.<br>#33 0x00007ffff4c75afb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/estan/image/usr/lib/libQt5Core.so.5<br>No symbol table info available.<br>#34 0x00007ffff4c26eab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/estan/image/usr/lib/libQt5Core.so.5<br>No symbol table info available.<br>#35 0x00007ffff4c2b3d0 in QCoreApplication::exec() () from /home/estan/image/usr/lib/libQt5Core.so.5<br>No symbol table info available.<br>#36 0x000000000040f62b in main (argc=1, argv=0x7fffffffe678) at /tmp/insight/src/main.cpp:18<br>        app = <incomplete type><br>        window = {<QMainWindow> = {<No data fields>}, <Ui::MainWindow> = {<Ui_MainWindow> = {centralWidget = 0x6d2670, verticalLayout = 0x6d24c0, sampleWidget = 0x6d2c20, menuBar = 0x6f9520, mainToolBar = 0x6f36f0, statusBar = 0x6fd320}, <No data fields>}, static staticMetaObject = {d = {superdata = 0x7ffff60a3ea0 <QMainWindow::staticMetaObject>, stringdata = 0x4153c0 <qt_meta_stringdata_MainWindow>, data = 0x415400 <qt_meta_data_MainWindow>, static_metacall = 0x413fdc <MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}<br><div><div class="gmail_extra"><br><div class="gmail_quote">2016-07-11 17:27 GMT+02:00 Elvis Stansvik <span dir="ltr"><<a href="mailto:elvis.stansvik@orexplore.com" target="_blank">elvis.stansvik@orexplore.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div>Hi all,<br><br></div>In exploring different deployment options, I'm now trying to create an AppImage of a VTK+Qt application. For those who don't know, AppImage is a packaging format where the application, including (almost) all of its dependencies are put into a self-extracting ISO image called an AppImage.<br><br></div>Doing this takes quite a bit of manual work, but if you do things correctly and build the image on a good base system (I'm using CentOS 6), the image should run on a multitude of distros.<br><br></div>I've had some success: The resulting image runs on e.g. Ubuntu Xenial.<br><br></div>I'm now trying it on my Arch Linux laptop (not a common/easy target for AppImages, but I'd like to make it work since I run it personally), and get:<br><br>ERROR: In /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 533<br>vtkXOpenGLRenderWindow (0x1e48140): GLEW could not be initialized.<br><br></div>This is due to a glewInit() call failing during initialization of the render window, and I've debugged it to the underlying call to glGetString(GL_VERSION) in VTK's forked GLEW library returning NULL.<br><br></div><div>Does anyone have an idea why this might happen? The VTK I'm using here is configured as follows:<br><br>cmake3 \<br>    -DCMAKE_INSTALL_PREFIX=/usr \<br>    -DVTK_Group_Qt=ON \<br>    -DVTK_QT_VERSION=5 \<br>    -DVTK_Group_Imaging=ON \<br>    -DVTK_Group_Views=ON \<br>    -DVTK_Group_MPI=OFF \<br>    -DVTK_Group_Tk=OFF \<br>    -DVTK_Group_Web=OFF \<br>    -DBUILD_TESTING=OFF \<br>    -DVTK_USE_SYSTEM_LIBRARIES=ON \<br>    -DVTK_USE_SYSTEM_LIBPROJ4=OFF \<br>    -DCMAKE_BUILD_TYPE=Debug \<br>    ..<br><br></div><div>And it uses the OpenGL2 backend.<br><br></div><div>It was built inside a CentOS 6 Docker container on a Kubuntu 16.04 host with HD 4400 Intel graphics adapter. The target system is an older laptop with up-to-date Arch Linux and a weaker HD 3000 Intel graphics adapter.<br></div><div><br></div>Now, packaging apps that use OpenGL is a bit tricky, because you can't bundle e.g. libX11, libGL and some other libraries that are dependant on the user's graphics adapter/environment.<br><br></div><div>The libraries that I've chosen to _not_ bundle are:<br><br>    libz.so.1 <br>    libm.so.6 <br>    libSM.so.6 <br>    libICE.so.6 <br>    libX11.so.6 <br>    libXext.so.6 <br>    libXt.so.6 <br>    libstdc++.so.6 <br>    libgcc_s.so.1 <br>    libc.so.6 <br>    libpthread.so.0 <br>    librt.so.1 <br>    libGL.so.1 <br>    libdl.so.2 <br>    libuuid.so.1 <br>    libxcb.so.1 <br>    libxcb-dri3.so.0 <br>    libxcb-present.so.0 <br>    libxcb-randr.so.0 <br>    libxcb-xfixes.so.0 <br>    libxcb-render.so.0 <br>    libxcb-shape.so.0 <br>    libxcb-sync.so.1 <br>    libxshmfence.so.1 <br>    libglapi.so.0 <br>    libXdamage.so.1 <br>    libXfixes.so.3 <br>    libX11-xcb.so.1 <br>    libxcb-glx.so.0 <br>    libxcb-dri2.so.0 <br>    libXxf86vm.so.1 <br>    libdrm.so.2 <br>    libXau.so.6 <br>    libXdmcp.so.6<br><br></div><div>This may be a little too liberal, and it could be that I should be bundling some of these. But it seems to work fine since the AppImage runs without problem on Kubuntu 16.04.<br><br></div><div>The application also runs fine if I build VTK and the application "normally" on the Arch host and run it (using OpenGL2 backend), so the graphics adapter should be capable enough. It's just when I try to run the CentOS 6-built AppImage on the Arch host that it fails.<br><br></div><div>The application essentially just creates a QVTKWidget and renders a volume into its rendering window.<br></div><div><br></div><div>I saw that one (perhaps likely?) reason for glGetString(GL_VERSION) returning NULL is that initialization of the GL context failed (or wasn't fully done yet). If this is the case, does anyone know where I can debug this further in VTK? Where is the OpenGL context in VTK set up when using QVTKWidget + OpenGL2 backend?<br><br></div><div>Finally: Has anyone else tried packaging VTK applications as AppImages?<br><br></div><div>I know ParaView is provided as a prebuilt Linux binary with VTK bundled, so I can imagine the ParaView folks has ran into some issues like this?<br><br></div><div>Thanks in advance for any advice.<span class=""><font color="#888888"><br><br></font></span></div><span class=""><font color="#888888"><div>Elvis<br></div></font></span></div>
</blockquote></div><br></div></div></div></div>