[ https://issues.apache.org/jira/browse/STDCXX-587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12537081 ]
Farid Zaripov commented on STDCXX-587: -------------------------------------- Since rw_opt_nloops is just a counter, how about the following patch? ----------------- Index: 20.temp.buffer.mt.cpp =================================================================== --- 20.temp.buffer.mt.cpp (revision 587473) +++ 20.temp.buffer.mt.cpp (working copy) @@ -48,7 +48,7 @@ #endif /* extern */ unsigned rw_opt_nthreads = 4 <= MAX_THREADS ? 4 : MAX_THREADS; -/* extern */ unsigned rw_opt_nloops = 1024 * 1024; +/* extern */ unsigned rw_opt_nloops = 128 * 1024; /**************************************************************************/ @@ -142,7 +142,7 @@ std::pair<_RWSTD_INT32_T*, std::ptrdiff_t> buf2; std::pair<Type64*, std::ptrdiff_t> buf3; - for (unsigned i = 0; i != rw_opt_nloops; ++i) { + for (unsigned i = 0; i != rw_opt_nloops * 8; ++i) { const unsigned nelems = (i + targs->threadno_) % 32; ----------------- > purify reports memory leak from __rw_tmpbuf in 20.temp.buffer.mt > ---------------------------------------------------------------- > > Key: STDCXX-587 > URL: https://issues.apache.org/jira/browse/STDCXX-587 > Project: C++ Standard Library > Issue Type: Improvement > Components: Tests > Reporter: Travis Vitek > Priority: Minor > Fix For: 4.2.1 > > Attachments: stdcxx-587.patch > > > Each test thread iterates some number of times switching on a counter. If the > last iteration runs one of the allocation functions, the temporary buffer > will not be deallocated when the thread exits. > Purify: Searching for all memory leaks... > Memory leaked: 42 bytes (6.98%); potentially leaked: 0 bytes (0%) > MLK: 24 bytes leaked at 0x81089d0 > * This memory was allocated from: > malloc [rtlib.o] > operator new(unsigned) [libstd15d.so] > __rw::__rw_allocate(unsigned, int) [memory.cpp:53] > __rw_tmpbuf [tmpbuf.cpp:115] > std::pair<long long*, int > std::get_temporary_buffer<long long, int > >(int, long long*) [_rawiter.h:138] > std::pair<long long*, int > std::get_temporary_buffer<long long>(int) > [_rawiter.h:153] > MLK: 18 bytes leaked at 0x8108a38 > * This memory was allocated from: > malloc [rtlib.o] > operator new(unsigned) [libstd15d.so] > __rw::__rw_allocate(unsigned, int) [memory.cpp:53] > __rw_tmpbuf [tmpbuf.cpp:115] > std::pair<short*, int > std::get_temporary_buffer<short, int >(int, > short*) [_rawiter.h:138] > std::pair<short*, int > std::get_temporary_buffer<short>(int) > [_rawiter.h:153] -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.