Updated by Dinar Ahmatnurov over 11 years ago


Since the merge of the upstream master branch, i got some *"pure virtual method called" exceptions* in my project (which i hadn't before).

The problem appeared between my merge (which is the current one available on the master branch of my git: https://github.com/philippefoubert/opencv.git) done on 25/10/2013 (Parents: f737651071376b7d08524bea4720a4ed683da34d (Merge branch 'master' of https://github.com/Itseez/opencv.git)
+ 7e1ded0ebd98cc5c735cc2d1869b5acb83c50a9c (Merge pull request #1664 from SpecLad:merge-2.4)) and the current one I did on my local repository on 29/10/2013 (Parents: 6ff0db1c7856f52a154fd081dbbd332f8f515aad (Merge branch 'master' of https://github.com/Itseez/opencv.git) + 03bbee327b44c9384f46a042585bc4f0a46d8a26 (Merge pull request #1486 from nzjrs:cv2-logpolar) )

I have added the following function in my MinGW project to find its origin througth a breakpoint using the debugger:
<pre>
#include <iostream>
extern "C" void __cxa_pure_virtual(void)
{
std::cout << "__cxa_pure_virtual: pure virtual method called" << std::endl << std::flush;
}
</pre>

The problem comes from mat.inl.hpp:
<pre>
inline void Mat::release()
{
if( u && CV_XADD(&u->refcount, -1) == 1 )
deallocate();
[...]
}
</pre>

when the *deallocate() method* is called.

My feeling is that it may be linked to the evolutions done when adding the UMat class. I am using the Matx template: i am not very friendly with all the conversions done betwwen Mat, Matx, _InputOutputArray,... it may be linked but i am not sure.

Regards,
Philippe.

Back