| Index: webrtc/base/task_queue_unittest.cc
|
| diff --git a/webrtc/base/task_queue_unittest.cc b/webrtc/base/task_queue_unittest.cc
|
| index 74433b91440117250fc72cc959326db0afa2f935..a263610acafbc1e226b10df4c73aadb18a97305c 100644
|
| --- a/webrtc/base/task_queue_unittest.cc
|
| +++ b/webrtc/base/task_queue_unittest.cc
|
| @@ -206,6 +206,24 @@ TEST(TaskQueueTest, PostAndReplyLambda) {
|
| EXPECT_TRUE(my_flag);
|
| }
|
|
|
| +// This test covers a particular bug that we had in the libevent implementation
|
| +// where we could hit a deadlock while trying to post a reply task to a queue
|
| +// that was being deleted. The test isn't guaranteed to hit that case but it's
|
| +// written in a way that makes it likely and by running with --gtest_repeat=1000
|
| +// the bug would occur. Alas, now it should be fixed.
|
| +TEST(TaskQueueTest, PostAndReplyDeadlock) {
|
| + static const char kPostQueue[] = "PostQueue";
|
| + static const char kReplyQueue[] = "ReplyQueue";
|
| + std::unique_ptr<TaskQueue> post_queue(new TaskQueue(kPostQueue));
|
| + std::unique_ptr<TaskQueue> reply_queue(new TaskQueue(kReplyQueue));
|
| +
|
| + Event event(false, false);
|
| + post_queue->PostTaskAndReply([&event]() { event.Set(); }, []() {},
|
| + reply_queue.get());
|
| + EXPECT_TRUE(event.Wait(1000));
|
| + reply_queue.reset();
|
| +}
|
| +
|
| void TestPostTaskAndReply(TaskQueue* work_queue,
|
| const char* work_queue_name,
|
| Event* event) {
|
|
|