Jeff Roberson
ff8fbcffcb
Solve a complex exit race introduced with thread_lock:
...
- Add a count of exiting threads, p_exitthreads, to struct proc.
- Increment p_exithreads when we set the deadthread in thread_exit().
- When we thread_stash() a deadthread use an atomic to drop the count.
- Spin until the p_exithreads count reaches 0 in thread_wait().
- Lock the last exiting thread momentarily to be certain that it has
exited cpu_throw().
- Restructure thread_wait(). It does not need a loop as there will only
ever be one thread.
Tested by: moose@opera.com
Reported by: kris, moose@opera.com
2007-06-12 07:24:46 +00:00
..
2007-02-23 12:19:07 +00:00
2006-03-16 08:51:59 +00:00
2007-05-14 22:40:04 +00:00
2007-06-10 00:28:41 +00:00
2006-11-03 18:57:49 +00:00
2007-06-09 21:48:44 +00:00
2007-06-01 14:33:11 +00:00
2007-06-09 19:41:14 +00:00
2007-06-04 23:50:56 +00:00
2007-05-31 11:51:53 +00:00
2007-03-05 13:10:58 +00:00
2007-06-05 00:00:57 +00:00
2007-05-31 11:51:53 +00:00
2007-03-05 13:10:58 +00:00
2007-05-28 17:15:05 +00:00
2007-06-12 00:12:01 +00:00
2007-06-09 21:48:44 +00:00
2007-06-12 00:12:01 +00:00
2007-06-05 00:00:57 +00:00
2007-06-05 00:00:57 +00:00
2007-04-13 23:54:22 +00:00
2007-06-04 23:54:27 +00:00
2007-06-05 00:00:57 +00:00
2006-09-09 16:09:01 +00:00
2007-06-12 00:12:01 +00:00
2007-05-31 11:51:53 +00:00
2007-05-18 15:04:59 +00:00
2007-06-05 00:00:57 +00:00
2007-05-31 22:52:15 +00:00
2007-06-04 18:25:08 +00:00
2007-05-31 22:52:15 +00:00
2007-03-04 22:36:48 +00:00
2007-05-27 20:50:23 +00:00
2007-06-09 18:09:37 +00:00
2007-03-05 13:10:58 +00:00
2007-06-05 00:00:57 +00:00
2007-06-12 00:12:01 +00:00
2007-06-09 21:48:44 +00:00
2007-06-12 00:12:01 +00:00
2007-06-12 00:12:01 +00:00
2007-06-04 23:51:44 +00:00
2007-06-05 00:00:57 +00:00
2007-06-11 23:27:03 +00:00
2007-06-05 00:00:57 +00:00
2007-06-04 23:50:30 +00:00
2007-05-31 09:14:48 +00:00
2007-06-04 23:50:56 +00:00
2006-08-01 16:32:20 +00:00
2007-06-12 00:12:01 +00:00
2007-06-04 18:25:08 +00:00
2007-06-07 19:45:19 +00:00
2007-06-12 07:24:46 +00:00
2007-06-09 21:48:44 +00:00
2007-05-11 20:52:47 +00:00
2007-06-06 07:35:08 +00:00
2007-04-23 12:53:00 +00:00
2007-03-05 13:10:58 +00:00
2007-06-05 00:00:57 +00:00
2007-05-31 11:51:53 +00:00
2007-05-31 11:51:53 +00:00
2007-05-13 18:21:54 +00:00
2006-08-05 19:25:14 +00:00
2006-11-11 16:26:58 +00:00
2006-03-30 18:45:50 +00:00
2007-03-05 13:10:58 +00:00
2006-11-12 03:34:03 +00:00
2007-06-06 03:40:47 +00:00
2007-06-06 03:40:47 +00:00
2006-04-23 22:12:39 +00:00
2007-06-12 00:12:01 +00:00
2006-07-19 18:53:56 +00:00
2007-05-23 17:28:21 +00:00
2006-10-02 18:23:37 +00:00
2006-10-31 21:11:21 +00:00
2006-10-24 10:27:23 +00:00
2007-02-15 17:21:31 +00:00
2006-07-09 21:42:58 +00:00
2006-06-18 12:27:59 +00:00
2007-06-03 18:24:31 +00:00
2007-05-27 17:38:36 +00:00
2007-03-08 06:44:34 +00:00
2007-06-05 00:00:57 +00:00
2007-04-28 07:37:49 +00:00
2006-10-02 18:23:37 +00:00
2007-06-04 23:50:56 +00:00
2007-06-05 00:00:57 +00:00
2006-05-28 22:15:28 +00:00
2007-06-05 00:00:57 +00:00
2007-06-05 00:00:57 +00:00
2007-06-04 23:51:44 +00:00
2007-06-11 03:36:55 +00:00
2007-06-05 00:00:57 +00:00
2007-05-27 17:33:10 +00:00
2007-06-05 00:00:57 +00:00
2007-03-04 17:50:46 +00:00
2006-11-03 18:57:49 +00:00
2006-11-03 15:23:16 +00:00
2006-11-03 15:23:16 +00:00
2007-06-12 00:12:01 +00:00
2007-06-12 00:12:01 +00:00
2007-03-26 17:41:14 +00:00
2007-03-05 13:10:58 +00:00
2007-05-31 11:51:53 +00:00
2007-01-08 17:49:59 +00:00
2006-11-06 13:42:10 +00:00
2006-09-27 16:41:15 +00:00
2007-06-11 21:05:41 +00:00
2007-05-03 14:42:42 +00:00
2007-05-16 20:41:08 +00:00
2006-10-22 11:52:19 +00:00
2007-05-16 20:41:08 +00:00
2007-06-12 00:12:01 +00:00
2007-03-05 13:10:58 +00:00
2007-05-31 11:51:22 +00:00
2007-06-04 18:25:08 +00:00
2007-05-19 20:50:59 +00:00
2007-05-29 12:36:00 +00:00
2007-03-05 13:26:07 +00:00
2007-06-10 01:50:05 +00:00
2007-06-09 23:41:14 +00:00
2007-05-25 22:23:38 +00:00
2007-06-01 01:12:45 +00:00
2007-05-18 13:02:13 +00:00
2007-02-15 22:08:35 +00:00
2006-12-23 00:30:03 +00:00
2007-03-13 01:50:27 +00:00
2007-02-16 17:32:41 +00:00
2007-05-27 20:50:23 +00:00
2007-06-12 00:12:01 +00:00
2007-06-12 00:12:01 +00:00
2007-06-12 00:12:01 +00:00
2007-05-31 11:51:53 +00:00
2007-05-31 11:51:53 +00:00