Mike Kolupaev
74b01ac2ea
Fix use-after-free and double-deleting files in BackgroundCallPurge() ( #6193 )
...
Summary:
The bad code was:
```
mutex.Lock(); // `mutex` protects `container`
for (auto& x : container) {
mutex.Unlock();
// do stuff to x
mutex.Lock();
}
```
It's incorrect because both `x` and the iterator may become invalid if another thread modifies the container while this thread is not holding the mutex.
Broken by https://github.com/facebook/rocksdb/pull/5796 - it replaced a `while (!container.empty())` loop with a `for (auto x : container)`.
(RocksDB code does a lot of such unlocking+re-locking of mutexes, and this type of bugs comes up a lot :/ )
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6193
Test Plan: Ran some logdevice integration tests that were crashing without this fix.
Differential Revision: D19116874
Pulled By: al13n321
fbshipit-source-id: 9672bc4227c1b68f46f7436db2b96811adb8c703
2020-01-02 12:21:53 -08:00
..
2019-11-27 09:50:44 -08:00
2020-01-02 12:21:53 -08:00
2020-01-02 12:20:29 -08:00
2019-09-13 13:50:43 -07:00
2019-10-17 19:36:54 -07:00
2019-10-14 15:21:01 -07:00
2019-05-31 17:23:59 -07:00
2019-11-05 11:39:36 -08:00
2019-09-18 20:26:04 -07:00
2019-12-16 23:00:35 -08:00
2020-01-02 12:20:29 -08:00
2020-01-02 12:20:29 -08:00
2019-11-01 11:46:19 -07:00
2019-08-06 14:26:44 -07:00
2019-09-11 18:09:00 -07:00
2019-05-30 17:44:09 -07:00
2019-08-16 16:42:56 -07:00
2019-10-21 11:38:30 -07:00
2019-10-21 16:53:06 -07:00
2019-11-19 10:13:24 -08:00
2019-11-19 15:02:41 -08:00
2019-09-16 15:26:21 -07:00
2019-11-26 18:24:10 -08:00
2019-09-09 11:24:11 -07:00
2019-11-27 09:50:44 -08:00
2018-11-12 16:42:16 -08:00
2019-09-05 17:21:42 -07:00
2019-09-20 12:04:26 -07:00
2019-11-08 13:47:29 -08:00
2019-09-20 12:04:26 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2018-10-29 14:36:31 -07:00
2019-05-30 17:44:09 -07:00
2019-05-30 17:44:09 -07:00
2019-11-19 11:39:02 -08:00
2019-09-19 12:34:17 -07:00
2019-10-03 20:53:29 -07:00
2019-02-14 14:41:36 -08:00
2019-09-09 11:24:11 -07:00
2019-08-06 14:26:44 -07:00
2019-08-06 14:26:44 -07:00
2019-11-26 10:00:32 -08:00
2019-09-16 16:17:09 -07:00
2019-12-17 17:09:46 -08:00
2019-07-06 21:07:32 -07:00
2019-03-01 10:42:09 -08:00
2019-09-09 11:24:11 -07:00
2018-07-17 14:43:18 -07:00
2020-01-02 12:20:29 -08:00
2019-12-16 23:00:35 -08:00
2019-11-26 18:24:10 -08:00
2019-11-27 09:50:44 -08:00
2019-11-26 10:00:32 -08:00
2019-09-04 12:10:17 -07:00
2019-05-30 17:44:09 -07:00
2019-05-31 17:23:59 -07:00
2019-09-20 12:04:26 -07:00
2019-09-11 18:09:00 -07:00
2019-09-18 16:58:21 -07:00
2019-05-30 11:25:51 -07:00
2019-05-31 15:24:43 -07:00
2018-10-04 20:46:50 -07:00
2019-10-14 15:21:01 -07:00
2019-10-14 15:21:01 -07:00
2019-05-31 11:57:01 -07:00
2019-09-13 14:49:47 -07:00
2019-11-27 09:50:44 -08:00
2019-09-13 14:49:47 -07:00
2019-11-15 14:00:37 -08:00
2019-05-31 17:23:59 -07:00
2019-05-30 17:44:09 -07:00
2017-07-15 16:11:23 -07:00
2019-05-30 17:44:09 -07:00
2019-05-31 17:23:59 -07:00
2019-10-16 10:40:23 -07:00
2019-11-27 09:50:44 -08:00
2019-10-16 10:40:23 -07:00
2019-08-23 13:55:34 -07:00
2019-08-23 13:55:34 -07:00
2019-06-06 13:56:07 -07:00
2020-01-02 12:20:29 -08:00
2019-05-30 17:44:09 -07:00
2019-11-27 09:50:44 -08:00
2019-09-20 12:04:26 -07:00
2019-09-20 12:04:26 -07:00
2019-09-20 12:04:26 -07:00
2019-09-06 17:31:10 -07:00
2019-01-15 21:34:38 -08:00
2019-10-24 14:44:15 -07:00
2018-08-24 18:13:20 -07:00
2019-09-16 10:33:51 -07:00
2019-09-16 10:33:51 -07:00
2019-09-16 10:33:51 -07:00
2019-09-16 10:33:51 -07:00
2019-09-11 18:09:00 -07:00
2018-05-03 15:43:09 -07:00
2018-05-03 15:43:09 -07:00
2019-07-25 15:27:39 -07:00
2019-07-02 12:07:01 -07:00
2017-07-15 16:11:23 -07:00
2019-05-30 17:44:09 -07:00
2019-10-16 10:40:23 -07:00
2019-12-17 17:09:46 -08:00
2019-12-17 07:52:22 -08:00
2019-10-24 17:16:46 -07:00
2019-12-17 07:52:22 -08:00
2019-04-11 14:28:26 -07:00
2019-05-30 17:44:09 -07:00
2019-06-04 10:24:14 -07:00
2018-12-17 17:33:46 -08:00
2017-07-15 16:11:23 -07:00
2019-05-31 15:24:43 -07:00
2019-09-18 11:52:17 -07:00
2019-05-31 11:57:01 -07:00
2019-05-30 17:44:09 -07:00
2017-07-15 16:11:23 -07:00
2019-10-21 16:53:06 -07:00
2019-06-10 11:53:31 -07:00
2019-05-31 11:57:01 -07:00
2019-05-30 17:44:09 -07:00
2019-05-30 11:25:51 -07:00
2019-05-31 11:57:01 -07:00
2019-05-31 11:57:01 -07:00
2019-05-30 11:25:51 -07:00
2019-09-20 12:04:26 -07:00
2019-09-05 17:30:29 -07:00
2019-07-23 08:08:19 -07:00
2019-05-31 11:57:01 -07:00
2019-11-27 09:50:44 -08:00
2019-01-16 09:55:32 -08:00
2017-07-15 16:11:23 -07:00
2019-05-03 17:30:22 -07:00
2019-09-20 12:04:26 -07:00
2019-09-20 12:04:26 -07:00
2019-09-16 10:33:51 -07:00
2019-03-18 12:15:34 -07:00
2019-03-18 12:15:34 -07:00
2019-09-16 10:33:51 -07:00
2019-08-26 11:26:29 -07:00
2019-08-23 13:55:34 -07:00
2019-08-23 13:55:34 -07:00
2019-11-27 09:50:44 -08:00
2019-10-07 12:28:09 -07:00
2019-08-29 14:07:37 -07:00
2019-11-27 09:50:44 -08:00
2019-11-27 09:50:44 -08:00
2019-11-27 09:50:44 -08:00
2019-11-27 09:50:44 -08:00
2019-11-27 09:50:44 -08:00
2019-10-31 11:31:37 -07:00
2019-09-20 12:04:26 -07:00
2019-09-20 12:04:26 -07:00
2019-09-04 12:10:17 -07:00
2017-07-15 16:11:23 -07:00
2019-09-12 17:15:18 -07:00
2019-09-09 11:24:11 -07:00
2019-12-17 07:52:22 -08:00
2019-06-10 11:53:31 -07:00
2017-07-15 16:11:23 -07:00
2019-05-30 11:25:51 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2019-09-11 18:28:33 -07:00
2019-09-11 18:28:33 -07:00