Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
0.20.205.0, 0.23.0, 1.0.0
-
None
-
Based upon map reduce pipes task executed on Ubuntu 11.10
Description
When running valgrind on a simple MapReduce pipes job, valgrind identifies a mismatched new / delete:
==20394== Mismatched free() / delete / delete []
==20394== at 0x4C27FF2: operator delete(void*) (vg_replace_malloc.c:387)
==20394== by 0x4328A5: HadoopPipes::runTask(HadoopPipes::Factory const&) (HadoopPipes.cc:1171)
==20394== by 0x424C33: main (ProcessRow.cpp:118)
==20394== Address 0x9c5b540 is 0 bytes inside a block of size 131,072 alloc'd
==20394== at 0x4C2864B: operator new[](unsigned long) (vg_replace_malloc.c:305)
==20394== by 0x431E5D: HadoopPipes::runTask(HadoopPipes::Factory const&) (HadoopPipes.cc:1121)
==20394== by 0x424C33: main (ProcessRow.cpp:118)
==20394==
==20394== Mismatched free() / delete / delete []
==20394== at 0x4C27FF2: operator delete(void*) (vg_replace_malloc.c:387)
==20394== by 0x4328AF: HadoopPipes::runTask(HadoopPipes::Factory const&) (HadoopPipes.cc:1172)
==20394== by 0x424C33: main (ProcessRow.cpp:118)
==20394== Address 0x9c7b580 is 0 bytes inside a block of size 131,072 alloc'd
==20394== at 0x4C2864B: operator new[](unsigned long) (vg_replace_malloc.c:305)
==20394== by 0x431E6A: HadoopPipes::runTask(HadoopPipes::Factory const&) (HadoopPipes.cc:1122)
==20394== by 0x424C33: main (ProcessRow.cpp:118)
The new [] calls in Lines 1121 and 1122 of HadoopPipes.cc:
bufin = new char[bufsize];
bufout = new char[bufsize];
should have matching delete [] calls but are instead bracketed my delete on lines 1171 and 1172:
delete bufin;
delete bufout;
So these should be replaced by delete[]