History log of /external/python/cpython2/Python/pystate.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
3232384e1e5656d7a9f8f9acc7fd64697cb2226b 17-Jun-2014 Benjamin Peterson <benjamin@python.org> revert tstate_delete_common, since it's pretty much wrong
/external/python/cpython2/Python/pystate.c
81669697aa85acb22c3e02c1c7d2788a30ecfee7 17-Jun-2014 Benjamin Peterson <benjamin@python.org> avoid a deadlock with the interpreter head lock and the GIL during finalization
/external/python/cpython2/Python/pystate.c
58098a77e62ec3ae40180eb36672d44a337121db 06-Sep-2012 Antoine Pitrou <solipsis@pitrou.net> Issue #13992: The trashcan mechanism is now thread-safe. This eliminates
sporadic crashes in multi-thread programs when several long deallocator
chains ran concurrently and involved subclasses of built-in container
types.

Because of this change, a couple extension modules compiled for 2.7.4
(those which use the trashcan mechanism, despite it being undocumented)
will not be loadable by 2.7.3 and earlier. However, extension modules
compiled for 2.7.3 and earlier will be loadable by 2.7.4.
/external/python/cpython2/Python/pystate.c
7c0b44ec1725eeacdcfd02376e5d5a39ccdc5c79 14-Apr-2012 Benjamin Peterson <benjamin@python.org> move outside WITH_THREAD conditional
/external/python/cpython2/Python/pystate.c
6688eb536ab7b88ade020b0e4e51e2ea74db82d1 13-Apr-2012 Benjamin Peterson <benjamin@python.org> take linkage def outside of WITH_THREAD conditional (closes #14569)
/external/python/cpython2/Python/pystate.c
1f3ff7bc3f7cfd4e823e49dc193ab7fecb767c43 12-Oct-2011 Charles-François Natali <neologix@free.fr> Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native
TLS implementations, and fails with the ad-hoc TLS implementation when a thread
doesn't have an auto thread state (e.g. a thread created outside of Python
calling into a subinterpreter).
/external/python/cpython2/Python/pystate.c
4394e0db24f38250d487adcbd8b85f314cb86829 27-Apr-2011 Antoine Pitrou <solipsis@pitrou.net> Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_*
APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch
by Charles-François Natali.
/external/python/cpython2/Python/pystate.c
c2077b0d9b5bf99768c6f396bf7ae6c41b682465 15-Mar-2011 Ezio Melotti <ezio.melotti@gmail.com> #11565: Fix several typos. Patch by Piotr Kasprzyk.
/external/python/cpython2/Python/pystate.c
0a7b65b7da3df16bc8c81b3654756d64eb28ff80 08-Sep-2010 Antoine Pitrou <solipsis@pitrou.net> Merged revisions 84623 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
r84623 | antoine.pitrou | 2010-09-08 14:37:10 +0200 (mer., 08 sept. 2010) | 4 lines

Issue #9797: pystate.c wrongly assumed that zero couldn't be a valid
thread-local storage key.
........
/external/python/cpython2/Python/pystate.c
c83ea137d7e717f764e2f31fc2544f522de7d857 09-May-2010 Antoine Pitrou <solipsis@pitrou.net> Untabify C files. Will watch buildbots.
/external/python/cpython2/Python/pystate.c
71fb87e64c51627564262fd64299f7ac79625404 04-Mar-2010 Victor Stinner <victor.stinner@haypocalc.com> Issue #7544: Preallocate thread memory before creating the thread to avoid a
fatal error in low memory condition.
/external/python/cpython2/Python/pystate.c
d868be8805b7f5c4f0356eb01f6d8feab43cc9b3 04-Aug-2008 Gregory P. Smith <greg@mad-scientist.com> Adds a sanity check to avoid a *very rare* infinite loop due to a corrupt tls
key list data structure in the thread startup path.

This change is a companion to r60148 which already successfully dealt with a
similar issue on thread shutdown.

In particular this loop has been observed happening from this call path:
#0 in find_key ()
#1 in PyThread_set_key_value ()
#2 in _PyGILState_NoteThreadState ()
#3 in PyThreadState_New ()
#4 in t_bootstrap ()
#5 in pthread_start_thread ()

I don't know how this happens but it does, *very* rarely. On more than
one hardware platform. I have not been able to reproduce it manually.
(A flaky mutex implementation on the system in question is one hypothesis).

