PointCloudLibrary/pcl

Kinfu MarchingCubes writes unbounded data to hardcode sized buffer

Open

#719 创建于 2014年5月31日

在 GitHub 查看
 (12 评论) (0 反应) (1 负责人)C++ (4,506 fork)batch import
help wantedkind: bugmodule: gpuskill: cudastatus: stale

仓库指标

Star
 (9,023 star)
PR 合并指标
 (平均合并 8天 7小时) (30 天内合并 3 个 PR)

描述

pcl::gpu::MarchingCubes::run:

  if (triangles_buffer.empty())
    triangles_buffer.create(DEFAULT_TRIANGLES_BUFFER_SIZE);
DEFAULT_TRIANGLES_BUFFER_SIZE = 2 * 1000 * 1000 * POINTS_PER_TRIANGLE

marching_cubes.cu/store_point():

triangles_buffer[index] = ...; // index is dependent on how many voxels we have

I suggest changing DEFAULT_TRIANGLES_BUFFER_SIZE to WHY_WOULD_ANYONE_EVER_HAVE_MORE_TRIANGLES, that will make the out of bounds crash on the GPU much easier to find.

I also like how it starts with 2 * - that looks almost like somebody thought "hmm for some reason the code works if I make this bigger".

贡献者指南