Failed to run the test of `test_fast.cpp` on Windows with MinGW-W64
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?
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
ref http://answers.opencv.org/question/19... how to enable TBB/a para fw