Skip to content

objdetect: sporadic crashes in QR code tests #18669

@alalek

Description

@alalek

relates #18003

Nightly 3.4:

[----------] 8 tests from Objdetect_QRCode_Curved
[ RUN      ] Objdetect_QRCode_Curved.regression/0, where GetParam() = "curved_1.jpg"
[       OK ] Objdetect_QRCode_Curved.regression/0 (1032 ms)
[ RUN      ] Objdetect_QRCode_Curved.regression/1, where GetParam() = "curved_2.jpg"
Process returned: 3221226505
ERROR: some tests have failed
program finished with exit code -1

Nightly master:

[----------] 8 tests from Objdetect_QRCode_Curved
[ RUN      ] Objdetect_QRCode_Curved.regression/0, where GetParam() = "curved_1.jpg"
[       OK ] Objdetect_QRCode_Curved.regression/0 (734 ms)
[ RUN      ] Objdetect_QRCode_Curved.regression/1, where GetParam() = "curved_2.jpg"
Process returned: 3221226505
ERROR: some tests have failed
program finished with exit code -1

Windows precommit:

[ RUN      ] Objdetect_QRCode_Curved.regression/2, where GetParam() = "curved_3.jpg"
unknown file: error: SEH exception with code 0xc0000005 thrown in the test body.
[  FAILED  ] Objdetect_QRCode_Curved.regression/2, where GetParam() = "curved_3.jpg" (24 ms)

Valgrind:

[ RUN      ] Objdetect_QRCode_Curved.regression/1, where GetParam() = "curved_2.jpg"
==14048== Invalid read of size 4
==14048==    at 0x4E8A049: Point_ (types.hpp:1157)
==14048==    by 0x4E8A049: cv::QRDecode::findAndAddStablePoint(std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > > const&) (qrcode.cpp:1390)
==14048==    by 0x4E95736: cv::QRDecode::preparingCurvedQRCodes() (qrcode.cpp:2214)
==14048==    by 0x4E957AE: cv::QRDecode::curvedDecodingProcess() (qrcode.cpp:2452)
==14048==    by 0x4E95C14: cv::QRCodeDetector::decodeCurved(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) (qrcode.cpp:2519)
==14048==    by 0x4E9617D: cv::QRCodeDetector::detectAndDecodeCurved(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&) (qrcode.cpp:2575)
==14048==    by 0x13CD77: opencv_test::(anonymous namespace)::Objdetect_QRCode_Curved_regression_Test::Body() (test_qrcode.cpp:442)
==14048==    by 0x1301FF: opencv_test::(anonymous namespace)::Objdetect_QRCode_Curved_regression_Test::TestBody() (test_qrcode.cpp:428)
==14048==    by 0x16FA4D: HandleSehExceptionsInMethodIfSupported<testing::Test, void> (ts_gtest.cpp:3917)
==14048==    by 0x16FA4D: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (ts_gtest.cpp:3953)
==14048==    by 0x16FC10: testing::Test::Run() (ts_gtest.cpp:3991)
==14048==    by 0x16FEB1: testing::TestInfo::Run() (ts_gtest.cpp:4167)
==14048==    by 0x1700F2: testing::TestCase::Run() (ts_gtest.cpp:4285)
==14048==    by 0x1702EC: testing::internal::UnitTestImpl::RunAllTests() (ts_gtest.cpp:6660)
==14048==  Address 0x1bd3f8c0 is 0 bytes after a block of size 32 alloc'd
==14048==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==14048==    by 0x4E7A8C1: allocate (new_allocator.h:111)
==14048==    by 0x4E7A8C1: allocate (alloc_traits.h:436)
==14048==    by 0x4E7A8C1: _M_allocate (stl_vector.h:172)
==14048==    by 0x4E7A8C1: _M_allocate_and_copy<__gnu_cxx::__normal_iterator<const cv::Point_<float>*, std::vector<cv::Point_<float> > > > (stl_vector.h:1260)
==14048==    by 0x4E7A8C1: std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > >::operator=(std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&) (vector.tcc:206)
==14048==    by 0x4E7AFC0: cv::QRDecode::init(cv::Mat const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&) (qrcode.cpp:1066)
==14048==    by 0x4E95B7A: cv::QRCodeDetector::decodeCurved(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) (qrcode.cpp:2518)
==14048==    by 0x4E9617D: cv::QRCodeDetector::detectAndDecodeCurved(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&) (qrcode.cpp:2575)
==14048==    by 0x13CD77: opencv_test::(anonymous namespace)::Objdetect_QRCode_Curved_regression_Test::Body() (test_qrcode.cpp:442)
==14048==    by 0x1301FF: opencv_test::(anonymous namespace)::Objdetect_QRCode_Curved_regression_Test::TestBody() (test_qrcode.cpp:428)
==14048==    by 0x16FA4D: HandleSehExceptionsInMethodIfSupported<testing::Test, void> (ts_gtest.cpp:3917)
==14048==    by 0x16FA4D: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (ts_gtest.cpp:3953)
==14048==    by 0x16FC10: testing::Test::Run() (ts_gtest.cpp:3991)
==14048==    by 0x16FEB1: testing::TestInfo::Run() (ts_gtest.cpp:4167)
==14048==    by 0x1700F2: testing::TestCase::Run() (ts_gtest.cpp:4285)
==14048==    by 0x1702EC: testing::internal::UnitTestImpl::RunAllTests() (ts_gtest.cpp:6660)

/cc @APrigarina @allnes

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions