【问题标题】:vtk.vtkRender() causes seg fault:11vtk.vtkRender() 导致段错误:11
【发布时间】:2013-11-20 16:05:30
【问题描述】:

我有一个使用 vtk 模块的 python 脚本,它不是我编写的。它适用于我的旧 iMac 和我的 Linux 机器。在安装了 OS X Mavericks 的 Macbook Pro 上尝试它,我在渲染过程中遇到了 seg 错误。我已经追踪到调用 vtkRender() 方法的错误,该方法导致脚本因 seg 错误 11 而崩溃。我真的不知道如何进一步找出错误的确切原因(例如,如何我使用 pdb 进入方法调用?),有什么想法吗?

一个最小的程序崩溃如下:

Enthought Canopy Python 2.7.3 | 64-bit | (default, Aug  8 2013, 05:37:06) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import vtk
>>> test = vtk.vtkRenderer()
>>> test.Render()
Segmentation fault: 11

更新:我在 VirtualBox 上安装了 Ubuntu,并在上面的示例中遇到了相同的 seg 错误,但是我使用 vtk 模块的 python 脚本工作得很好。

所以这似乎是使用 EPD 和 OS X Mavericks 提供的 VTK 包的问题。知道如何解决这个问题吗?我删除了 VTK 的所有痕迹并尝试从源代码安装,但在这种情况下我遇到了各种问题,只是让 VTK 导入。

更新:

通过在脚本中的 VTK 代码中添加一些额外的样板,我可以让它再次工作。确实非常奇怪的行为。在具有相同代码和库的 Ubuntu 中工作正常,但在 Mac OS X 上它会出现故障,除非我将一些 .Initialize() 方法调用和其他方法调用添加到渲染对象。

【问题讨论】:

  • 这几乎是vtk 的一部分编译模块的问题。尝试从头开始重新安装vtk
  • 我刚试过,没用:(
  • 你是重新编译VTK还是只是复制文件?
  • 我从头开始重新编译,与Enthought python链接并不容易。

标签: python vtk enthought


【解决方案1】:

当我安装 OS X Mavericks 时,我认为一切都通过了安装而没有损坏。我的python安装虽然坏了。安装 Python 2.7.6 的候选版本为我解决了这个问题。还有一个补丁可以修复 Mavericks 上 2.7.5 的 segfault 问题。

【讨论】:

    【解决方案2】:

    您应该创建一个渲染窗口并在渲染之前将渲染器添加到其中。另外,调用 render-windowRender() 方法,而不是渲染器的。

    import vtk
    rr = vtkRenderer()
    rw = vtkRenderWindow()
    rw.AddRenderer(rr)
    rw.Render()
    

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2018-01-15
      • 2015-09-03
      • 2012-08-17
      相关资源
      最近更新 更多