Failed to run the test of `test_fast.cpp` on Windows with MinGW-W64

asked 2018-08-26 20:29:19 -0600

laurencedev gravatar image

updated 2018-08-26 21:36:03 -0600

Env settings:

OS: Windows 10 64bit

ToolChain: MinGW-W64 configured with "x86_64-8.1.0-posix-seh-rt_v6-rev0"

IDE: JetBrain CLion

Build Type: Debug

CMake Options:

-DENABLE_PRECOMPILED_HEADERS=OFF
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules
-DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata
-DBUILD_EXAMPLES=ON
-DBUILD_JAVA=OFF
-DBUILD_opencv_xfeatures2d=ON
-DBUILD_opencv_calib3d=ON
-DBUILD_opencv_apps=OFF
-DBUILD_opencv_aruco=OFF
-DBUILD_opencv_besegm=OFF
-DBUILD_opencv_bioinspired=OFF
-DBUILD_opencv_ccalib=OFF
-DBUILD_opencv_dnn=OFF
-DBUILD_opencv_dnn_objdetect=OFF
-DBUILD_opencv_flann=ON
-DBUILD_opencv_fuzzy=OFF
-DBUILD_opencv_hdf=OFF
-DBUILD_opencv_hfs=OFF
-DBUILD_opencv_java_bindings_generator=OFF
-DBUILD_opencv_js=OFF
-DBUILD_opencv_legacy=OFF
-DBUILD_opencv_line_descriptor=OFF
-DBUILD_opencv_ml=OFF
-DBUILD_opencv_objdetect=OFF
-DBUILD_opencv_optflow=OFF
-DBUILD_opencv_photo=OFF
-DBUILD_opencv_pref_core=OFF
-DBUILD_opencv_python3=OFF
-DBUILD_opencv_python_bindings_generator=OFF
-DBUILD_opencv_shape=OFF
-DBUILD_opencv_stereo=OFF
-DBUILD_opencv_stitching=OFF
-DBUILD_opencv_structured_light=OFF
-DBUILD_opencv_surface_matching=OFF
-DBUILD_opencv_tracking=OFF
-DBUILD_opencv_video=OFF
-DBUILD_opencv_ximgproc=OFF
-DBUILD_opencv_xphoto=OFF
-DWITH_1394=OFF
-DWITH_CUDA=OFF
-DWITH_IPP=OFF
-DWITH_MSMF=OFF
-DWITH_OPENCL=OFF
-G "MinGW Makefiles" ..

Problem:

When running the ../features2d/test/test_fast.cpp, it outputs the following information:

Testing started at 15:04 ...
C:\Users\laurence\dev\opencv\cmake_build_w_contrib_mingw\bin\opencv_test_features2dd.exe --

 1. gtest_filter=Features2d_FAST.*:Features2d_FAST/*.*:*/Features2d_FAST.*/*:*/Features2d_FAST/*.*
--gtest_color=no CTEST_FULL_OUTPUT OpenCV version: 4.0.0-pre OpenCV VCS
version: cc9211f-dirty Build type:
Debug Compiler:
C:/Dev/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe
(ver 8.1.0) unknown file: Failure
C++ exception with description
"basic_string::_M_construct null not
valid" thrown in auxiliary test code
(environments or event listeners).

Process finished with exit code 1
Empty test suite.

The 1st impression of the cause is the test data path haven't initialized . But debug show it go through the void TS::init( const string& modulename ) in ts.cpp with data_path valued "C:\\Users\\laurence\\dev\\opencv_extra\\testdata/cv/"".

Further debug shows line recordPropertyVerbose("cv_parallel_framework", "Parallel framework", cv::currentParallelFramework()); in ts.cpp triggered the error. Its stack:

libstdc++-6!.cxa_throw 0x000000006fd05da7
libstdc++-6!_ZSt19__throw_logic_errorPKc 0x000000006fcf9cd7
libstdc++-6!_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag 0x000000006fcdf57e
cvtest::SystemInfoCollector::OnTestProgramStart ts.cpp:937
testing::internal::TestEventRepeater::OnTestProgramStart ts_gtest.cpp:4789
testing::internal::UnitTestImpl::RunAllTests ts_gtest.cpp:6087
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> ts_gtest.cpp:3869
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> ts_gtest.cpp:3905
testing::UnitTest::Run ts_gtest.cpp:5733
RUN_ALL_TESTS ts_gtest.h:21298
main test_main.cpp:6
__tmainCRTStartup 0x00000000004013c7
mainCRTStartup 0x00000000004014fb

Online searching of the error suggests that it may caused by there are certain needed components haven't compiled. However, given the test_fast.cpp is in feature2d and the cmake options applied, it doesn't seems to be the case here.

On Ubuntu 18.04 LTS 64 bits, the test are passed/succeed with following outputs. (the -G "MinGW Makefiles" changed to -G "Unix Makefiles").

Testing started at 18:18  ...
/home/laurence/dev/opencv/cmake_build_w_contrib_linux/bin/opencv_test_features2d --gtest_filter=Features2d_FAST.*:Features2d_FAST/*.*:*/Features2d_FAST.*/*:*/Features2d_FAST/*.* --gtest_color=no
CTEST_FULL_OUTPUT
OpenCV version: 4.0.0-pre
OpenCV VCS version: 5a2ce88-dirty
Build type: Debug
Compiler: /usr/bin/c++  (ver 7.3.0)
Parallel framework: pthreads
CPU features: SSE SSE2 SSE3 *SSE4.1 *SSE4.2 *FP16 *AVX *AVX2 *AVX512-SKX?
Process finished with exit code 0

Any suggestions on what may missed?

edit retag flag offensive close merge delete

Comments

Directly cause is no parallel framework has explicitly specified in cmake options.

Besides, there is a potential bug in OpenCV 's code base, ref https://github.com/opencv/opencv/issues/12325

laurencedev gravatar imagelaurencedev ( 2018-08-28 06:20:14 -0600 )edit

ref http://answers.opencv.org/question/19... how to enable TBB/a para fw

laurencedev gravatar imagelaurencedev ( 2018-08-28 08:09:39 -0600 )edit