As with r60148, the spinning we managed to observe in the wild was due to a
single list element pointing back upon itself.
/external/python/cpython2/Python/pystate.c
2778c999e39142b6e2f092028e0b05ef29bdb901 21-Jan-2008 Gregory P. Smith <greg@mad-scientist.com> Provide a sanity check during PyThreadState_DeleteCurrent() and
PyThreadState_Delete() to avoid an infinite loop when the tstate list
is messed up and has somehow becomes circular and does not contain the
current thread.

I don't know how this happens but it does, *very* rarely. On more than
one hardware platform. I have not been able to reproduce it manually.

Attaching to a process where its happening: it has always been in an
infinite loop over a single element tstate list that is not the tstate
we're looking to delete. It has been in t_bootstrap()'s call to
PyThreadState_DeleteCurrent() as a pthread is exiting.
/external/python/cpython2/Python/pystate.c
276887b16dc86e3423760c6ed9353591708fba17 12-Mar-2007 Collin Winter <collinw@gmail.com> Bug #742342: make Python stop segfaulting on infinitely-recursive reload()s. Fixed by patch #922167.
Will backport.
/external/python/cpython2/Python/pystate.c
d3f91908dd2c2ab79d16bfe235da34f2fc19c114 23-Sep-2006 Neal Norwitz <nnorwitz@gmail.com> Remove extra semi-colons reported by Johnny Lee on python-dev. Backport if anyone cares.
/external/python/cpython2/Python/pystate.c
ec6c2dfb63f76dca8b10f493c5b5d3c296900796 11-Sep-2006 Georg Brandl <georg@python.org> Forward-port of rev. 51857:

Building with HP's cc on HP-UX turned up a couple of problems.
_PyGILState_NoteThreadState was declared as static inconsistently.
Make it static as it's not necessary outside of this module.

Some tests failed because errno was reset to 0. (I think the tests
that failed were at least: test_fcntl and test_mailbox).
Ensure that errno doesn't change after a call to Py_END_ALLOW_THREADS.
This only affected debug builds.
/external/python/cpython2/Python/pystate.c
4643c2fda1546d6d5b0b33a93ee84218da7ad78b 11-Aug-2006 Tim Peters <tim.peters@gmail.com> Followup to bug #1069160.

PyThreadState_SetAsyncExc(): internal correctness changes wrt
refcount safety and deadlock avoidance. Also added a basic test
case (relying on ctypes) and repaired the docs.
/external/python/cpython2/Python/pystate.c
e1fdb32ff2bb1f4b46b56fc1de03f8016bc6c780 21-Jul-2006 Neal Norwitz <nnorwitz@gmail.com> Handle allocation failures gracefully. Found with failmalloc.
Many (all?) of these could be backported.
/external/python/cpython2/Python/pystate.c
112aad3630975da8a949291faaab5c578442e9d2 19-Jul-2006 Tim Peters <tim.peters@gmail.com> SF bug 1524317: configure --without-threads fails to build

Moved the code for _PyThread_CurrentFrames() up, so it's no longer
in a huge "#ifdef WITH_THREAD" block (I didn't realize it /was/ in
one).

Changed test_sys's test_current_frames() so it passes with or without
thread supported compiled in.

Note that test_sys fails when Python is compiled without threads,
but for an unrelated reason (the old test_exit() fails with an
indirect ImportError on the `thread` module). There are also
other unrelated compilation failures without threads, in extension
modules (like ctypes); at least the core compiles again.

Do we really support --without-threads? If so, there are several
problems remaining.
/external/python/cpython2/Python/pystate.c
32a8361f2da758c1de662b6d5a1b780466e18cf9 10-Jul-2006 Tim Peters <tim.peters@gmail.com> After approval from Anthony, merge the tim-current_frames
branch into the trunk. This adds a new sys._current_frames()
function, which returns a dict mapping thread id to topmost
thread stack frame.
/external/python/cpython2/Python/pystate.c
ab0e284a24a95462ae2c3ca01e991bdfe1dd6d2d 15-Apr-2006 Martin v. Löwis <martin@v.loewis.de> Zap ZAP.
/external/python/cpython2/Python/pystate.c
ac6bd46d5c30f4e643120aeef1ccd531801a2181 13-Apr-2006 Anthony Baxter <anthonybaxter@gmail.com> spread the extern "C" { } magic pixie dust around. Python itself builds now
using a C++ compiler. Still lots and lots of errors in the modules built by
setup.py, and a bunch of warnings from g++ in the core.
/external/python/cpython2/Python/pystate.c
7b782b61c597a989a21a22c15ee95decf997429f 11-Apr-2006 Anthony Baxter <anthonybaxter@gmail.com> more low-hanging fruit to make code compile under a C++ compiler. Not
entirely happy with the two new VISIT macros in compile.c, but I
couldn't see a better approach.
/external/python/cpython2/Python/pystate.c
f4e6928c4d259fbff9fa8e48496339009333f228 27-Feb-2006 Tim Peters <tim.peters@gmail.com> Patch 1413181, by Gabriel Becedillas.

