diff --git a/msmonitor/plugin/ipc_monitor/NpuIpcClient.cpp b/msmonitor/plugin/ipc_monitor/NpuIpcClient.cpp index 93fc9370a6216839120713ea250c12984f72e322..89639e4d004b5bc1aed157f12566997615b6789f 100644 --- a/msmonitor/plugin/ipc_monitor/NpuIpcClient.cpp +++ b/msmonitor/plugin/ipc_monitor/NpuIpcClient.cpp @@ -59,8 +59,17 @@ std::string IpcClient::IpcClientNpuConfig() for (size_t i = 0; i < size; i++) { req->pids[i] = pids_[i]; } - std::unique_ptr message = Message::ConstructMessage(*req, MSG_TYPE_REQUEST, size); - if (!SyncSendMessage(*message, DYNO_IPC_NAME)) { + std::unique_ptr message; + try{ + message = Message::ConstructMessage(*req, MSG_TYPE_REQUEST, size); + } + catch (const std::exception &e) { + LOG(ERROR) << "ConstructMessage failed: " << e.what(); + free(req); + req = nullptr; + throw; + } + if (!message || !SyncSendMessage(*message, DYNO_IPC_NAME)) { LOG(WARNING) << "Failed to send config to dyno server"; free(req); req = nullptr;