Am 17.06.2011 17:49, schrieb Tom Hughes: > On 17/06/11 16:45, Stephanie Stroka wrote: > >> I actually ignored three warnings. It's still a bit cryptic for me. For >> example, I get the following msg: >> >> Invalid write of size 4 >> ==4427== at 0x405930: sort(unsigned int**, unsigned int, unsigned >> int) (facedetect.cpp:293) >> ==4427== by 0x407EA9: findScrambledArea(cv::Mat&) (facedetect.cpp:536) >> ==4427== by 0x40AFFD: runOperation(Mode, CryptoKey const&, >> DetectorParams&, std::string, std::string, std::string, bool) >> (facedetect.cpp:625) >> ==4427== by 0x40BCD8: main (facedetect.cpp:700) >> ==4427== Address 0x11154010 is 0 bytes after a block of size 2,080 >> alloc'd >> ==4427== at 0x4C2668A: malloc (vg_replace_malloc.c:236) >> ==4427== by 0x4058CE: sort(unsigned int**, unsigned int, unsigned >> int) (facedetect.cpp:287) >> ==4427== by 0x407EA9: findScrambledArea(cv::Mat&) (facedetect.cpp:536) >> ==4427== by 0x40AFFD: runOperation(Mode, CryptoKey const&, >> DetectorParams&, std::string, std::string, std::string, bool) >> (facedetect.cpp:625) >> ==4427== by 0x40BCD8: main (facedetect.cpp:700) >> >> >> My code at that position looks like this: >> >> 284 static uint* sort(uint** matrix, uint width, uint height) { >> 285 uint* data = (uint*) malloc(width * height * sizeof(uint)); >> 286 uint i,j=0; >> 287 for(i=0; i<height; i++) { >> 288 for(j=0; j<width; j++) { >> 289 data[j + i*height] = matrix[i][j]; >> 290 } >> 291 } >> ... >> >> I don't see why I'm using an invalid write of size 4. I'm retrieving an >> uint and I'm writing an uint. > > The write it is complaining about is at line 293 and you haven't shown > us that line ;-) > > What it is saying is that you are writing beyond the end of the array. > > Tom > Ups, sorry... I refactored the code and ran it again, but I didn't post the correct log msg.
The log really points to line 289: ==4446== Invalid write of size 4 ==4446== at 0x4058DF: sort(unsigned int**, unsigned int, unsigned int) (facedetect.cpp:289) ==4446== by 0x407E39: findScrambledArea(cv::Mat&) (facedetect.cpp:531) ==4446== by 0x40AFFD: runOperation(Mode, CryptoKey const&, DetectorParams&, std::string, std::string, std::string, bool) (facedetect.cpp:620) ==4446== by 0x40BCD8: main (facedetect.cpp:695) ==4446== Address 0x11154010 is 0 bytes after a block of size 2,080 alloc'd ==4446== at 0x4C2668A: malloc (vg_replace_malloc.c:236) ==4446== by 0x40589D: sort(unsigned int**, unsigned int, unsigned int) (facedetect.cpp:285) ==4446== by 0x407E39: findScrambledArea(cv::Mat&) (facedetect.cpp:531) ==4446== by 0x40AFFD: runOperation(Mode, CryptoKey const&, DetectorParams&, std::string, std::string, std::string, bool) (facedetect.cpp:620) ==4446== by 0x40BCD8: main (facedetect.cpp:695) ==4446== ------------------------------------------------------------------------------ EditLive Enterprise is the world's most technically advanced content authoring tool. Experience the power of Track Changes, Inline Image Editing and ensure content is compliant with Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev _______________________________________________ Valgrind-users mailing list Valgrind-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-users