You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Joe Mudd (JIRA)" <ji...@apache.org> on 2014/06/06 13:20:02 UTC

[jira] [Updated] (MAPREDUCE-3914) Mismatched free() / delete / delete [] in HadoopPipes

     [ https://issues.apache.org/jira/browse/MAPREDUCE-3914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Joe Mudd updated MAPREDUCE-3914:
--------------------------------

    Attachment: MAPREDUCE-3914.patch

Trunk version of the patch that passes dev-support/test-patch and is ready for code review.

> Mismatched free() / delete / delete [] in HadoopPipes
> -----------------------------------------------------
>
>                 Key: MAPREDUCE-3914
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-3914
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: pipes
>    Affects Versions: 0.20.205.0, 0.23.0, 1.0.0
>         Environment: Based upon map reduce pipes task executed on Ubuntu 11.10
>            Reporter: Charles Earl
>         Attachments: MAPREDUCE-3914-branch-0.23.patch, MAPREDUCE-3914-branch-1.0.patch, MAPREDUCE-3914.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> 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[]



--
This message was sent by Atlassian JIRA
(v6.2#6252)