opencv_contrib
opencv_contrib copied to clipboard
In version 2.4.9, CvDTree train causes segmentation fault when CvDTreeTrainData given as input.
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