This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] fix OverflowError in backtraces with 32bit kernels
- From: Pedro Alves <palves at redhat dot com>
- To: Matthias Klose <doko at ubuntu dot com>, gdb-patches at sourceware dot org
- Cc: Sebastien Bacher <seb128 at ubuntu dot com>, Julian Taylor <jtaylor dot debian at googlemail dot com>
- Date: Tue, 4 Oct 2016 15:24:33 +0100
- Subject: Re: [patch] fix OverflowError in backtraces with 32bit kernels
- Authentication-results: sourceware.org; auth=none
- References: <56C8A021.1000800@ubuntu.com>
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