stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek (JIRA)" <>
Subject [jira] Updated: (STDCXX-584) purify reports memory leak from __rw_vfmtwhat in 18.exception test
Date Wed, 10 Oct 2007 23:04:50 GMT


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  <>

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

> purify reports memory leak from __rw_vfmtwhat in 18.exception test
> ------------------------------------------------------------------
>                 Key: STDCXX-584
>                 URL:
>             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) []
>     operator new [](unsigned) []
>     __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.

View raw message