Mercurial > cpython-lru_cache-weakref
annotate Python/pyfpe.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 | 2dea40e40d9d |
| children |
| rev | line source |
|---|---|
|
18835
2dea40e40d9d
Patch #411138: Rename config.h to pyconfig.h. Closes bug #231774.
Martin v. Löwis <martin@v.loewis.de>
parents:
13658
diff
changeset
|
1 #include "pyconfig.h" |
|
5119
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 #include "pyfpe.h" |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 /* |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 * The signal handler for SIGFPE is actually declared in an external |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 * module fpectl, or as preferred by the user. These variable |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 * definitions are required in order to compile Python without |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 * getting missing externals, but to actually handle SIGFPE requires |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 * defining a handler and enabling generation of SIGFPE. |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 */ |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 #ifdef WANT_SIGFPE_HANDLER |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 jmp_buf PyFPE_jbuf; |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 int PyFPE_counter = 0; |
|
bda01a374762
Changes for Lee Busby's SIGFPE patch set.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 #endif |
|
9045
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
15 |
|
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
16 /* Have this outside the above #ifdef, since some picky ANSI compilers issue a |
|
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
17 warning when compiling an empty file. */ |
|
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
18 |
|
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
19 double |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
9045
diff
changeset
|
20 PyFPE_dummy(void *dummy) |
|
9045
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
21 { |
|
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
22 return 1.0; |
|
ad6bc2c5d353
Restructure the file so that it is never empty. No longer needs
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
23 } |