PyThreadState_Delete(): if the auto-GIL-state machinery knows about
the thread state, forget it (since the thread state is being deleted,
continuing to remember it can't help, but can hurt if another thread
happens to get created with the same thread id).

I'll backport to 2.4 next.
/external/python/cpython2/Python/pystate.c
ce7da6c5e97c45256f6570858f5a73a138910892 30-Sep-2005 Michael W. Hudson <mwh@python.net> Forward port bugfix:

[ 1307978 ] Unsatisfied symbols: _PyGILState_NoteThreadState (code)

(note that this only happens in a threads-disabled build).
/external/python/cpython2/Python/pystate.c
188d4366bed88bbca777c05e7f1a5cb3878ff335 20-Jun-2005 Michael W. Hudson <mwh@python.net> Fix bug:

[ 1163563 ] Sub threads execute in restricted mode

basically by fixing bug 1010677 in a non-broken way.

Backport candidate.
/external/python/cpython2/Python/pystate.c
867f2d45cd9906a323c7eff7cf5d43c128038ad6 16-Jun-2005 Michael W. Hudson <mwh@python.net> You can have more than one thread state for a thread if they
correspond to different interpreters (I hope, please revert if this is
wrong :).
/external/python/cpython2/Python/pystate.c
774479c68bf6953e89996c24287199d3f3331ba3 18-Apr-2005 Michael W. Hudson <mwh@python.net> Fix:

[ 1176893 ] Readline segfault

by unsilly-ing PyGILState_Release().

Backport candidate.
/external/python/cpython2/Python/pystate.c
0f1f63cf07f654bfae6de0c99b2a885fc38a2174 08-Feb-2005 Guido van Rossum <guido@python.org> Close the discussion in SF bug 1069160.
/external/python/cpython2/Python/pystate.c
fb1ffb0ebb283c493b55dc2a1c8431e1da668d2e 08-Nov-2004 Tim Peters <tim.peters@gmail.com> SF bug 1061968: threads: segfault or Py_FatalError at exit

PyGILState_Ensure(): The fix in 2.4a3 for bug 1010677 reintroduced thread
shutdown race bug 225673. Repaired by (once again) ensuring the GIL is
held whenever deleting a thread state.

Alas, there's no useful test case for this shy bug. Four years ago, only
Guido could provoke it, on his box, and today only Armin can provoke it
on his box. I've never been able to provoke it (but not for lack of
trying!).

This is a critical fix for 2.3.5 too, since the fix for 1010677 got
backported there already and so also reintroduced 225673. I don't intend to
backport this fix. For whoever (if anyone) does, there are other thread
fixes in 2.4 that need backporting too, and I bet they need to happen first
for this patch to apply cleanly.
/external/python/cpython2/Python/pystate.c
89c0ec9beba4e6b086e74345bc1ef15041bd5e7d 10-Oct-2004 Tim Peters <tim.peters@gmail.com> Revert rev 2.35. It was based on erroneous reasoning -- the current
thread's id can't get duplicated, because (of course!) the current thread
is still running. The code should work either way, but reverting the
gratuitous change should make backporting easier, and gets the bad
reasoning out of 2.35's new comments.
/external/python/cpython2/Python/pystate.c
8470558a04d23ed01d1168c05781c016cb892b22 10-Oct-2004 Tim Peters <tim.peters@gmail.com> PyInterpreterState_New(), PyThreadState_New(): use malloc/free directly.

This appears to finish repairs for SF bug 1041645.

