未验证 提交 572d4f44 编写于 作者: A Alexander Smorkalov 提交者: GitHub

Merge pull request #22584 from vrabaud:msan

Move marking memory as initialized earlier.
...@@ -244,6 +244,11 @@ lapack_SVD(fptype* a, size_t a_step, fptype *w, fptype* u, size_t u_step, fptype ...@@ -244,6 +244,11 @@ lapack_SVD(fptype* a, size_t a_step, fptype *w, fptype* u, size_t u_step, fptype
lwork = (int)round(work1); //optimal buffer size lwork = (int)round(work1); //optimal buffer size
fptype* buffer = new fptype[lwork + 1]; fptype* buffer = new fptype[lwork + 1];
// Make sure MSAN sees the memory as having been written.
// MSAN does not think it has been written because a different language is called.
// Note: we do this here because if dgesdd is C++, MSAN errors can be reported within it.
CV_ANNOTATE_MEMORY_IS_INITIALIZED(buffer, sizeof(fptype) * (lwork + 1));
if(typeid(fptype) == typeid(float)) if(typeid(fptype) == typeid(float))
OCV_LAPACK_FUNC(sgesdd)(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info); OCV_LAPACK_FUNC(sgesdd)(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info);
else if(typeid(fptype) == typeid(double)) else if(typeid(fptype) == typeid(double))
...@@ -252,7 +257,6 @@ lapack_SVD(fptype* a, size_t a_step, fptype *w, fptype* u, size_t u_step, fptype ...@@ -252,7 +257,6 @@ lapack_SVD(fptype* a, size_t a_step, fptype *w, fptype* u, size_t u_step, fptype
// Make sure MSAN sees the memory as having been written. // Make sure MSAN sees the memory as having been written.
// MSAN does not think it has been written because a different language was called. // MSAN does not think it has been written because a different language was called.
CV_ANNOTATE_MEMORY_IS_INITIALIZED(a, a_step * n); CV_ANNOTATE_MEMORY_IS_INITIALIZED(a, a_step * n);
CV_ANNOTATE_MEMORY_IS_INITIALIZED(buffer, sizeof(fptype) * (lwork + 1));
if (u) if (u)
CV_ANNOTATE_MEMORY_IS_INITIALIZED(u, u_step * m); CV_ANNOTATE_MEMORY_IS_INITIALIZED(u, u_step * m);
if (vt) if (vt)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册