Python 2.3.5 has that patch applied.

-matthew

Andi Vajda [EMAIL PROTECTED] said:

> 
> On Fri, 3 Mar 2006, Bill Janssen wrote:
> 
> >>There was a threading issue in Python 2.3 that would cause deadlocks. It 
> >>got
> >>fixed sometime after 2.3.4 and is fixed in 2.4. I don't know if it is 
> >>fixed in
> >>2.3.5, it could be. If you're not using threads, you should be fine.
> >
> >Unfortunately, I am using threads.  This is a big deal for Mac users,
> >as I doubt we'll be free of 2.3.5 till the end of 2007, realistically.
> >
> >Here's a list of the 4 threading issues fixed in 2.3.5.  Was it one of
> >these?
> 
> I don't know if it was one of these but the patch below seemed to have 
> fixed it. What do the Python 2.3.5 sources say ?
> 
> --- threadmodule.c.orig       2004-08-17 12:39:30.664412784 +0100
> +++ threadmodule.c    2004-08-17 12:40:16.105504688 +0100
> @@ -425,11 +425,10 @@
>  t_bootstrap(void *boot_raw)
>  {
>       struct bootstate *boot = (struct bootstate *) boot_raw;
> -     PyThreadState *tstate;
> +     PyGILState_STATE gstate;
>       PyObject *res;
> 
> -     tstate = PyThreadState_New(boot->interp);
> -     PyEval_AcquireThread(tstate);
> +     gstate = PyGILState_Ensure();
>       res = PyEval_CallObjectWithKeywords(
>               boot->func, boot->args, boot->keyw);
>       if (res == NULL) {
> @@ -454,8 +453,7 @@
>       Py_DECREF(boot->args);
>       Py_XDECREF(boot->keyw);
>       PyMem_DEL(boot_raw);
> -     PyThreadState_Clear(tstate);
> -     PyThreadState_DeleteCurrent();
> +     PyGILState_Release(gstate);
>       PyThread_exit_thread();
>  }
> 
> Andi..
> 
> >
> >Bill
> >-------------------
> >
> >Bug #1055820: Cyclic garbage collection was not protecting against that
> >calling a live weakref to a piece of cyclic trash could resurrect an
> >insane mutation of the trash if any Python code ran during gc (via
> >running a dead object's __del__ method, running another callback on a
> >weakref to a dead object, or via any Python code run in any other
> >thread that managed to obtain the GIL while a __del__ or callback was
> >running in the thread doing gc). The most likely symptom was
> >"impossible" AttributeEror exceptions, appearing seemingly at random,
> >on weakly referenced objects. The cure was to clear all weakrefs to
> >unreachable objects before allowing any callbacks to run.
> >
> >Bug #875692: Improve signal handling, especially when using threads,
> >by forcing an early re-execution of PyEval_EvalFrame() "periodic" code
> >when things_to_do is not cleared by Py_MakePendingCalls().
> >
> >Bug #993394: A KeyError was being raised by Thread.__delete() for
> >dummy_threading when called by atexit if an instance of Thread was
> >created in an interpreter running in -O. The exception was of no
> >importance and thus is now thrown away if raised.
> >
> >Bug #754449: threading.Thread will no longer mask exceptions raised
> >during interpreter shutdown with another exception caused by
> >attempting to output the initial exception. This fix also includes a
> >backport of rev. 1.41 from HEAD.
> >
> >
> _______________________________________________
> pylucene-dev mailing list
> [email protected]
> http://lists.osafoundation.org/mailman/listinfo/pylucene-dev
> 
_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev

Reply via email to