OCC+VTK:The program crashed in debug mode

I compiled both the debug and release versions of VTK9.4 on Windows. Similarly, I also compiled the debug and release versions of OCC7.9.0. I wrote a program using Qt to display the OCC model with VTK. However, the program runs normally in the release version but crashes in the debug version. The following are the CMakeLists file and the location where the crash occurs.

cmake_minimum_required(VERSION 3.15)

project(DMesh)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(CMAKE_PREFIX_PATH
      "D:/LangEnv/VTK_MSVC/debug/lib/cmake/vtk-9.4"
      ${CMAKE_PREFIX_PATH}
    )
    set(CMAKE_PREFIX_PATH
        "D:/LangEnv/OCC_MSVC/debug/cmake"
        ${CMAKE_PREFIX_PATH}
    )
else()
    set(CMAKE_PREFIX_PATH
      "D:/LangEnv/VTK_MSVC/release/lib/cmake/vtk-9.4"
      ${CMAKE_PREFIX_PATH}
    )
    set(CMAKE_PREFIX_PATH
      "D:/LangEnv/OCC_MSVC/release/cmake"
      ${CMAKE_PREFIX_PATH}
    )
endif()

find_package(VTK REQUIRED)
find_package(OpenCASCADE REQUIRED)
include_directories(${OpenCASCADE_INCLUDE_DIR})
link_directories(${OpenCASCADE_BINARY_DIR})
include_directories(${VTK_INCLUDE_DIR})
link_directories(${VTK_BINARY_DIR})

# Find Qt6
find_package(Qt6 REQUIRED COMPONENTS Core Widgets OpenGL OpenGLWidgets)

set(GUI_LIB_LISTS
    TKernel
    TKMeshVS
    TKOpenGl
    TKPrim
    TKService
    TKTopAlgo
    TKV3d
    TKIVtk
)


file(GLOB GUI_SOURCE_LISTS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
file(GLOB GUI_INCLUDE_LISTS "${CMAKE_CURRENT_SOURCE_DIR}/*.h**")
# file(GLOB GUI_GUIFILE_LISTS "${CMAKE_CURRENT_SOURCE_DIR}/*.ui")

add_executable(DMesh main.cpp ${GUI_SOURCE_LISTS} ${GUI_INCLUDE_LISTS} ${GUI_GUIFILE_LISTS})
target_link_libraries(DMesh PRIVATE
        ${GUI_LIB_LISTS}
    ${VTK_LIBRARIES}

    Qt6::Core
    Qt6::Widgets
    Qt6::OpenGL
    Qt6::OpenGLWidgets
)


vtk_module_autoinit(
    TARGETS DMesh
    MODULES ${VTK_LIBRARIES}
)

BRepPrimAPI_MakeBox box(2, 2, 2); const TopoDS_Shape shape = box.Shape(); IVtkTools_ShapeDataSource* occSource = IVtkTools_ShapeDataSource::New(); occSource->SetShape(new IVtkOCC_Shape(shape)); vtkNew<vtkPolyDataMapper> mapper; mapper->SetInputConnection(occSource->GetOutputPort()); //The program crashed vtkNew<vtkActor> actor; actor->SetMapper(mapper); render->AddActor(actor);
Dmitrii Pasukhin's picture

Hello.
Thank you for your research. Please report as a bug: https://github.com/Open-Cascade-SAS/OCCT
Best regards, Dmitrii.

YoHen Fu's picture

Hello, Dmitrii

Thank you for your reply. This bug has been submitted to:https://github.com/Open-Cascade-SAS/OCCT/issues/568

Sincerely, YoHen Fu