annotate Python/frozen.c @ 33940:dfd07b7be407 legacy-trunk

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.
author Tim Peters <tim.peters@gmail.com>
date Mon, 08 Nov 2004 04:30:21 +0000
parents cf5928fab108
children fd25030223b0 6482261b1092
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3621
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
1
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
2 /* Dummy frozen modules initializer */
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
3
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
4 #include "Python.h"
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
5
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 /* In order to test the support for frozen modules, by default we
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 define a single frozen module, __hello__. Loading it will print
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 some famous words... */
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
20526
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
10 /* To regenerate this data after the bytecode or marshal format has changed,
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
11 go to ../Tools/freeze/ and freeze the hello.py file; then copy and paste
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
12 the appropriate bytes from M___main__.c. */
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
13
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 static unsigned char M___hello__[] = {
23852
46275f9e7407 Fix SF bug # 561858 Assertion with very long lists
Neal Norwitz <nnorwitz@gmail.com>
parents: 20528
diff changeset
15 99,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
24844
cf5928fab108 This is my patch
Michael W. Hudson <mwh@python.net>
parents: 23852
diff changeset
16 0,115,9,0,0,0,100,0,0,71,72,100,1,0,83,40,
cf5928fab108 This is my patch
Michael W. Hudson <mwh@python.net>
parents: 23852
diff changeset
17 2,0,0,0,115,14,0,0,0,72,101,108,108,111,32,119,
cf5928fab108 This is my patch
Michael W. Hudson <mwh@python.net>
parents: 23852
diff changeset
18 111,114,108,100,46,46,46,78,40,0,0,0,0,40,0,0,
cf5928fab108 This is my patch
Michael W. Hudson <mwh@python.net>
parents: 23852
diff changeset
19 0,0,40,0,0,0,0,40,0,0,0,0,115,8,0,0,
cf5928fab108 This is my patch
Michael W. Hudson <mwh@python.net>
parents: 23852
diff changeset
20 0,104,101,108,108,111,46,112,121,115,1,0,0,0,63,1,
cf5928fab108 This is my patch
Michael W. Hudson <mwh@python.net>
parents: 23852
diff changeset
21 0,0,0,115,0,0,0,0,
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 };
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
20528
cb334a8c8dd2 Squash compiler wng about signed/unsigned mismatch.
Tim Peters <tim.peters@gmail.com>
parents: 20526
diff changeset
24 #define SIZE (int)sizeof(M___hello__)
20526
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
25
3684
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
26 static struct _frozen _PyImport_FrozenModules[] = {
7845
949b59820185 Add primitive test for frozen package.
Guido van Rossum <guido@python.org>
parents: 5885
diff changeset
27 /* Test module */
20526
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
28 {"__hello__", M___hello__, SIZE},
7845
949b59820185 Add primitive test for frozen package.
Guido van Rossum <guido@python.org>
parents: 5885
diff changeset
29 /* Test package (negative size indicates package-ness) */
20526
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
30 {"__phello__", M___hello__, -SIZE},
1f3c1e831f21 Fix the frozen bytecode for __hello__ (betcha didn't know that existed
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
31 {"__phello__.spam", M___hello__, SIZE},
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 {0, 0, 0} /* sentinel */
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 };
3684
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
34
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
35 /* Embedding apps may change this pointer to point to their favorite
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
36 collection of frozen modules: */
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
37
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
38 struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;