PING: [Python] Patch to fix memory leak

Paul Koning paulkoning@comcast.net
Thu Sep 15 18:08:00 GMT 2011


Ping...

I can commit this now but I need approval first.

	paul


Begin forwarded message:

> From: Paul Koning <paulkoning@comcast.net>
> Date: September 6, 2011 2:01:02 PM EDT
> To: gdb-patches@sourceware.org
> Subject: [Python] Patch to fix memory leak
> 
> PyList_Append increments the reference count of the item being appended to the list, and two of the places in the GDB Python code that use it don't take that into account.  The result is a memory leak.  The attached patch fixes that.
> 
> Tested by using a debug build of Python with reference counting enabled, and turning on dumping of final leftover objects.
> 
> I don't have commit privs.
> 
> 	paul
> 
> ChangeLog:
> 
> 2011-09-06  Paul Koning  <pkoning@equallogic.com>
> 
> 	* python/py-cmd.c (gdbpy_string_to_argv): Decrement reference
> 	count of item appended to list.
> 	* python/py-type.c (typy_fields): Likewise.
> 
> Index: python/py-cmd.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/python/py-cmd.c,v
> retrieving revision 1.15
> diff -u -r1.15 py-cmd.c
> --- python/py-cmd.c	5 Aug 2011 14:24:10 -0000	1.15
> +++ python/py-cmd.c	6 Sep 2011 17:50:48 -0000
> @@ -685,14 +685,12 @@
> 	  if (argp == NULL
> 	      || PyList_Append (py_argv, argp) < 0)
> 	    {
> -	      if (argp != NULL)
> -		{
> -		  Py_DECREF (argp);
> -		}
> +	      Py_XDECREF (argp);
> 	      Py_DECREF (py_argv);
> 	      freeargv (c_argv);
> 	      return NULL;
> 	    }
> +	  Py_DECREF (argp);
> 	}
> 
>       freeargv (c_argv);
> Index: python/py-type.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/python/py-type.c,v
> retrieving revision 1.20
> diff -u -r1.20 py-type.c
> --- python/py-type.c	18 Aug 2011 16:17:39 -0000	1.20
> +++ python/py-type.c	6 Sep 2011 17:50:48 -0000
> @@ -246,6 +246,7 @@
> 	  Py_DECREF (result);
> 	  return NULL;
> 	}
> +      Py_DECREF (dict);
>     }
> 
>   return result;
> 



More information about the Gdb-patches mailing list