diff --git a/tools/process_dump/process_dumper.cpp b/tools/process_dump/process_dumper.cpp index ec4cea33fc493c504afa17a2c60342f5adf393f6..92d3d53b66df5f9d68d0e24ae492d835b0dfc64d 100644 --- a/tools/process_dump/process_dumper.cpp +++ b/tools/process_dump/process_dumper.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -451,12 +450,12 @@ int ProcessDumper::ParseSymbols(const ProcessDumpRequest& request, std::shared_p if (request.type != ProcessDumpType::DUMP_TYPE_DUMP_CATCH || expectedDumpFinishTime_ == 0) { threadDumpInfo->Symbolize(*process_, *unwinder_); } else if (expectedDumpFinishTime_ > curTime && expectedDumpFinishTime_ - curTime >= reservedSymbolParseTime) { - std::future parseSymbolTask = std::async(std::launch::async, [threadDumpInfo, this]() { + parseSymbolTask_ = std::async(std::launch::async, [threadDumpInfo, this]() { DFX_TRACE_SCOPED("parse symbol task"); threadDumpInfo->Symbolize(*process_, *unwinder_); }); uint64_t waitTime = expectedDumpFinishTime_ - curTime - lessRemainTimeMs; - if (parseSymbolTask.wait_for(std::chrono::milliseconds(waitTime)) != std::future_status::ready) { + if (parseSymbolTask_.wait_for(std::chrono::milliseconds(waitTime)) != std::future_status::ready) { DFXLOGW("Parse symbol timeout"); dumpRes = DumpErrorCode::DUMP_ESYMBOL_PARSE_TIMEOUT; } diff --git a/tools/process_dump/process_dumper.h b/tools/process_dump/process_dumper.h index b98cf030ea11afc401a7ace11ceb0cbe2d8d6282..12aac50f59ec6fba6e1bedf1fda8db099d535486 100644 --- a/tools/process_dump/process_dumper.h +++ b/tools/process_dump/process_dumper.h @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -71,6 +72,7 @@ private: static constexpr size_t DEFAULT_MAX_STRING_LEN = 2048; bool isJsonDump_ = false; uint64_t expectedDumpFinishTime_ = 0; + std::future parseSymbolTask_; #if defined(__aarch64__) std::unique_ptr coreDumpService_ = nullptr; #endif