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 : url = '/tasks/drp/priority'
In : import re
In : m = re.search('^/tasks/(\w+)/(\w+)/?$', url)
In : m.Python(63147) malloc: *** error for object 0x1010fa99d: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
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).
Also can't replicate in Ubuntu, either with 0.10 or trunk.
Looks like that was my issue. Thank you for the help!
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.
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.
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.
Indeed, although if we can work out the conditions in which it segfaults, we might be able to avoid triggering it.