This is a critical bugfix.
/external/python/cpython2/Python/pystate.c
5c14e6498a9ca90f482d9d70c6df92d508aa8ff9 10-Oct-2004 Tim Peters <tim.peters@gmail.com> PyGILState_Release(): If we need to delete the TLS entry for this thread,
that must be done under protection of the GIL, for reasons explained in
new comments.
/external/python/cpython2/Python/pystate.c
f9becec8cd989743aeb22d02a0ededddeecc89a6 10-Oct-2004 Tim Peters <tim.peters@gmail.com> _PyGILState_Init(), PyGILState_Ensure(): Since PyThread_set_key_value()
can fail, check its return value, and die if it does fail.

_PyGILState_Init(): Assert that the thread doesn't already have an
association for autoTLSkey. If it does, PyThread_set_key_value() will
ignore the attempt to (re)set the association, which the code clearly
doesn't want.
/external/python/cpython2/Python/pystate.c
19717fa33a58be7da6663711de9496c99d629df9 09-Oct-2004 Tim Peters <tim.peters@gmail.com> Style guide & consistency changes. No semantic changes.
/external/python/cpython2/Python/pystate.c
4c1f5ecfe39d70bfdfb183436b00f601cfd54834 09-Oct-2004 Tim Peters <tim.peters@gmail.com> Trim trailing whitespace.
/external/python/cpython2/Python/pystate.c
f30d60edbc0d5047a2fdd01e25868e4b814107e2 08-Jun-2004 Martin v. Löwis <martin@v.loewis.de> Patch #510695: Add TSC profiling for the VM.
/external/python/cpython2/Python/pystate.c
e5662aedef12b8d49c5c6c52d0e3fb47e66dbe0a 24-Mar-2004 Nicholas Bastin <nick.bastin@gmail.com> Changed random calls to PyThreadState_Get() to use the macro
/external/python/cpython2/Python/pystate.c
f9ce67d65fc86e1efee60a960e15eea27c6ab108 13-Jul-2003 Martin v. Löwis <martin@v.loewis.de> Initialize thread_id to 0 in unthreaded build. Fixes #770247.
/external/python/cpython2/Python/pystate.c
b8b6d0c2c63bcd9252ce20ef990da093dda8b8ce 28-Jun-2003 Guido van Rossum <guido@python.org> Add PyThreadState_SetAsyncExc(long, PyObject *).

A new API (only accessible from C) to interrupt a thread by sending it
an exception. This is not always effective, but might help some people.
Requested by Just van Rossum and Alex Martelli. It is intentional
that you have to write your own C extension to call it from Python.

Docs will have to wait.
/external/python/cpython2/Python/pystate.c
9e29625a1b679dfcf2d5bf9957f4efb669602f74 01-May-2003 Martin v. Löwis <martin@v.loewis.de> Patch #729300: Disable error message if Python is not built for threads.
/external/python/cpython2/Python/pystate.c
8d98d2cb95ac37147a4de5a119869211e8351324 19-Apr-2003 Mark Hammond <mhammond@skippinet.com.au> New PyGILState_ API - implements pep 311, from patch 684256.
/external/python/cpython2/Python/pystate.c
0fc8f00252d305a3a45ee8cf924e0b5d6be4472b 15-Apr-2003 Guido van Rossum <guido@python.org> - pythunrun.c, Py_Finalize(): move the call to _Py_PrintReferences()
even farther down, to just before the call to
_PyObject_DebugMallocStats(). This required the following changes:

- pystate.c, PyThreadState_GetDict(): changed not to raise an
exception or issue a fatal error when no current thread state is
available, but simply return NULL without raising an exception
(ever).

- object.c, Py_ReprEnter(): when PyThreadState_GetDict() returns NULL,
don't raise an exception but return 0. This means that when
printing a container that's recursive, printing will go on and on
and on. But that shouldn't happen in the case we care about (see
first bullet).

- Updated Misc/NEWS and Doc/api/init.tex to reflect changes to
PyThreadState_GetDict() definition.
/external/python/cpython2/Python/pystate.c
5ddd4c3f77abe9282479d901696dfa73e6c3d573 19-Mar-2003 Gustavo Niemeyer <gustavo@niemeyer.net> Fixed SF bug #663074. The codec system was using global static
variables to store internal data. As a result, any atempts to use the
unicode system with multiple active interpreters, or successive
interpreter executions, would fail.

