crash: Fix session manager D-Bus call service name
The D-Bus call to session manager was using the incorrect service
name field, causing the crash reporter session lookup to fail and
fallback to placing the crash in /home/chronos/crash. Fix the
D-Bus call so that crashes are put in the right place.
Also, fixing this exposed an error with processing the results.
The previous D-Bus code treated an empty session response the
same as a D-Bus connection error, with the new code D-Bus errors
are handled separately, so also check whether the returned array
is empty.
BUG=chromium:458330
TEST=triggered crash with 'chrome://crash' page; crash files are
placed in /home/chronos/user/crash
TEST=`test_that -b panther <IP> logging_UserCrash` passes
Change-Id: I77733adc5e4287d9eae83a749818d9cc38398c80
Reviewed-on: https://chromium-review.googlesource.com/249800
Reviewed-by: Dan Erat <derat@chromium.org>
Tested-by: Steve Fung <stevefung@chromium.org>
Commit-Queue: Steve Fung <stevefung@chromium.org>
diff --git a/crash_reporter/crash_collector.cc b/crash_reporter/crash_collector.cc
index d67356d..b238257 100644
--- a/crash_reporter/crash_collector.cc
+++ b/crash_reporter/crash_collector.cc
@@ -115,7 +115,7 @@
session_manager_proxy_.reset(
new org::chromium::SessionManagerInterfaceProxy(
bus_,
- login_manager::kSessionManagerInterface));
+ login_manager::kSessionManagerServiceName));
}
int CrashCollector::WriteNewFile(const FilePath &filename,
@@ -189,7 +189,7 @@
// first result we get back.
FilePath user_path = FilePath(kFallbackUserCrashPath);
std::map<std::string, std::string> active_sessions;
- if (!GetActiveUserSessions(&active_sessions)) {
+ if (!GetActiveUserSessions(&active_sessions) || active_sessions.empty()) {
LOG(ERROR) << "Could not get active user sessions, using default.";
return user_path;
}