opencv_contrib icon indicating copy to clipboard operation
opencv_contrib copied to clipboard

In version 2.4.9, CvDTree train causes segmentation fault when CvDTreeTrainData given as input.

Open opencv-pushbot opened this issue 10 years ago • 0 comments

Transferred from http://code.opencv.org/issues/3898

|| Silvia-Laura Pintea on 2014-09-07 15:45
|| Priority: Normal
|| Affected: 2.4.9 (latest release)
|| Category: ml
|| Tracker: Bug
|| Difficulty: Easy
|| PR: 
|| Platform: x86 / Linux

In version 2.4.9, CvDTree train causes segmentation fault when CvDTreeTrainData given as input.

The train method of CvDTree causes a segmentation fault when CvDTreeTrainData is given as input for training because it copies the pointer to the input CvDTreeTrainData and subsequently release the data pointed to, despite that it never allocated this data inside the method train.

Test code lines it fails on:

cv::Mat dataDummy = cv::Mat::zeros(cv::Size(100,100),CV_32FC1);
cv::Mat labsDummy = cv::Mat::zeros(cv::Size(1,100),CV_32FC1);
labsDummy.rowRange(0,50).setTo(1);

CvDTreeParams params     = CvDTreeParams(1,5,0.9,true,2,10,true,true,0);
CvMat* dummydata         = new CvMat(dataDummy);
CvMat* dummylabs         = new CvMat(labsDummy);
CvDTree *tree            = new CvDTree();
CvDTreeTrainData *dtData = new CvDTreeTrainData(dummydata,CV_ROW_SAMPLE,\
          dummylabs,0,0,0,0,params,true,true);
tree->train(dtData,0);
dataDummy.release(); labsDummy.release();
delete dummydata; delete dummylabs;
delete dtData; delete tree;

History

Dmitry Retinskiy on 2014-09-16 10:23
Maria, could you check this?
Thanks.
-   Assignee set to Maria Dimashova
-   Status changed from New to Open
-   Category set to ml

opencv-pushbot avatar Jul 27 '15 10:07 opencv-pushbot