DOLFIN demos fails to run in dev-env container

Issue #5 resolved
Johannes Ring created an issue

Maybe this is a bug in DOLFIN, but I get the following error when running the Poisson demo in the dev-env container:

Solving linear variational problem.
Generic Warning: In /build/buildd/vtk6-6.0.0/Rendering/Core/vtkTextMapper.cxx, line 21
Error: no override found for 'vtkTextMapper'.

Segmentation fault

The error can be reproduced by first starting the dev-env Docker container:

docker run -t -i fenicsproject/dev-env

Then, Inside the Docker container, run:

$ update_fenics
$ python build/share/dolfin/demo/documented/poisson/python/demo_poisson.py

The same error happens for the C++ demo.

Comments (7)

  1. Prof Garth Wells

    I get this too, even with export DOLFIN_NOPLOT=1.

    On other remote systems with X, the failure is less than elegant.

    The VTK version (6.0) is rather old now.

  2. Johannes Ring reporter

    I found that is was working if I replaced the part for finding VTK in CMakeLists.txt, that is

    find_package(VTK HINTS ${VTK_DIR} $ENV{VTK_DIR} COMPONENTS vtkViewsCore   
      vtkRenderingCore vtkRenderingLabel vtkFiltersTexture vtkRenderingOpenGL 
      NO_MODULE)                                                              
    

    with this:

    find_package(VTK HINTS ${VTK_DIR} $ENV{VTK_DIR} NO_MODULE)
    

    After a bit more digging, I found that the missing component was vtkRenderingFreeTypeOpenGL.

    @garth-wells: Is it okay if I just add this in CMakeLists.txt and UseDOLFIN.cmake.in and push to master?

    diff --git a/CMakeLists.txt b/CMakeLists.txt
    index df08b62..5480add 100644
    --- a/CMakeLists.txt
    +++ b/CMakeLists.txt
    @@ -587,6 +587,7 @@ endif()
     if (DOLFIN_ENABLE_VTK)
       find_package(VTK HINTS ${VTK_DIR} $ENV{VTK_DIR} COMPONENTS vtkViewsCore
         vtkRenderingCore vtkRenderingLabel vtkFiltersTexture vtkRenderingOpenGL
    +    vtkRenderingFreeTypeOpenGL
         NO_MODULE)
       set(VTK_VERSION "${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}")
       if (VTK_FOUND)
    diff --git a/cmake/templates/UseDOLFIN.cmake.in b/cmake/templates/UseDOLFIN.cmake.in
    index e6f7276..136818e 100644
    --- a/cmake/templates/UseDOLFIN.cmake.in
    +++ b/cmake/templates/UseDOLFIN.cmake.in
    @@ -14,6 +14,7 @@ if (NOT DOLFIN_USE_FILE_INCLUDED)
       if (@VTK_FOUND@)
         find_package(VTK HINTS ${VTK_DIR} $ENV{VTK_DIR} COMPONENTS vtkViewsCore
           vtkRenderingCore vtkRenderingLabel vtkFiltersTexture vtkRenderingOpenGL
    +      vtkRenderingFreeTypeOpenGL
           NO_MODULE QUIET)
         if (VTK_FOUND)
           include(${VTK_USE_FILE})
    
  3. Prof Garth Wells

    @johannes_ring Looks good to me, so go ahead and push.

    We used to import all VTK modules which is huge. I largely had to guess to figure out which modules we actually needed.

  4. Johannes Ring reporter

    Yes, it is difficult to know which modules are needed. I had to try a few times before I found the missing module.

  5. Log in to comment