Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1bbbe7a authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fixes dumpstate crashed when shutdown the thread pool" am: 6fe1d3d3...

Merge "Fixes dumpstate crashed when shutdown the thread pool" am: 6fe1d3d3 am: bb0e037a am: 51a36dd9

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1641960

Change-Id: I2e96d04b0b2ef0d9307d849e11899a06613667df
parents fa8dc0f6 51a36dd9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -64,8 +64,8 @@ void DumpPool::shutdown() {
    if (shutdown_ || threads_.empty()) {
        return;
    }
    while (!tasks_.empty()) tasks_.pop();
    futures_map_.clear();
    while (!tasks_.empty()) tasks_.pop();

    shutdown_ = true;
    condition_variable_.notify_all();
+21 −0
Original line number Diff line number Diff line
@@ -1762,6 +1762,27 @@ TEST_F(DumpPoolTest, EnqueueTask_withDurationLog) {
    EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0));
}

TEST_F(DumpPoolTest, Shutdown_withoutCrash) {
    bool run_1 = false;
    auto dump_func_1 = [&]() {
        run_1 = true;
    };
    auto dump_func = []() {
        sleep(1);
    };

    dump_pool_->start(/* thread_counts = */1);
    dump_pool_->enqueueTask(/* task_name = */"1", dump_func_1);
    dump_pool_->enqueueTask(/* task_name = */"2", dump_func);
    dump_pool_->enqueueTask(/* task_name = */"3", dump_func);
    dump_pool_->enqueueTask(/* task_name = */"4", dump_func);
    dump_pool_->waitForTask("1", "", out_fd_.get());
    dump_pool_->shutdown();

    EXPECT_TRUE(run_1);
    EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0));
}

class TaskQueueTest : public DumpstateBaseTest {
public:
    void SetUp() {