Merge "crash_reporter: Set Version and Product ID"
This commit is contained in:
commit
7c262abeac
3 changed files with 14 additions and 16 deletions
|
|
@ -117,6 +117,7 @@ LOCAL_MODULE := crash_reporter_tests
|
||||||
LOCAL_CPP_EXTENSION := $(crash_reporter_cpp_extension)
|
LOCAL_CPP_EXTENSION := $(crash_reporter_cpp_extension)
|
||||||
LOCAL_SHARED_LIBRARIES := libchrome \
|
LOCAL_SHARED_LIBRARIES := libchrome \
|
||||||
libchromeos \
|
libchromeos \
|
||||||
|
libcutils \
|
||||||
libdbus \
|
libdbus \
|
||||||
libpcrecpp
|
libpcrecpp
|
||||||
LOCAL_SRC_FILES := $(crash_reporter_test_src)
|
LOCAL_SRC_FILES := $(crash_reporter_test_src)
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,6 @@ const char kSystemCrashPath[] = "/data/misc/crash_reporter/crash";
|
||||||
const char kUploadVarPrefix[] = "upload_var_";
|
const char kUploadVarPrefix[] = "upload_var_";
|
||||||
const char kUploadFilePrefix[] = "upload_file_";
|
const char kUploadFilePrefix[] = "upload_file_";
|
||||||
|
|
||||||
// Key of the lsb-release entry containing the OS version.
|
|
||||||
const char kLsbVersionKey[] = "CHROMEOS_RELEASE_VERSION";
|
|
||||||
|
|
||||||
// Normally this path is not used. Unfortunately, there are a few edge cases
|
// Normally this path is not used. Unfortunately, there are a few edge cases
|
||||||
// where we need this. Any process that runs as kDefaultUserName that crashes
|
// where we need this. Any process that runs as kDefaultUserName that crashes
|
||||||
// is consider a "user crash". That includes the initial Chrome browser that
|
// is consider a "user crash". That includes the initial Chrome browser that
|
||||||
|
|
@ -387,27 +384,14 @@ void CrashCollector::AddCrashMetaUploadData(const std::string &key,
|
||||||
void CrashCollector::WriteCrashMetaData(const FilePath &meta_path,
|
void CrashCollector::WriteCrashMetaData(const FilePath &meta_path,
|
||||||
const std::string &exec_name,
|
const std::string &exec_name,
|
||||||
const std::string &payload_path) {
|
const std::string &payload_path) {
|
||||||
chromeos::KeyValueStore store;
|
|
||||||
if (!store.Load(FilePath(lsb_release_))) {
|
|
||||||
LOG(ERROR) << "Problem parsing " << lsb_release_;
|
|
||||||
// Even though there was some failure, take as much as we could read.
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string version("unknown");
|
|
||||||
if (!store.GetString(kLsbVersionKey, &version)) {
|
|
||||||
LOG(ERROR) << "Unable to read " << kLsbVersionKey << " from "
|
|
||||||
<< lsb_release_;
|
|
||||||
}
|
|
||||||
int64_t payload_size = -1;
|
int64_t payload_size = -1;
|
||||||
base::GetFileSize(FilePath(payload_path), &payload_size);
|
base::GetFileSize(FilePath(payload_path), &payload_size);
|
||||||
std::string meta_data = StringPrintf("%sexec_name=%s\n"
|
std::string meta_data = StringPrintf("%sexec_name=%s\n"
|
||||||
"ver=%s\n"
|
|
||||||
"payload=%s\n"
|
"payload=%s\n"
|
||||||
"payload_size=%" PRId64 "\n"
|
"payload_size=%" PRId64 "\n"
|
||||||
"done=1\n",
|
"done=1\n",
|
||||||
extra_metadata_.c_str(),
|
extra_metadata_.c_str(),
|
||||||
exec_name.c_str(),
|
exec_name.c_str(),
|
||||||
version.c_str(),
|
|
||||||
payload_path.c_str(),
|
payload_path.c_str(),
|
||||||
payload_size);
|
payload_size);
|
||||||
// We must use WriteNewFile instead of base::WriteFile as we
|
// We must use WriteNewFile instead of base::WriteFile as we
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,13 @@ static const uid_t kUnknownUid = -1;
|
||||||
const char *UserCollector::kUserId = "Uid:\t";
|
const char *UserCollector::kUserId = "Uid:\t";
|
||||||
const char *UserCollector::kGroupId = "Gid:\t";
|
const char *UserCollector::kGroupId = "Gid:\t";
|
||||||
|
|
||||||
|
// The property containing the OS version.
|
||||||
|
const char kVersionProperty[] = "ro.build.id";
|
||||||
|
|
||||||
|
// The property containing the product id.
|
||||||
|
const char kProductIDProperty[] = "ro.product.product_id";
|
||||||
|
|
||||||
|
|
||||||
using base::FilePath;
|
using base::FilePath;
|
||||||
using base::StringPrintf;
|
using base::StringPrintf;
|
||||||
|
|
||||||
|
|
@ -455,6 +462,12 @@ UserCollector::ErrorType UserCollector::ConvertAndEnqueueCrash(
|
||||||
if (GetLogContents(FilePath(log_config_path_), exec, log_path))
|
if (GetLogContents(FilePath(log_config_path_), exec, log_path))
|
||||||
AddCrashMetaData("log", log_path.value());
|
AddCrashMetaData("log", log_path.value());
|
||||||
|
|
||||||
|
char value[PROPERTY_VALUE_MAX];
|
||||||
|
property_get(kVersionProperty, value, "undefined");
|
||||||
|
AddCrashMetaUploadData("ver", value);
|
||||||
|
property_get(kProductIDProperty, value, "undefined");
|
||||||
|
AddCrashMetaUploadData("prod", value);
|
||||||
|
|
||||||
ErrorType error_type =
|
ErrorType error_type =
|
||||||
ConvertCoreToMinidump(pid, container_dir, core_path, minidump_path);
|
ConvertCoreToMinidump(pid, container_dir, core_path, minidump_path);
|
||||||
if (error_type != kErrorNone) {
|
if (error_type != kErrorNone) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue