This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] fix OverflowError in backtraces with 32bit kernels


On 02/20/2016 05:19 PM, Matthias Klose wrote:
> This was reported at
> https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/1513922
> 
> That's using i386, using "backtrace" gives those errors
> 
> "Traceback (most recent call last):
>   File "/usr/share/gdb/python/gdb/FrameDecorator.py", line 97, in function
>     if not isinstance(self._base, gdb.Frame):
> SystemError: <built-in function isinstance> returned a result with an
> error set
> 
> #1 0xffffffff in OverflowError: Python int too large to convert to C long"
> 
> and a patch was suggested by Julian Taylor, which applies to the trunk
> as well.
> 
> Matthias

Looks like this was never reviewed, sorry about that.

Looks good to me.  OK with a ChangeLog entry.

I wonder whether we should be using get_addr_from_python
here and in the other spot in the file we read an address
though:

	  else if (PyLong_Check (py_func))
	    {
	      CORE_ADDR addr = PyLong_AsUnsignedLongLong (py_func);
	      struct bound_minimal_symbol msymbol;


> --- gdb-7.10.orig/gdb/python/py-framefilter.c
> +++ gdb-7.10/gdb/python/py-framefilter.c
> @@ -1111,7 +1111,7 @@ py_print_frame (PyObject *filter, int fl
> 
>           if (paddr != Py_None)
>             {
> -             address = PyLong_AsLong (paddr);
> +             address = PyLong_AsUnsignedLongLong (paddr);
>               has_addr = 1;
>             }
>           Py_DECREF (paddr);

Thanks,
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]