TexelBox / cage-tool

C++/OpenGL tool for cage-based deformation, including functionality for cage generation. Originally developed as a fall 2019 term project for CPSC589 @ University of Calgary.
8 stars 3 forks source link

Issues of Porting the cage-tool Project to Ubuntu #1

Open 271806 opened 4 months ago

271806 commented 4 months ago

Issues of Porting the cage-tool Project to Ubuntu

I am encountering an issue while porting the cage-tool project from Windows to Ubuntu 22.04. The project was originally built for Windows, but I'm trying to run it on Ubuntu. I have made some modifications to the CMakeLists.txt file and fixed some build errors, but the program is still crashing shortly after startup.

Problem Description

Debugging Attempts

  1. I used GDB to debug the program and set a breakpoint at the RenderEngine constructor.
  2. Stepping through the code, I observed that the program enters the ShaderTools::compileShaders function and starts loading the shader source files.
  3. The vertex shader and fragment shader source files are loaded correctly using the loadshader function.
  4. However, the program crashes with a segmentation fault inside the __strlen_avx2 function, which is a low-level string length function optimized for AVX2 instructions.

CMakeLists.txt

# Set the minimum required version
cmake_minimum_required(VERSION 3.22)

# Define project name and specify the languages used
project(CageTool LANGUAGES CXX)

# Specify the C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# List the source files for ImGui
set(IMGUI_SOURCES
    include/imgui/imgui.cpp
    include/imgui/imgui_demo.cpp
    include/imgui/imgui_draw.cpp
    include/imgui/imgui_widgets.cpp
    include/imgui/imgui_impl_glfw.cpp
    include/imgui/imgui_impl_opengl3.cpp
)

# Create a static library for ImGui
add_library(ImGui STATIC ${IMGUI_SOURCES})
target_include_directories(ImGui PUBLIC 
    ${CMAKE_CURRENT_SOURCE_DIR}/include/imgui
)

# Find packages
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
find_package(glfw3 REQUIRED)

# Explicitly set OpenGL preference (new policy in CMake 3.11 and later)
set(OpenGL_GL_PREFERENCE GLVND)

# List source files
set(SOURCES
    src/main.cpp
    src/Camera.cpp
    src/InputHandler.cpp
    src/lodepng.cpp
    src/MeshObject.cpp
    src/ObjectLoader.cpp
    src/Program.cpp
    src/RenderEngine.cpp
    src/ShaderTools.cpp
    src/Texture.cpp
)

# Define project's executable
add_executable(${PROJECT_NAME} ${SOURCES})

# Link project with required libraries
target_link_libraries(${PROJECT_NAME} 
    OpenGL::GL
    GLEW::GLEW
    glfw
    ImGui
)

# Include directories
target_include_directories(${PROJECT_NAME} PUBLIC 
    ${CMAKE_CURRENT_SOURCE_DIR}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/include/GLFW
    ${CMAKE_CURRENT_SOURCE_DIR}/include/glm
)

Relevant Code

GLuint ShaderTools::compileShaders(const char* vertexFilename, const char* fragmentFilename) {
    // ...
    const GLchar * vertex_shader_source [] = {loadshader(vertexFilename)};
    const GLchar * fragment_shader_source [] = {loadshader(fragmentFilename)};
    // ...
}

Possible Causes

Any suggestions or insights on how to resolve this issue and successfully port the cage-tool project to Ubuntu would be greatly appreciated. Please let me know if you need any additional information or code snippets to further investigate the problem.

271806 commented 4 months ago

After trying to figure out the cause of the error with my colleague, I have a preliminary view of this issue, which I'm trying to resolve, though more discussion and suggestions are still welcome!