classification
Title: OS X installer: readline module breaks when targeting on 10.5 or 10.6
Type: crash Stage: resolved
Components: macOS Versions: Python 3.2, Python 2.7, Python 2.6
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: ronaldoussoren Nosy List: barry, ned.deily, ronaldoussoren
Priority: release blocker Keywords:

Created on 2010-03-05 10:38 by ned.deily, last changed 2010-03-08 07:10 by ronaldoussoren. This issue is now closed.

Files
File name Uploaded Description Edit
issue-sl-setup-26.txt ned.deily, 2010-03-05 10:38
issue-sl-setup-trunk.txt ned.deily, 2010-03-05 10:39
issue-sl-setup-py3k.txt ned.deily, 2010-03-05 10:39
Messages (4)
msg100463 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2010-03-05 10:38
2.6.5 release blocker

Changes for Issue6877 to enable the readline module to use the
native OS X editline library instead of GNU readline introduce
a problem for OS X installer builds or other builds using
MACOSX_DEPLOYMENT_TARGET.  The test in setup.py to determine
whether to search for a non-system library is based solely 
on the OS level of the build system and not the minimum
deployment target level.  Without this patch to setup.py,
10.3- or 10.4-targeted installer builds on 10.5 or 10.6
will fail to search for the installer-supplied GNU readline
*and* will be dynamically linked with the crippled
10.4u SDK version of editline, thereby causing the readline
module to crash on all levels of OS X.  (The installer build
needs to continue to supply GNU readline because of the broken
10.4 editline).

Symptoms vary by OS level and arch but include bus errors and
test failures such as:

test_readline failed --  line 29, in testHistoryUpdates
    self.assertEqual(readline.get_current_history_length(), 2)
AssertionError: 8448056 != 2
[10.5]: Python(71826,0xa0c18820) malloc: *** error for object 0x80e994: Non-aligned pointer being freed
*** set a breakpoint in malloc_error_break to debug
[10.6]: Python(25154,0xa0b73500) malloc: *** error for object 0x80df94: pointer being freed was not allocated
[10.4]: test_readline skipped -- dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/readline.so, 2): Symbol not found: _rl_free_line_state


Patches supplied for 26, trunk(27), and py3k(32), but *not*
31 as the readline changes have not been backported to 31.

The trunk and 2.6 versions of the patch also correct a version
test in setup.py that causes builds on 10.6 to be flooded with
OS X deprecation warnings.
msg100569 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2010-03-07 09:27
Barry: this definitely needs to be applied before 2.6.5 is released, without the patch I cannot build the mac installers.

The patch disables support for libedit when targetting 10.4, which is IMHO correct because as Ned notes libedit's readline emulation is totally broken in 10.4.
msg100606 - (view) Author: Barry A. Warsaw (barry) * (Python committer) Date: 2010-03-07 20:44
Ned, thanks again for another great OS X fix.  Ronald, please apply this to release26-maint for 2.6.5 rc 2.
msg100630 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2010-03-08 07:10
Committed in r78784 (trunk), r78785 (2.6) and r78786 (3.2)

(BTW. I applied the patch to the trunk then used svnmerge to merge the patch into the other branches)
History
Date User Action Args
2010-03-08 07:10:24ronaldoussorensetstatus: open -> closed

messages: + msg100630
stage: resolved
2010-03-07 20:44:58barrysetresolution: accepted
messages: + msg100606
2010-03-07 09:27:11ronaldoussorensetpriority: release blocker
nosy: barry, ronaldoussoren, ned.deily
messages: + msg100569
2010-03-05 10:39:37ned.deilysetfiles: + issue-sl-setup-py3k.txt
2010-03-05 10:39:14ned.deilysetfiles: + issue-sl-setup-trunk.txt
2010-03-05 10:38:57ned.deilycreate