New submission from Henry Precheur <[EMAIL PROTECTED]>: $ python2.5 Python 2.5.2 (r252:60911, Jun 16 2008, 15:20:47) [GCC 3.3.5 (propolice)] on openbsd4 Type "help", "copyright", "credits" or "license" for more information. >>> def complete(text, state): ... print 'complete %r %d' % (text, state) ... if text == 'i' and state == 0: ... return 'import' ... else: ... return None ... >>> import readline; readline.parse_and_bind("tab: complete") >>> readline.set_completer(complete) >>> i<TAB> # <TAB> is press the tab key complete 'i' 0 complete 'i' 1 Segmentation fault (core dumped) The problem is that Python is using a function present in libreadline but not declared in readline/readline.h: completion_matches. Instead of using rl_completion_matches. Therefor the return type of completion_matches was an int which is 32bits on amd64 but the function was supposed to returns a pointer which is 64 bits. So when the pointer had a "high" value, it was truncated. The problem is fixed by adding libcurses to AC_CHECK_LIB when checking for functions in libreadline since libreadline depends on curses. This makes Python use the correct functions declared on readline.h with a correct return type.
Patch is attached. (Others versions of Python should also be affected) ---------- components: Library (Lib) files: patch.configure.in messages: 71723 nosy: henry.precheur severity: normal status: open title: readline module Crashs on OpenBSD/amd64 type: crash versions: Python 2.5 Added file: http://bugs.python.org/file11206/patch.configure.in _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3645> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com