Debug info
gdb ./test_qt_vtk
(gdb) r
Starting program: /home/frp/1-Code/test_qt_vtk/build/test_qt_vtk
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe6059700 (LWP 8086)]
[New Thread 0x7fffdb7d3700 (LWP 8087)]
[New Thread 0x7fffdafd2700 (LWP 8088)]
[New Thread 0x7fffd9551700 (LWP 8089)]
[New Thread 0x7fffc7f5a700 (LWP 8090)]
[New Thread 0x7fffbffff700 (LWP 8091)]
[New Thread 0x7fffc7759700 (LWP 8092)]
[New Thread 0x7fffc6f58700 (LWP 8093)]
Thread 1 "test_qt_vtk" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ()
#1 0x00007ffff73cf3b0 in vtkOpenGLBufferObject::GenerateBuffer(vtkOpenGLBufferObject::ObjectType) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#2 0x00007ffff73cf3f4 in vtkOpenGLBufferObject::UploadInternal(void const*, unsigned long, vtkOpenGLBufferObject::ObjectType) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#3 0x00007ffff7472666 in vtkOpenGLVertexBufferObject::UploadDataArray(vtkDataArray*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#4 0x00007ffff747923b in vtkOpenGLVertexBufferObjectGroup::BuildAllVBOs(vtkOpenGLVertexBufferObjectCache*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#5 0x00007ffff742ce6a in vtkOpenGLPolyDataMapper::BuildBufferObjects(vtkRenderer*, vtkActor*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#6 0x00007ffff741a662 in vtkOpenGLPolyDataMapper::RenderPieceStart(vtkRenderer*, vtkActor*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#7 0x00007ffff742f184 in vtkOpenGLPolyDataMapper::RenderPiece(vtkRenderer*, vtkActor*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#8 0x00007ffff6b55b0a in vtkPolyDataMapper::Render(vtkRenderer*, vtkActor*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#9 0x00007ffff73cdeda in vtkOpenGLActor::Render(vtkRenderer*, vtkMapper*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#10 0x00007ffff6abe47f in vtkActor::RenderOpaqueGeometry(vtkViewport*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#11 0x00007ffff6b62936 in vtkRenderer::DeviceRenderOpaqueGeometry() [clone .localalias.51] ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#12 0x00007ffff7453b23 in vtkOpenGLRenderer::DeviceRenderOpaqueGeometry() ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#13 0x00007ffff7451629 in vtkOpenGLRenderer::UpdateGeometry() ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#14 0x00007ffff744da50 in vtkOpenGLRenderer::DeviceRender() ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#15 0x00007ffff6b6495f in vtkRenderer::Render() () at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#16 0x00007ffff6b6191f in vtkRendererCollection::Render() () at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#17 0x00007ffff6b6f60d in vtkRenderWindow::DoStereoRender() () at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#18 0x00007ffff6b6f8f0 in vtkRenderWindow::Render() () at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingCore-8.2.so.1
#19 0x00007ffff744cb39 in vtkOpenGLRenderWindow::Render() () at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#20 0x00007ffff73cb001 in vtkGenericOpenGLRenderWindow::Render() ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkRenderingOpenGL2-8.2.so.1
#21 0x0000555555558783 in MainWindow::update1() ()
---Type <return> to continue, or q <return> to quit---
#22 0x00005555555596ac in vtkObject::vtkClassMemberCallback<MainWindow>::operator()(vtkObject*, unsigned long, void*) ()
#23 0x00007ffff5ec75b9 in vtkSubjectHelper::InvokeEvent(unsigned long, void*, vtkObject*) ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkCommonCore-8.2.so.1
#24 0x00007ffff7776421 in QVTKOpenGLNativeWidget::recreateFBO() ()
at /home/frp/2-Third_libs/VTK-8.2.0/install_x86/lib/libvtkGUISupportQt-8.2.so.1
#25 0x00007ffff45acddf in doActivate<false>(QObject*, int, void**) (sender=0x55555597c250, signal_index=10, argv=0x7fffffffd640, argv@entry=0x0)
at kernel/qobject.cpp:3898
#26 0x00007ffff45a6479 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55555597c250, m=m@entry=0x7ffff5c32d00 <QOpenGLWidget::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x0) at kernel/qobject.cpp:3946
#27 0x00007ffff55bdd83 in QOpenGLWidget::resized() (this=this@entry=0x55555597c250) at .moc/moc_qopenglwidget.cpp:183
#28 0x00007ffff55be115 in QOpenGLWidgetPrivate::recreateFbo() (this=this@entry=0x5555558c2260) at kernel/qopenglwidget.cpp:764
#29 0x00007ffff55be828 in QOpenGLWidget::resizeEvent(QResizeEvent*) (this=0x55555597c250, e=<optimized out>) at kernel/qopenglwidget.cpp:1290
#30 0x00007ffff559fc6e in QWidget::event(QEvent*) (this=0x55555597c250, event=0x7fffffffda20) at kernel/qwidget.cpp:8809
#31 0x00007ffff556143c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555597c250, e=0x7fffffffda20)
at kernel/qapplication.cpp:3632
#32 0x00007ffff5567f20 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555597c250, e=0x7fffffffda20)
at kernel/qapplication.cpp:3378
#33 0x00007ffff4574808 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55555597c250, event=0x7fffffffda20)
at kernel/qcoreapplication.cpp:1063
#34 0x00007ffff45749be in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=receiver@entry=0x55555597c250, event=event@entry=0x7fffffffda20) at kernel/qcoreapplication.cpp:1458
#35 0x00007ffff5597f4d in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) (this=this@entry=0x5555558c2260, recursive=recursive@entry=false, disableUpdates=<optimized out>, disableUpdates@entry=false) at kernel/qwidget.cpp:7711
#36 0x00007ffff559c153 in QWidgetPrivate::show_helper() (this=this@entry=0x5555558c2260) at kernel/qwidget.cpp:7762
#37 0x00007ffff559f274 in QWidgetPrivate::setVisible(bool) (this=0x5555558c2260, visible=<optimized out>) at kernel/qwidget.cpp:8111
#38 0x00007ffff559c100 in QWidgetPrivate::showChildren(bool) (this=this@entry=0x5555558aa280, spontaneous=spontaneous@entry=false)
at kernel/qwidget.cpp:8183
#39 0x00007ffff559c16f in QWidgetPrivate::show_helper() (this=this@entry=0x5555558aa280) at kernel/qwidget.cpp:7768
#40 0x00007ffff559f274 in QWidgetPrivate::setVisible(bool) (this=0x5555558aa280, visible=<optimized out>) at kernel/qwidget.cpp:8111
#41 0x0000555555557f66 in main ()
(gdb)
main.cpp
#include <QApplication>
#include <QSurfaceFormat>
#include <vtkOpenGLRenderWindow.h>
#include <QVTKOpenGLWidget.h>
#include <QVTKOpenGLNativeWidget.h>
#include "mainwindow.h"
int main(int argc, char * argv[]) {
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
QApplication app( argc, argv );
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
mainwindow.h
#ifndef TEST_QT_VTK_MAINWINDOW_H
#define TEST_QT_VTK_MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class QTimer;
class QVTKOpenGLWidget;
class QVTKOpenGLNativeWidget;
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
protected:
void update1();
private:
Ui::MainWindow *ui;
QVTKOpenGLNativeWidget *centralWidget;
//QTimer *timer;
};
#endif //TEST_QT_VTK_MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <vtkCamera.h>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkCommand.h>
#include <vtkCubeSource.h>
#include <vtkDataObjectToTable.h>
#include <vtkElevationFilter.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkQtTableView.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>
#include <QVTKOpenGLWidget.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow),
centralWidget(new QVTKOpenGLNativeWidget(this))
{
ui->setupUi(this);
setCentralWidget(centralWidget);
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
centralWidget->SetRenderWindow(renderWindow);
vtkNew<vtkNamedColors> colors;
// Sphere
vtkNew<vtkSphereSource> sphereSource;
sphereSource->Update();
vtkNew<vtkPolyDataMapper> sphereMapper;// centralWidget->GetRenderWindow()->Render();
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
// VTK Renderer
vtkNew<vtkRenderer> leftRenderer;
leftRenderer->AddActor(sphereActor);
leftRenderer->SetBackground(colors->GetColor3d("LightSteelBlue").GetData());
centralWidget->GetRenderWindow()->AddRenderer(leftRenderer);
leftRenderer->ResetCamera();
// centralWidget->GetRenderWindow()->Render(); //this is ok!!!
renderWindow->AddObserver(vtkCommand::ModifiedEvent, this, &MainWindow::update1);
}
MainWindow::~MainWindow() {
centralWidget->GetRenderWindow()->RemoveAllObservers();
delete ui;
}
void MainWindow::update1() {
centralWidget->GetRenderWindow()->Render(); // Segmentation fault.??? why???
}
mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="windowModality">
<enum>Qt::NonModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>553</width>
<height>448</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QStatusBar" name="statusBar"/>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>553</width>
<height>28</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>