Updated by Alexander Shishkov about 13 years ago
I updated and built OpenCV [[OpenCV]] 2.32 SVN(trunk) yesterday with the latest stable version of TBB(tbb30_20110704oss) using CMake 2.85 and Microsoft Visual Studio 2010 x64.
But SURF detect crashed in both cv cpp example code and my own program. It's my first time to build [[OpenCV]] with TBB, I followed the guide in the wiki. I've tried TBB3 in Intel C++ Composer XE, but it's the same problem.
Error Message:
Debug Assertion Failed!
Program: .......
Module: tbb_debug.dll
File: ../../src/tbb/mutex.cpp
Line: 43
Expression: false
mutex::scoped_lock: illegal mutex state
VS Call Stack(sorry for Chinese characters):
> msvcr100d.dll!_CrtDbgBreak() è¡ 85 C
msvcr100d.dll!_VCrtDbgReportA(int nRptType=2, const char * szFile=0x000000005a0b8520, int nLine=1019, const char * szModule=0x0000000000000000, const char * szFormat=0x0000000000000000, char * arglist=0x00000000086bebb8) è¡ 287 C
msvcr100d.dll!_CrtDbgReportV(int nRptType=2, const char * szFile=0x000000005a0b8520, int nLine=1019, const char * szModule=0x0000000000000000, const char * szFormat=0x0000000000000000, char * arglist=0x00000000086bebb8) è¡ 242 C
msvcr100d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x000000005a0b8520, int nLine=1019, const char * szModule=0x0000000000000000, const char * szFormat=0x0000000000000000, ...) è¡ 258 + 0x2c åè C
mfc100d.dll!AfxAssertFailedLine(const char * lpszFileName=0x000000005a0b8520, int nLine=1019) è¡ 25 + 0x27 åè C++
mfc100d.dll!CWnd::DestroyWindow() è¡ 1019 + 0x3a åè C++
mfc100d.dll!CToolTipCtrl::DestroyToolTipCtrl() è¡ 76 C++
mfc100d.dll!AFX_MODULE_THREAD_STATE::~AFX_MODULE_THREAD_STATE() è¡ 372 C++
mfc100d.dll!AFX_MODULE_THREAD_STATE::@scalar deleting destructor'() + 0x17 åè C++
mfc100d.dll!CThreadSlotData::DeleteValues(CThreadData * pData=0x0000000000272750, HINSTANCE+ * hInst=0x0000000000000000) è¡ 354 + 0x3d åè C++
mfc100d.dll!CThreadSlotData::DeleteValues(HINSTANCE+ * hInst=0x0000000000000000, int bAll=1) è¡ 396 C++
mfc100d.dll!AfxTermLocalData(HINSTANCE+ * hInst=0x0000000000000000, int bAll=1) è¡ 494 C++
mfc100d.dll!DllMain(HINSTANCE+ * hInstance=0x0000000059aa0000, unsigned long dwReason=0, void * +formal=0x0000000000000001) è¡ 563 + 0xc åè C++
mfc100d.dll!+DllMainCRTStartup(void * hDllHandle=0x0000000059aa0000, unsigned long dwReason=0, void * lpreserved=0x0000000000000001) è¡ 512 + 0x13 åè C
mfc100d.dll!_DllMainCRTStartup(void * hDllHandle=0x0000000059aa0000, unsigned long dwReason=0, void * lpreserved=0x0000000000000001) è¡ 477 C
ntdll.dll!0000000077a94371()
[ä¸é¢çæ¡æ¶å¯è½ä¸æ£ç¡®å/æ缺失ï¼æ²¡æ为 ntdll.dll å 载符å·]
ntdll.dll!0000000077a94180()
msvcr100d.dll!+crtExitProcess(int status=3) è¡ 709 C
msvcr100d.dll!doexit(int code=3, int quick=1, int retcaller=0) è¡ 622 C
msvcr100d.dll!_exit(int code=3) è¡ 402 C
msvcr100d.dll!raise(int signum=22) è¡ 525 C
msvcr100d.dll!+crtMessageWindowA(int nRptType=2, const char * szFile=0x000007fef8808390, const char * szLine=0x00000000086c35e0, const char * szModule=0x000007fef88076c8, const char * szUserMessage=0x00000000086c45e0) è¡ 377 C
msvcr100d.dll!_VCrtDbgReportA(int nRptType=2, const char * szFile=0x000007fef8808390, int nLine=43, const char * szModule=0x000007fef88076c8, const char * szFormat=0x000007fef88076bc, char * arglist=0x00000000086c5718) è¡ 417 + 0x59 åè C
msvcr100d.dll!_CrtDbgReportV(int nRptType=2, const char * szFile=0x000007fef8808390, int nLine=43, const char * szModule=0x000007fef88076c8, const char * szFormat=0x000007fef88076bc, char * arglist=0x00000000086c5718) è¡ 242 C
msvcr100d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x000007fef8808390, int nLine=43, const char * szModule=0x000007fef88076c8, const char * szFormat=0x000007fef88076bc, ...) è¡ 258 + 0x2c åè C
tbb_debug.dll!tbb::assertion_failure(const char * filename=0x000007fef8808390, int line=43, const char * expression=0x000007fef8808388, const char * comment=0x000007fef8808360) è¡ 68 + 0x5c åè C++
tbb_debug.dll!tbb::mutex::scoped_lock::internal_acquire(tbb::mutex & m={...}) è¡ 50 C++
opencv_features2d232d.dll!tbb::mutex::scoped_lock::acquire(tbb::mutex & mutex={...}) è¡ 108 C++
opencv_features2d232d.dll!tbb::mutex::scoped_lock::scoped_lock(tbb::mutex & mutex={...}) è¡ 92 C++
opencv_features2d232d.dll!icvFindMaximaInLayer(const CvMat [[CvMat]] * sum=0x0000000001c5aae0, const CvMat [[CvMat]] * mask_sum=0x0000000000000000, const CvSURFParams [[CvSURFParams]] * params=0x000000000332cdc0, CvMat [[CvMat]] * * dets=0x0000000003326a20, CvMat [[CvMat]] * * traces=0x0000000003327aa0, const int * sizes=0x0000000003328b20, int layer=4, int sampleStep=1, CvSeq [[CvSeq]] * points=0x0000000001c7efd0) è¡ 360 + 0x14 åè C++
opencv_features2d232d.dll!cv::SURFFindInvoker::operator()(const tbb::blocked_range<int> & range={...}) è¡ 425 C++
opencv_features2d232d.dll!tbb::internal::start_for<tbb::blocked_range<int>,cv::SURFFindInvoker,tbb::auto_partitioner>::execute() è¡ 100 C++
tbb_debug.dll!tbb::internal::custom_scheduler<tbb::internal::IntelSchedulerTraits>::local_wait_for_all(tbb::task & parent={...}, tbb::task * child=0x000007fffff4b340) è¡ 441 + 0x10 åè C++
tbb_debug.dll!tbb::internal::arena::process(tbb::internal::generic_scheduler & s={...}) è¡ 93 C++
tbb_debug.dll!tbb::internal::market::process(rml::job & j={...}) è¡ 385 + 0xf åè C++
tbb_debug.dll!tbb::internal::rml::private_worker::run() è¡ 256 C++
tbb_debug.dll!tbb::internal::rml::private_worker::thread_routine(void * arg=0x000007fffff43e80) è¡ 224 C++
msvcr100d.dll!_callthreadstartex() è¡ 314 + 0x17 åè C
msvcr100d.dll!_threadstartex(void * ptd=0x0000000003688dc0) è¡ 297 C
kernel32.dll!000000007786652d()
ntdll.dll!0000000077a9c521()
But SURF detect crashed in both cv cpp example code and my own program. It's my first time to build [[OpenCV]] with TBB, I followed the guide in the wiki. I've tried TBB3 in Intel C++ Composer XE, but it's the same problem.
Error Message:
Debug Assertion Failed!
Program: .......
Module: tbb_debug.dll
File: ../../src/tbb/mutex.cpp
Line: 43
Expression: false
mutex::scoped_lock: illegal mutex state
VS Call Stack(sorry for Chinese characters):
> msvcr100d.dll!_CrtDbgBreak() è¡ 85 C
msvcr100d.dll!_VCrtDbgReportA(int nRptType=2, const char * szFile=0x000000005a0b8520, int nLine=1019, const char * szModule=0x0000000000000000, const char * szFormat=0x0000000000000000, char * arglist=0x00000000086bebb8) è¡ 287 C
msvcr100d.dll!_CrtDbgReportV(int nRptType=2, const char * szFile=0x000000005a0b8520, int nLine=1019, const char * szModule=0x0000000000000000, const char * szFormat=0x0000000000000000, char * arglist=0x00000000086bebb8) è¡ 242 C
msvcr100d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x000000005a0b8520, int nLine=1019, const char * szModule=0x0000000000000000, const char * szFormat=0x0000000000000000, ...) è¡ 258 + 0x2c åè C
mfc100d.dll!AfxAssertFailedLine(const char * lpszFileName=0x000000005a0b8520, int nLine=1019) è¡ 25 + 0x27 åè C++
mfc100d.dll!CWnd::DestroyWindow() è¡ 1019 + 0x3a åè C++
mfc100d.dll!CToolTipCtrl::DestroyToolTipCtrl() è¡ 76 C++
mfc100d.dll!AFX_MODULE_THREAD_STATE::~AFX_MODULE_THREAD_STATE() è¡ 372 C++
mfc100d.dll!AFX_MODULE_THREAD_STATE::@scalar deleting destructor'() + 0x17 åè C++
mfc100d.dll!CThreadSlotData::DeleteValues(CThreadData * pData=0x0000000000272750, HINSTANCE+ * hInst=0x0000000000000000) è¡ 354 + 0x3d åè C++
mfc100d.dll!CThreadSlotData::DeleteValues(HINSTANCE+ * hInst=0x0000000000000000, int bAll=1) è¡ 396 C++
mfc100d.dll!AfxTermLocalData(HINSTANCE+ * hInst=0x0000000000000000, int bAll=1) è¡ 494 C++
mfc100d.dll!DllMain(HINSTANCE+ * hInstance=0x0000000059aa0000, unsigned long dwReason=0, void * +formal=0x0000000000000001) è¡ 563 + 0xc åè C++
mfc100d.dll!+DllMainCRTStartup(void * hDllHandle=0x0000000059aa0000, unsigned long dwReason=0, void * lpreserved=0x0000000000000001) è¡ 512 + 0x13 åè C
mfc100d.dll!_DllMainCRTStartup(void * hDllHandle=0x0000000059aa0000, unsigned long dwReason=0, void * lpreserved=0x0000000000000001) è¡ 477 C
ntdll.dll!0000000077a94371()
[ä¸é¢çæ¡æ¶å¯è½ä¸æ£ç¡®å/æ缺失ï¼æ²¡æ为 ntdll.dll å 载符å·]
ntdll.dll!0000000077a94180()
msvcr100d.dll!+crtExitProcess(int status=3) è¡ 709 C
msvcr100d.dll!doexit(int code=3, int quick=1, int retcaller=0) è¡ 622 C
msvcr100d.dll!_exit(int code=3) è¡ 402 C
msvcr100d.dll!raise(int signum=22) è¡ 525 C
msvcr100d.dll!+crtMessageWindowA(int nRptType=2, const char * szFile=0x000007fef8808390, const char * szLine=0x00000000086c35e0, const char * szModule=0x000007fef88076c8, const char * szUserMessage=0x00000000086c45e0) è¡ 377 C
msvcr100d.dll!_VCrtDbgReportA(int nRptType=2, const char * szFile=0x000007fef8808390, int nLine=43, const char * szModule=0x000007fef88076c8, const char * szFormat=0x000007fef88076bc, char * arglist=0x00000000086c5718) è¡ 417 + 0x59 åè C
msvcr100d.dll!_CrtDbgReportV(int nRptType=2, const char * szFile=0x000007fef8808390, int nLine=43, const char * szModule=0x000007fef88076c8, const char * szFormat=0x000007fef88076bc, char * arglist=0x00000000086c5718) è¡ 242 C
msvcr100d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x000007fef8808390, int nLine=43, const char * szModule=0x000007fef88076c8, const char * szFormat=0x000007fef88076bc, ...) è¡ 258 + 0x2c åè C
tbb_debug.dll!tbb::assertion_failure(const char * filename=0x000007fef8808390, int line=43, const char * expression=0x000007fef8808388, const char * comment=0x000007fef8808360) è¡ 68 + 0x5c åè C++
tbb_debug.dll!tbb::mutex::scoped_lock::internal_acquire(tbb::mutex & m={...}) è¡ 50 C++
opencv_features2d232d.dll!tbb::mutex::scoped_lock::acquire(tbb::mutex & mutex={...}) è¡ 108 C++
opencv_features2d232d.dll!tbb::mutex::scoped_lock::scoped_lock(tbb::mutex & mutex={...}) è¡ 92 C++
opencv_features2d232d.dll!icvFindMaximaInLayer(const CvMat [[CvMat]] * sum=0x0000000001c5aae0, const CvMat [[CvMat]] * mask_sum=0x0000000000000000, const CvSURFParams [[CvSURFParams]] * params=0x000000000332cdc0, CvMat [[CvMat]] * * dets=0x0000000003326a20, CvMat [[CvMat]] * * traces=0x0000000003327aa0, const int * sizes=0x0000000003328b20, int layer=4, int sampleStep=1, CvSeq [[CvSeq]] * points=0x0000000001c7efd0) è¡ 360 + 0x14 åè C++
opencv_features2d232d.dll!cv::SURFFindInvoker::operator()(const tbb::blocked_range<int> & range={...}) è¡ 425 C++
opencv_features2d232d.dll!tbb::internal::start_for<tbb::blocked_range<int>,cv::SURFFindInvoker,tbb::auto_partitioner>::execute() è¡ 100 C++
tbb_debug.dll!tbb::internal::custom_scheduler<tbb::internal::IntelSchedulerTraits>::local_wait_for_all(tbb::task & parent={...}, tbb::task * child=0x000007fffff4b340) è¡ 441 + 0x10 åè C++
tbb_debug.dll!tbb::internal::arena::process(tbb::internal::generic_scheduler & s={...}) è¡ 93 C++
tbb_debug.dll!tbb::internal::market::process(rml::job & j={...}) è¡ 385 + 0xf åè C++
tbb_debug.dll!tbb::internal::rml::private_worker::run() è¡ 256 C++
tbb_debug.dll!tbb::internal::rml::private_worker::thread_routine(void * arg=0x000007fffff43e80) è¡ 224 C++
msvcr100d.dll!_callthreadstartex() è¡ 314 + 0x17 åè C
msvcr100d.dll!_threadstartex(void * ptd=0x0000000003688dc0) è¡ 297 C
kernel32.dll!000000007786652d()
ntdll.dll!0000000077a9c521()