Skip to content
This repository

Tab completing re.search objects crashes IPython #320

Closed
aroscoe opened this Issue · 8 comments

4 participants

Anthony Roscoe Min RK Thomas Kluyver Fernando Perez
Anthony Roscoe

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
Min RK
Owner
minrk commented

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).

Thomas Kluyver
Collaborator

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

Anthony Roscoe

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

Anthony Roscoe aroscoe closed this
Thomas Kluyver
Collaborator

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.

Min RK
Owner
minrk commented

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.

Fernando Perez
Owner

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.

Thomas Kluyver
Collaborator

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

Fernando Perez
Owner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.