Skip to content

Commit 40948a9

Browse files
r-barnesfacebook-github-bot
authored andcommitted
Fix LLVM-12 UB in generate_proposals_op.cc (pytorch#66009)
Summary: Pull Request resolved: pytorch#66009 Fixes ``` test_trace_c10_ops (jit.test_tracer.TestTracer) ... third-party-buck/platform009/build/eigen/include/Eigen/src/Core/Block.h:374:24: runtime error: applying non-zero offset 4 to null pointer #0 0x7f5228f72227 in Eigen::internal::BlockImpl_dense<Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, -1, -1, false, true>::BlockImpl_dense(Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >&, long, long, long, long) third-party-buck/platform009/build/eigen/include/Eigen/src/Core/Block.h:374 #1 0x7f5228f7212c in Eigen::BlockImpl<Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, -1, -1, false, Eigen::Dense>::BlockImpl(Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >&, long, long, long, long) third-party-buck/platform009/build/eigen/include/Eigen/src/Core/Block.h:166 pytorch#2 0x7f5228f720dc in Eigen::Block<Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, -1, -1, false>::Block(Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >&, long, long, long, long) third-party-buck/platform009/build/eigen/include/Eigen/src/Core/Block.h:142 pytorch#3 0x7f5229b0e059 in Eigen::DenseBase<Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> > >::FixedBlockXpr<internal::get_fixed_value<int>::value, internal::get_fixed_value<long>::value>::Type Eigen::DenseBase<Eigen::Map<Eigen::Array<float, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> > >::block<int, long>(long, long, int, long) third-party-buck/platform009/build/eigen/include/Eigen/src/Core/../plugins/BlockMethods.h:98 pytorch#4 0x7f5229b0c5ca in caffe2::GenerateProposalsOp<caffe2::CPUContext>::RunOnDevice() caffe2/caffe2/operators/generate_proposals_op.cc:348 ``` Also cleans up some data type and const issues around the area. Test Plan: Sandcastle Reviewed By: xush6528 Differential Revision: D31343046 fbshipit-source-id: fd9096c8e47a0aad529c72fd313f64ca98dcb80b
1 parent c7748fc commit 40948a9

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

caffe2/operators/generate_proposals_op.cc

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -328,16 +328,21 @@ bool GenerateProposalsOp<CPUContext>::RunOnDevice() {
328328
}
329329

330330
int roi_counts = 0;
331-
for (int i = 0; i < num_images; i++) {
331+
for (int64_t i = 0; i < num_images; i++) {
332332
roi_counts += im_boxes[i].rows();
333333
}
334-
// NOLINTNEXTLINE(cppcoreguidelines-narrowing-conversions,bugprone-narrowing-conversions)
335-
const int roi_col_count = box_dim + 1;
336-
auto* out_rois = Output(0, {roi_counts, roi_col_count}, at::dtype<float>());
337-
auto* out_rois_probs = Output(1, {roi_counts}, at::dtype<float>());
334+
335+
const int64_t roi_col_count = box_dim + 1;
336+
auto *const out_rois = Output(0, {roi_counts, roi_col_count}, at::dtype<float>());
337+
auto *const out_rois_probs = Output(1, {roi_counts}, at::dtype<float>());
338+
339+
if(roi_counts == 0){
340+
return true;
341+
}
342+
338343
float* out_rois_ptr = out_rois->template mutable_data<float>();
339344
float* out_rois_probs_ptr = out_rois_probs->template mutable_data<float>();
340-
for (int i = 0; i < num_images; i++) {
345+
for (int64_t i = 0; i < num_images; i++) {
341346
const ERArrXXf& im_i_boxes = im_boxes[i];
342347
const EArrXf& im_i_probs = im_probs[i];
343348
int csz = im_i_boxes.rows();

0 commit comments

Comments
 (0)