You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Travis Vitek (JIRA)" <ji...@apache.org> on 2007/10/11 01:04:50 UTC

[jira] Updated: (STDCXX-584) purify reports memory leak from __rw_vfmtwhat in 18.exception test

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

Travis Vitek updated STDCXX-584:
--------------------------------

    Attachment: stdcxx-584.patch

Just in case it isn't clear, the test sets the function that is invoked when the library wants to throw an exception. The function that the test sets doesn't properly deallocate the exception string. There is a comment in there that indicates that the string is not supposed to be deallocated, but I think that comment is out of date wrt the code as it is now.

2007-10-10  Travis Vitek  <vi...@roguewave.com>

	STDCXX-584
	* 18.exception.cpp (test_throw_proc): Deallocate exception
	description string passed to user throw proc to avoid memory
	leak.

> purify reports memory leak from __rw_vfmtwhat in 18.exception test
> ------------------------------------------------------------------
>
>                 Key: STDCXX-584
>                 URL: https://issues.apache.org/jira/browse/STDCXX-584
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: Tests
>            Reporter: Travis Vitek
>            Assignee: Travis Vitek
>            Priority: Trivial
>             Fix For: 4.2.1
>
>         Attachments: stdcxx-584.patch
>
>
> The library uses a system of functions for platforms that don't support exceptions. The __rw_throw function calls __rw_vfmtwhat() to get a string describing the exception that has occured. Under some conditions the string is allocated from the heap as an array of characters. Eventually __rw_throw invokes a function via pointer (__rw_throw_proc) that is supposed to process the exception (possibly by throwing a real exception object). Unfortunately the test does not deallocate the string that was allocated by __rw_vfmtwhat().
> Purify: Searching for all memory leaks...
> Memory leaked: 3072 bytes (25.6%); potentially leaked: 0 bytes (0%)
> wLK: 3072 bytes leaked in 12 blocks
>   * This memory was allocated from:
>     malloc         [rtlib.o]
>     operator new(unsigned) [libstd15d.so]
>     operator new [](unsigned) [libstd15d.so]
>     __rw::__rw_vfmtwhat(char*, unsigned, char const*, char*) [exception.cpp:479]
>     __rw::__rw_throw(int, ...) [exception.cpp:825]
>     test_rw_throw() [18.exception.cpp:527]
>   * Block of 256 bytes (12 times); last block at 0x8118de0

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.