Search code examples
c++point-cloud-library

Range_Image of PCL crashes Application


I am using the precompiled/All-in-One PCL (PointCloudLibrary) in release-version 1.12.1 for Windows.

  • IDE: Visual Studio 2019

With that, I am already able to use the visualizer, so parts of the library are already working fine.

When I want to create a RangeImage-object however my program either runs into an infinite loop, not doing anything anymore or gets terminated by the "abort()"-function of the cpp-standard-library in some cases.

A minimal example to create this problem looks like this:

#include <pcl/range_image/range_image.h>

int main () {
  pcl::RangeImage rangeImage;
  return 0;
}

==== Extra Infos: ===============

  1. While compilation no errors or warnings are displayed, but running the application in debug-mode (x64) gives the described problem. Running the program in release-mode (x64) gives a "forbidden memory access"-error coming from the std::vector library. x86 is not tested.

  2. When the program terminates with the abort()-function, I get this error message in the console:

Assertion failed: (internal::UIntPtr(array) & (31)) == 0 && "this
assertion is explained here: " "http://eigen.tuxfamily.org/dox-
devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE
!!! ****", file C:\Program
Files\Eigen3\include\eigen3\Eigen\src/Core/DenseStorage.h, line 128

I went through the website that the error message recommends, but I was not able to solve the problem by that. I have set the C++-Standard to c++17 already.

============================

Has anyone run into this problem before and knows what could cause this issue?

Thanks for taking the time.


Solution

  • What fixed this problem was to build the pcl 1.12.1 new with instructions from this tutorial*1 (scroll down until you find the right version): https://gist.github.com/UnaNancyOwen/59319050d53c137ca8f3

    Also in Visual Studio the project setting under "C/C++ > Codegeneration > Activate advanced Instructionset" had to be set to AVX2.

    *1) You dont need to understand chinese to go through this tutorial. If you have build the PCL before, you will get all information you need from this.