Now that information is stored into members of the PyInterpreterState
structure.
/external/python/cpython2/Python/pystate.c
6297a7a9fbf7675bf23a9b5aa822ed5aaec19647 19-Feb-2003 Guido van Rossum <guido@python.org> - PyEval_GetFrame() is now declared to return a PyFrameObject *
instead of a plain PyObject *. (SF patch #686601 by Ben Laurie.)
/external/python/cpython2/Python/pystate.c
019a78e76d3542d4d56a08015e6980f8c8aeaba1 08-Nov-2002 Michael W. Hudson <mwh@python.net> Assorted patches from Armin Rigo:

[ 617309 ] getframe hook (Psyco #1)
[ 617311 ] Tiny profiling info (Psyco #2)
[ 617312 ] debugger-controlled jumps (Psyco #3)

These are forward ports from 2.2.2.
/external/python/cpython2/Python/pystate.c
066a8df3a4cdd47ce4d8a48a1e35509924ea7984 03-Sep-2002 Skip Montanaro <skip@pobox.com> missed this one on the previous multi-file checkin - see

http://python.org/sf/602191
/external/python/cpython2/Python/pystate.c
f5df46d701d29baf738365da6fcf1b8a3ceabb71 19-Jul-2001 Guido van Rossum <guido@python.org> Add a low-level API to access interpreters, for David Beazley.
SF patch #436376.
/external/python/cpython2/Python/pystate.c
f0473d511b7f883bfff3048f55e3a6adc7a43cb9 18-Jul-2001 Martin v. Löwis <martin@v.loewis.de> Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Add dlopenflags to PyInterpreterState, and use it in dlopen calls.
/external/python/cpython2/Python/pystate.c
9e3ad7844425d96baf856d3da1975756504b2aa5 04-Jul-2001 Fred Drake <fdrake@acm.org> This change adjusts the profiling/tracing support so that the common
path (with no profile/trace function) through eval_code2() and
eval_frame() avoids several checks.

In the common cases of calls, returns, and exception propogation,
eval_code2() and eval_frame() used to test two values in the
thread-state: the profiling function and the tracing function. With
this change, a flag is set in the thread-state if either of these is
active, allowing a single check to suffice when both are NULL. This
also simplifies the code needed when either function is in use but is
already active (to avoid profiling/tracing the profiler/tracer); the
flag is set to 0 when the profile/trace code is entered, allowing the
same check to suffice for "already in the tracer" for call/return/
exception events.
/external/python/cpython2/Python/pystate.c
5755ce693dfc497389ab89e8ae0e62c3cc89d4ff 27-Jun-2001 Fred Drake <fdrake@acm.org> Revise the interface to the profiling and tracing support for the
Python interpreter.

This change adds two new C-level APIs: PyEval_SetProfile() and
PyEval_SetTrace(). These can be used to install profile and trace
functions implemented in C, which can operate at much higher speeds
than Python-based functions. The overhead for calling a C-based
profile function is a very small fraction of a percent of the overhead
involved in calling a Python-based function.

The machinery required to call a Python-based profile or trace
function been moved to sysmodule.c, where sys.setprofile() and
sys.setprofile() simply become users of the new interface.

As a side effect, SF bug #436058 is fixed; there is no longer a
_PyTrace_Init() function to declare.
/external/python/cpython2/Python/pystate.c
2975786decbe2358b088a6200914d7c0a2818e72 23-Jan-2001 Guido van Rossum <guido@python.org> Add a new API, PyThreadState_DeleteCurrent() that combines
PyThreadState_Delete() and PyEval_ReleaseLock(). It is only defined
if WITH_THREAD is defined.
/external/python/cpython2/Python/pystate.c
412f2460248b21e8d09a57afe98cdb33c16025bc 02-Sep-2000 Tim Peters <tim.peters@gmail.com> PyInterpreterState_New is not thread-safe, and the recent fix to _PyPclose
can cause it to get called by multiple threads simultaneously.

Ditto for PyInterpreterState_Delete.

Of the former, the docs say "The interpreter lock need not be held, but may
be held if it is necessary to serialize calls to this function". This
kinda implies it both is and isn't thread-safe.

Of the latter, the docs merely say "The interpreter lock need not be
held.", and the clause about serializing is absent.

I expect it was *believed* these are both thread-safe, and the bit about
serializing via the global lock was meant as a permission rather than a
caution.

I also expect we've never seen a problem here because the Python core
(prior to the _PyPclose fix) only calls these functions once per run.
The Py_NewInterpreter subsystem exposed by the C API (but not used by
Python itself) also calls them, but that subsystem appears to be very
rarely used.

Whatever, they're both thread-safe now.
/external/python/cpython2/Python/pystate.c
8586991099e4ace18ee94163a96b8ea1bed77ebe 02-Sep-2000 Guido van Rossum <guido@python.org> REMOVED all CWI, CNRI and BeOpen copyright markings.
This should match the situation in the 1.6b1 tree.
/external/python/cpython2/Python/pystate.c
9fb6af9640994b6216897d3a6ce89362aea22f6a 04-Aug-2000 Moshe Zadka <moshez@math.huji.ac.il> Removing warnings by gcc -Wall -- cast ugly || to void.
/external/python/cpython2/Python/pystate.c
f70ef4f8606f99744252a804229d53a4d97601c1 22-Jul-2000 Thomas Wouters <thomas@python.org> Mass ANSIfication of function definitions. Doesn't cover all 'extern'
declarations yet, those come later.
/external/python/cpython2/Python/pystate.c
ffcc3813d82e6b96db79f518f4e67b940a13ce64 01-Jul-2000 Guido van Rossum <guido@python.org> Change copyright notice - 2nd try.
/external/python/cpython2/Python/pystate.c
fd71b9e9d496caa510dec56a9b69966558d6ba5d 01-Jul-2000 Guido van Rossum <guido@python.org> Change copyright notice.
/external/python/cpython2/Python/pystate.c
1d5ad90c1c13c8310c159b788f9c2227b635aabc 18-Jun-1999 Guido van Rossum <guido@python.org> CRITICAL PATCH!

We occasionally received reports from people getting "invalid tstate"
crashes (this is a fatal error in PyThreadState_Delete()). Finally
several people were able to reproduce it reliably and Tim Peters
discovered that there is a race condition when multiple threads are
calling this function without holding the global interpreter lock (the
function may be called without holding that).

Solved the race condition by adding a lock around the mutating uses of
interp->tstate_head. Tim and Jonathan Giddy have run tests that make
it likely that this fixes the crashes -- although Tim hasn't heard
from the person who reported the original problem.
/external/python/cpython2/Python/pystate.c
18bc7c227676c91a6cfe97cd571bd0a5a187e373 21-Dec-1998 Guido van Rossum <guido@python.org> Make current_tstate a global, _PyThreadState_Current. This is to
support a macro in pystate.h.
/external/python/cpython2/Python/pystate.c
ede0439cd8e53c50df8be78bef564fd585dc171d 10-Apr-1998 Guido van Rossum <guido@python.org> /* An extension mechanism to store arbitrary additional per-thread state.
PyThreadState_GetDict() returns a dictionary that can be used to hold such
state; the caller should pick a unique key and store its state there. If
PyThreadState_GetDict() returns NULL, an exception has been raised (most
likely MemoryError) and the caller should pass on the exception. */

PyObject *
PyThreadState_GetDict()
/external/python/cpython2/Python/pystate.c
22348dc0e18d9c60ac340c449f801b5ce29cbba9 03-Nov-1997 Guido van Rossum <guido@python.org> The warning about thread still having a frame now only happens in
verbose mode.
/external/python/cpython2/Python/pystate.c
5f896a4de06b730df4cd19f48d109fff923bf619 21-Aug-1997 Guido van Rossum <guido@python.org> Added missing newline to warning msg
/external/python/cpython2/Python/pystate.c
25ce566661c1b7446b3ddb4076513a62f93ce08d 02-Aug-1997 Guido van Rossum <guido@python.org> The last of the mass checkins for separate (sub)interpreters.
Everything should now work again.

See the comments for the .h files mass checkin (e.g. pystate.h) for
more detail.
/external/python/cpython2/Python/pystate.c
0c88e1fd9671f9707a011676a9b075ef90df7059 19-Jul-1997 Guido van Rossum <guido@python.org> Remove confusing usage comments at end.
/external/python/cpython2/Python/pystate.c
f9cba090f92e2fcd25e52c0ddffa030b83ca9bbf 21-May-1997 Guido van Rossum <guido@python.org> Don't use function prototypes in function definition headers.
/external/python/cpython2/Python/pystate.c
a027efa5bfa7911b5c4b522b6a0698749a6f2e4a 05-May-1997 Guido van Rossum <guido@python.org> Massive changes for separate thread state management.
All per-thread globals are moved into a struct which is manipulated
separately.
/external/python/cpython2/Python/pystate.c