# vtkRenderWindow segfault when accessing Interactor variable

**URL:** https://discourse.vtk.org/t/vtkrenderwindow-segfault-when-accessing-interactor-variable/3576
**Category:** Support
**Created:** [June 17, 2020, 9:16am UTC](https://discourse.vtk.org/t/vtkrenderwindow-segfault-when-accessing-interactor-variable/3576 "2020-06-17T09:16:33Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Pietersielie](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/p/ba8739/32.png) [@Pietersielie](https://discourse.vtk.org/u/Pietersielie)
#### Post date: [June 17, 2020, 9:16am UTC](https://discourse.vtk.org/t/vtkrenderwindow-segfault-when-accessing-interactor-variable/3576/1 "2020-06-17T09:16:33Z")

</div>

Hi everyone,

Not sure if this is the correct venue, so please forgive my inexperience.

I have an application that uses VTK with QT, on Ubuntu 20.04 LTS. It compiles just fine and most of the application works. However, when I try to create a vtkRenderWindow, it crashes with a segfault. Specifically, whenever my application tries to access or interact with the vtkRenderWindow object’s Interactor variable (declared in vtkRenderWindow.h:754).

```auto
  vtkRenderWindowInteractor* Interactor;

```

Thus far, I’ve had it crashing with **(1)** `vtkRenderWindow::GetInteractor()`, **(2)** `vtkRenderWindow::SetInteractor()`, and **(3)** `vtkRenderWindow::MakeRenderWindowInteractor()`.

**(1)** To be more precise, the program crashes the moment it attempts to call `vtkRenderWindow::GetInteractor()`. The code in question:

```auto
    vtkRenderer* m_Ren1;
    vtkRenderWindow* renwin;
    QVTKOpenGLStereoWidget* qVTK1;

    m_Ren1 = vtkRenderer::New();
    renwin = vtkRenderWindow::New();
    renwin->AddRenderer(m_Ren1);
    ui->qVTK1->setRenderWindow(renwin);

    ui->qVTK1->renderWindow()->GetInteractor();

```

**(2)** When calling `vtkRenderWindow::SetInteractor()`, it crashes at `vtkRenderWindow.cxx:155`, at the line  
`if (this->Interactor != rwi)`. I show the code I use below:

```auto
    vtkRenderer* m_Ren1;
    vtkRenderWindow* renwin;
    QVTKOpenGLStereoWidget* qVTK1;

    m_Ren1 = vtkRenderer::New();
    renwin = vtkRenderWindow::New();
    renwin->AddRenderer(m_Ren1);
    ui->qVTK1->setRenderWindow(renwin);

    vtkRenderWindowInteractor* t1 = vtkRenderWindowInteractor::New();
    ui->qVTK1->renderWindow()->SetInteractor(t1);

```

**(3)** When calling `vtkRenderWindow::MakeRenderWindowInteractor()`, it crashes at `vtkObjectFactory.cxx:438`, specifically when it calls the `strcmp` function.

```auto
if (this->OverrideArray[i].EnabledFlag &&
      strcmp(this->OverrideClassNames[i], vtkclassname) == 0)

```

Again, I show the code I use to test this below:

```auto
    vtkRenderer* m_Ren1;
    vtkRenderWindow* renwin;
    QVTKOpenGLStereoWidget* qVTK1;

    m_Ren1 = vtkRenderer::New();
    renwin = vtkRenderWindow::New();
    renwin->AddRenderer(m_Ren1);
    ui->qVTK1->setRenderWindow(renwin);
    ui->qVTK1->renderWindow()->MakeRenderWindowInteractor();

```

Curiously, the program does not crash if I create a new RenderWindow as below, despite both `test` and `qVTK1->renderWindow()` being of type `vtkXOpenGLRenderWindow`. It does crash regardless of if I set `qVTK1->renderWindow()`'s interactor to `t1` or `t2`:

```auto
    vtkRenderWindow* test = vtkRenderWindow::New();
    vtkRenderWindowInteractor* t2 = test->GetInteractor();
    vtkRenderWindowInteractor* t1 = vtkRenderWindowInteractor::New();
    test->SetInteractor(t1);
    ui->qVTK1->renderWindow()->SetInteractor(t1);
    ui->qVTK1->renderWindow()->SetInteractor(t2);

```

Again, please forgive my inexperience. If anyone has any idea why this occurs or how to deal with it, I would very much appreciate it.

Thanks!

---

<div class="post-metadata">

### Author: ![Pietersielie](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/p/ba8739/32.png) [@Pietersielie](https://discourse.vtk.org/u/Pietersielie)
#### Post date: [June 24, 2020, 11:57am UTC](https://discourse.vtk.org/t/vtkrenderwindow-segfault-when-accessing-interactor-variable/3576/2 "2020-06-24T11:57:48Z")

</div>

Solved! The problem actually came about from the QT side. `QVTKOpenGLRenderWindow` cannot deal with `vtkXOpenGLRenderWindow`, it requires `vtkGenericOpenGLRenderWindow`. But `vtkGenericOpenGLRenderWindow` cannot be created with `vtkRenderWindow::New()`. The solution is to declare the renderwindow in a different way:

````auto
    vtkRenderer* m_Ren1;
    vtkRenderWindow* renwin;
    QVTKOpenGLStereoWidget* qVTK1;

    m_Ren1 = vtkRenderer::New();```
    vtkNew<vtkGenericOpenGLRenderWindow> rw;
    renwin = rw;```
    renwin->AddRenderer(m_Ren1);
    ui->qVTK1->setRenderWindow(renwin);

````

This solves the problem with the interactor.
