Luan Taraschi
8de2cbe732
Fix object.__getstate__ deadlock and panic on __slotnames__ ( #8981 )
...
object_getstate_default kept the __slotnames__ list read-locked while it
looked up each slot attribute. A getter or __getattr__ that changed the
list (as in test_descr.test_issue24097) then waited forever for the write
lock. A non-str entry in a cached __slotnames__ hit an unwrap and
panicked.
Take a reference to each name and drop the lock before the lookup, raise
TypeError for a non-str name, let errors other than AttributeError
propagate, and check the list size after each item, as CPython does.
Assisted-by: Claude Code:claude-opus-5-5
2026-10-15 20:45:42 +09:00
..
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-10-11 12:57:49 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2026-03-19 09:48:42 +09:00
2025-05-12 14:20:01 +09:00
2026-01-17 19:21:10 +09:00
2026-10-15 01:32:08 +09:00
2026-09-28 22:12:37 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-10-10 00:50:55 +09:00
2026-09-14 13:34:50 +09:00
2026-07-09 21:42:08 +09:00
2025-05-12 14:20:01 +09:00
2026-10-14 16:42:56 +09:00
2025-05-12 14:20:01 +09:00
2026-05-01 19:45:28 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-08-14 00:57:10 +09:00
2026-08-14 00:57:10 +09:00
2026-08-14 00:57:10 +09:00
2025-05-12 14:20:01 +09:00
2020-09-13 06:58:57 +09:00
2026-02-28 10:34:38 +09:00
2026-08-13 23:32:19 +09:00
2026-09-08 17:52:57 +09:00
2026-10-08 00:58:39 +09:00
2025-05-12 14:20:01 +09:00
2026-09-27 13:39:29 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-08-20 07:08:03 +09:00
2025-05-12 14:20:01 +09:00
2026-10-05 18:52:52 +09:00
2025-05-12 14:20:01 +09:00
2026-08-20 07:08:03 +09:00
2026-10-11 12:57:49 +09:00
2025-05-12 14:20:01 +09:00
2026-10-11 12:57:49 +09:00
2025-05-12 14:20:01 +09:00
2026-03-16 11:58:40 +09:00
2026-10-15 20:45:42 +09:00
2025-05-12 14:20:01 +09:00
2026-08-22 20:55:24 +09:00
2025-05-12 14:20:01 +09:00
2025-12-25 14:54:44 +09:00
2026-05-01 19:44:42 +09:00
2025-12-12 22:46:39 +09:00
2026-08-13 21:51:56 +09:00
2026-08-21 17:16:40 +09:00
2025-05-12 14:20:01 +09:00
2026-10-07 23:18:55 +09:00
2026-09-28 22:13:26 +09:00
2026-10-11 12:57:49 +09:00
2025-05-12 14:20:01 +09:00
2026-10-10 11:49:08 +00:00
2026-09-27 16:53:42 +00:00
2025-05-12 14:20:01 +09:00
2026-08-14 23:32:36 +09:00
2026-06-14 17:47:42 +09:00
2026-10-15 10:28:12 +09:00
2022-05-08 04:19:38 +09:00
2026-10-10 17:55:52 +00:00
2026-08-14 00:57:10 +09:00
2026-07-08 15:21:41 +09:00
2025-05-12 14:20:01 +09:00
2026-10-10 19:34:12 +09:00
2025-05-12 14:20:01 +09:00
2026-10-10 19:36:57 +09:00
2026-09-10 22:38:19 +09:00
2026-01-17 19:21:11 +09:00
2025-05-12 14:20:01 +09:00
2026-01-17 19:21:11 +09:00
2026-08-14 00:57:10 +09:00
2025-05-12 14:20:01 +09:00
2026-10-05 20:48:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2022-07-15 15:46:41 +09:00
2026-10-11 12:57:49 +09:00
2025-05-12 14:20:01 +09:00
2026-08-15 18:23:05 +09:00
2025-05-12 14:20:01 +09:00
2022-05-04 02:54:59 +09:00
2025-05-12 14:20:01 +09:00
2026-09-26 10:41:42 +09:00
2025-05-12 14:20:01 +09:00
2026-10-07 23:32:59 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2026-06-11 13:38:07 +09:00
2026-10-08 00:58:39 +09:00
2026-02-08 13:58:30 +00:00
2022-10-17 13:45:15 +09:00
2025-05-12 14:20:01 +09:00
2026-10-12 01:08:16 +09:00
2026-10-10 09:24:37 +09:00
2026-10-11 12:57:49 +09:00
2026-10-15 10:02:39 +00:00
2026-08-17 00:33:27 +09:00
2025-12-12 22:46:39 +09:00
2026-08-22 12:41:53 +09:00
2026-10-15 00:53:59 +09:00
2026-09-28 22:07:28 +09:00
2026-10-10 19:32:22 +09:00
2026-10-09 18:27:43 +09:00
2026-10-11 12:57:49 +09:00
2026-07-08 12:42:10 +09:00
2026-08-14 00:57:10 +09:00
2026-09-20 06:43:30 +09:00
2026-10-05 15:23:22 +09:00
2026-10-15 00:57:58 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2026-10-10 21:17:08 +00:00
2026-10-02 01:42:09 +09:00
2026-10-12 16:15:01 +09:00
2026-10-12 02:06:41 +09:00
2026-10-11 12:57:49 +09:00
2026-08-17 00:33:27 +09:00
2026-08-17 00:33:27 +09:00
2026-08-18 12:38:16 +09:00
2026-10-11 21:36:02 +09:00
2026-10-09 23:58:08 +09:00
2026-10-09 20:55:36 +09:00
2026-10-10 19:26:08 +00:00
2025-05-12 14:20:01 +09:00
2026-08-14 00:57:10 +09:00
2026-08-17 00:33:27 +09:00
2026-10-15 10:02:44 +09:00
2026-10-11 12:57:49 +09:00
2026-09-20 06:43:30 +09:00
2026-09-20 10:34:09 +09:00
2026-09-20 06:43:30 +09:00
2026-10-10 19:34:41 +09:00
2026-10-15 10:24:04 +09:00
2026-10-12 14:49:33 +09:00
2026-08-14 00:57:10 +09:00
2026-10-11 23:48:08 +09:00
2026-07-16 17:39:48 +09:00
2025-05-12 14:20:01 +09:00
2026-08-21 17:13:29 +09:00
2026-10-09 23:25:59 +09:00
2026-10-12 22:28:05 +09:00
2026-09-20 10:34:09 +09:00
2026-10-14 23:56:06 +09:00
2026-10-15 09:56:14 +09:00
2026-05-22 20:04:15 +09:00
2026-09-06 07:54:59 +09:00
2025-12-12 22:46:39 +09:00
2026-09-26 22:57:24 +09:00
2026-10-11 12:57:49 +09:00
2026-10-05 09:43:04 +09:00
2025-12-12 22:46:39 +09:00
2026-09-26 21:40:17 +09:00
2026-10-14 22:38:42 +09:00
2026-10-14 22:38:42 +09:00
2021-11-02 18:28:02 -04:00
2026-09-20 18:38:28 +09:00
2026-08-14 16:05:30 +09:00
2026-10-09 08:04:25 +09:00
2026-07-08 15:21:41 +09:00
2026-07-08 15:21:41 +09:00
2026-07-08 15:21:41 +09:00
2026-08-14 16:05:30 +09:00
2026-08-14 00:57:10 +09:00
2026-08-14 16:05:30 +09:00
2026-08-14 00:57:10 +09:00
2026-07-08 15:21:41 +09:00
2026-05-25 13:55:32 +09:00
2026-10-15 00:57:58 +09:00
2026-08-14 00:57:10 +09:00
2026-10-12 16:15:01 +09:00
2026-10-14 16:14:46 +00:00
2026-09-09 11:47:16 +09:00
2026-05-22 20:04:15 +09:00
2026-09-25 09:45:19 +09:00
2026-10-13 10:47:23 +09:00
2026-04-13 23:58:58 +09:00
2026-10-12 16:13:03 +09:00
2026-10-15 10:27:39 +09:00
2026-09-30 22:15:40 +09:00
2026-10-01 11:32:32 +09:00
2026-10-09 23:29:16 +09:00
2026-08-08 22:32:13 +09:00
2026-10-12 13:38:23 +09:00
2026-01-17 19:21:11 +09:00
2024-05-27 16:54:56 +09:00
2023-10-22 19:19:05 -07:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-07-26 13:49:19 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-03-22 17:23:03 +09:00
2022-06-19 22:34:34 +08:00
2022-05-04 02:54:59 +09:00
2026-09-30 22:13:15 +09:00
2023-05-19 14:05:36 -04:00
2025-02-13 14:11:01 +09:00
2022-05-04 02:54:59 +09:00
2026-01-18 01:02:40 +09:00
2025-08-20 14:08:53 +09:00
2026-04-30 02:09:16 +00:00
2026-10-10 12:33:20 +00:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2023-02-13 21:28:19 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-10-07 12:54:27 +09:00
2022-05-04 02:54:59 +09:00
2025-08-26 21:48:46 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-02-22 19:54:27 +09:00
2026-02-18 00:45:17 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-08-23 14:32:56 +09:00
2026-09-28 21:53:58 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2025-05-12 14:20:01 +09:00
2026-09-01 22:16:12 +09:00
2026-08-30 17:20:33 +09:00
2026-10-04 22:47:45 +09:00
2020-09-13 06:58:57 +09:00