Tab completing re.search objects crashes IPython #320

Closed
aroscoe opened this Issue Mar 28, 2011 · 8 comments

4 participants

@aroscoe

When tab completing a the result of a re.search it crashes my ipython session (example below).

Python verison: 2.6.1
IPython version: 0.10.1
OS: MacOS X 10.6.6

In [1]: url = '/tasks/drp/priority'

In [2]: import re

In [3]: m = re.search('^/tasks/(\w+)/(\w+)/?$', url)

In [4]: m.Python(63147) malloc: *** error for object 0x1010fa99d: pointer being freed was not    allocated 
*** set a breakpoint in malloc_error_break to debug
Abort trap
@minrk
IPython member

I can't replicate this with any version of IPython (same Python and OSX).

Do you have readline installed, or does IPython give a 'leopard libedit detected' warning on startup?

If it is using libedit, it is highly recommended that you install readline with:

$ easy_install readline

Tab completion and history are much better behaved after you do that (the libedit warning will no longer appear if IPython finds proper readline).

@takluyver
IPython member

Also can't replicate in Ubuntu, either with 0.10 or trunk.

@aroscoe

Looks like that was my issue. Thank you for the help!

@aroscoe aroscoe closed this Mar 28, 2011
@takluyver
IPython member

It probably still warrants a brief investigation, if someone with OS X has the time. We'd like there to be nothing that causes IPython to crash.

@minrk
IPython member

libedit causes enough problems, that we really want readline as a hard dependency on OSX. I just pushed a more verbose warning to master instead of the tiny print statement that most people just ignore, having no idea what libedit means.

@fperez
IPython member

By the way, Thomas: while it's true that we want to make ip as robust as possible, tab completion is one of those places where there's not much we can do. If readline/libedit segfaults in the middle of the completion code, ipython can't protect against that.

It seems in this case the problem is libedit, but in the past I've seen (and reported) similar crashes coming from Python's readline itself.

It's fine to leave this one closed as it's not within our power to fix, unfortunately.

@takluyver
IPython member

Indeed, although if we can work out the conditions in which it segfaults, we might be able to avoid triggering it.

@fperez
IPython member
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment