Bug 18438 - PyExc_MemoryError != gdbpy_gdb_memory_error
Summary: PyExc_MemoryError != gdbpy_gdb_memory_error
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: python (show other bugs)
Version: HEAD
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-20 21:32 UTC by dje
Modified: 2015-05-26 23:17 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description dje 2015-05-20 21:32:06 UTC
A user is getting the following in a backtrace:

...
#7  0x000000000040bac0 in operator<< <char, std::char_traits<char>, std::allocator<char> > (__os=warning: RTTI symbol not found for class 'std::ostream'
..., Traceback (most recent call last):
  File "/foo/printers.py", line 38, in to_string
    return ptr.lazy_string (length = length)
MemoryError: Cannot create a lazy string with address 0x0, and a non-zero length.
__str=
) at bar/string:927
#8  0x000000000040ba55 in main () at baz.cc:10

The RTTI error is a separate bug (IIRC PR 18141, PR 18417 - there are multiple bugs here, I could be forgetting one).

This bug is the python backtrace being printed when there's a memory error.
That's not supposed to happen.

The bug arises because PyExc_MemoryError is being used instead of gdbpy_gdb_memory_error. Patch to follow.
Comment 1 Sourceware Commits 2015-05-26 23:15:11 UTC
The master branch has been updated by Doug Evans <devans@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4ea6efe9365f8a87723fe01a2dd8ddf5cdec1498

commit 4ea6efe9365f8a87723fe01a2dd8ddf5cdec1498
Author: Doug Evans <dje@google.com>
Date:   Tue May 26 16:13:04 2015 -0700

    PR python/18438
    
    gdb/ChangeLog:
    
    	* python/py-lazy-string.c (stpy_convert_to_value): Use
    	gdbpy_gdb_memory_error not PyExc_MemoryError.
    	(gdbpy_create_lazy_string_object): Ditto.
    
    gdb/testsuite/ChangeLog:
    
    	* gdb.python/py-lazy-string.c: New file.
    	* gdb.python/py-lazy-string.exp: New file.
    	* gdb.python/py-prettyprint.c (lazystring) <len>: New member.
    	(main): Update.  Add estring3.
    	* gdb.python/py-prettyprint.exp: Add tests for strings at address 0.
    	* gdb.python/py-prettyprint.py (pp_ls): Handle length.
Comment 2 dje 2015-05-26 23:17:21 UTC
patch committed