[GRASS-dev] [GRASS GIS] #1833: R_command_history() memory leak

#1833: R_command_history() memory leak
---------------------------+------------------------------------------------
Reporter: jniesterowicz | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: LibRaster | Version: svn-trunk
Keywords: history | Platform: Linux
      Cpu: Unspecified |
---------------------------+------------------------------------------------
Hello,

Function Rast_command_history() causes a memory leak of 1024 bytes + the
size of command line.

1024 bytes are allocated in Rast_recreate_command() and is no freed later.
The rest of the leak comes from Rast_append_history(). This memory is not
freed later as well.

Jacek

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1833&gt;
GRASS GIS <http://grass.osgeo.org>

#1833: R_command_history() memory leak
---------------------------+------------------------------------------------
Reporter: jniesterowicz | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: LibRaster | Version: svn-trunk
Keywords: history | Platform: Linux
      Cpu: Unspecified |
---------------------------+------------------------------------------------

Comment(by glynn):

Replying to [ticket:1833 jniesterowicz]:

> Function Rast_command_history() causes a memory leak of 1024 bytes + the
size of command line.
>
> 1024 bytes are allocated in Rast_recreate_command() and is no freed
later.

Fixed in r54265.

> The rest of the leak comes from Rast_append_history(). This memory is
not freed later as well.

It's freed by calling Rast_free_history() once you no longer need the
history (which is typically after it has been written). Most modules write
the history shortly before terminating, so there's seldom any reason to
explicitly free the memory.

I suppose that this could theoretically be an issue for modules which
create an arbitrary number of output maps. In practice, it's irrelevant,
although specific cases (i.e. modules which use O(n) storage for history
when they could reasonably use O(1) storage) will probably be dealt with
as they are reported.

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1833#comment:1&gt;
GRASS GIS <http://grass.osgeo.org>

#1833: R_command_history() memory leak
----------------------------+-----------------------------------------------
  Reporter: jniesterowicz | Owner: grass-dev@…
      Type: defect | Status: closed
  Priority: normal | Milestone: 7.0.0
Component: LibRaster | Version: svn-trunk
Resolution: fixed | Keywords: history
  Platform: Linux | Cpu: Unspecified
----------------------------+-----------------------------------------------
Changes (by neteler):

  * status: new => closed
  * resolution: => fixed

Comment:

Closing since the leak has been fixed.

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1833#comment:2&gt;
GRASS GIS <http://grass.osgeo.org>