From 5511442f78af13fb3ca5723341f13d831e411291 Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Thu, 19 Nov 2009 16:37:33 +0000 Subject: [PATCH] Merged revisions 76403 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r76403 | ronald.oussoren | 2009-11-19 17:25:21 +0100 (Thu, 19 Nov 2009) | 14 lines Fix for issue #7085 On MacOSX 10.6 the CoreFoundation framework must be initialized on the main thread, the constructor function in that framework will cause an SIGABRT when it is called on any other thread. Because a number of extension link (indirectly) to CoreFoundation and the Python core itself didn't the interpreter crashed when importing some extensions, such as _locale, on a secondary thread. This fix ensures that Python is linked to CoreFoundation on OSX, which results in the CoreFoundation constructor being called when Python is loaded. This does not require code changes. ........ --- Misc/NEWS | 3 +++ configure | 39 +++++++++++++++++++++++---------------- configure.in | 7 +++++++ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 4e7d9e3bf12..8c09401f1f2 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.6.5 Core and Builtins ----------------- +- Issue #7085: Fix crash when importing some extensions in a thread + on MacOSX 10.6. + - Issue #7070: Fix round bug for large odd integer arguments. - Issue #7078: Set struct.__doc__ from _struct.__doc__. diff --git a/configure b/configure index 07b7cbddb17..563b69049f6 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 75132 . +# From configure.in Revision: 75747 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -3855,7 +3855,7 @@ else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi -rm -f conftest* +rm -f -r conftest* @@ -5394,7 +5394,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_header_stdc=no fi -rm -f conftest* +rm -f -r conftest* fi @@ -5415,7 +5415,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_header_stdc=no fi -rm -f conftest* +rm -f -r conftest* fi @@ -6513,7 +6513,7 @@ _ACEOF fi -rm -f conftest* +rm -f -r conftest* { echo "$as_me:$LINENO: result: $was_it_defined" >&5 echo "${ECHO_T}$was_it_defined" >&6; } @@ -7043,7 +7043,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_type_uid_t=no fi -rm -f conftest* +rm -f -r conftest* fi { echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 @@ -14163,7 +14163,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else unistd_defines_pthreads=no fi -rm -f conftest* +rm -f -r conftest* { echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5 echo "${ECHO_T}$unistd_defines_pthreads" >&6; } @@ -15777,7 +15777,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then ipv6type=$i fi -rm -f conftest* +rm -f -r conftest* ;; kame) @@ -15800,7 +15800,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ipv6libdir=/usr/local/v6/lib ipv6trylibc=yes fi -rm -f conftest* +rm -f -r conftest* ;; linux-glibc) @@ -15821,7 +15821,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ipv6type=$i; ipv6trylibc=yes fi -rm -f conftest* +rm -f -r conftest* ;; linux-inet6) @@ -15859,7 +15859,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ipv6lib=inet6; ipv6libdir=/usr/local/v6/lib fi -rm -f conftest* +rm -f -r conftest* ;; v6d) @@ -15882,7 +15882,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ipv6libdir=/usr/local/v6/lib; BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS" fi -rm -f conftest* +rm -f -r conftest* ;; zeta) @@ -15904,7 +15904,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ipv6lib=inet6; ipv6libdir=/usr/local/v6/lib fi -rm -f conftest* +rm -f -r conftest* ;; esac @@ -23497,7 +23497,7 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -rm -f conftest* +rm -f -r conftest* cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -23516,7 +23516,7 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -rm -f conftest* +rm -f -r conftest* fi @@ -23786,7 +23786,7 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -rm -f conftest* +rm -f -r conftest* fi @@ -24938,6 +24938,13 @@ do THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" done +if test $ac_sys_system = Darwin +then + LIBS="$LIBS -framework CoreFoundation" +fi + + + SRCDIRS="Parser Grammar Objects Python Modules Mac" { echo "$as_me:$LINENO: checking for build directories" >&5 diff --git a/configure.in b/configure.in index fa43374c43e..42af0f810e9 100644 --- a/configure.in +++ b/configure.in @@ -3841,6 +3841,13 @@ do THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" done +if test $ac_sys_system = Darwin +then + LIBS="$LIBS -framework CoreFoundation" +fi + + + AC_SUBST(SRCDIRS) SRCDIRS="Parser Grammar Objects Python Modules Mac" AC_MSG_CHECKING(for build directories)