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

Commit e0fbd487 authored by mhasank's avatar mhasank
Browse files

Revert "arc: Implement smaller dumpstate output"

This reverts commit f56bbb2b.

Bug: 142684959
Bug: 136273873
Test: atest dumpstate_test
Change-Id: I9c5c007c2f630f06225e5e2b6229c1f3473f181f
parent ce1cb8c6
Loading
Loading
Loading
Loading
+7 −61
Original line number Original line Diff line number Diff line
@@ -1367,53 +1367,6 @@ static void DumpExternalFragmentationInfo() {
    printf("\n");
    printf("\n");
}
}


static void DumpstateArcOnly() {
    // Trimmed-down version of dumpstate to only include a whitelisted
    // set of logs (system log, event log, and system server / system app
    // crashes, and ARC networking logs). See b/136273873 and b/138459828
    // for context. New sections must be first approved by Chrome OS Privacy
    // and then added to server side cros monitoring PII scrubber before adding
    // them here. See cl/312126645 for an example.
    DurationReporter duration_reporter("DUMPSTATE");
    unsigned long timeout_ms;
    // calculate timeout
    timeout_ms = logcat_timeout({"main", "system", "crash"});
    RunCommand("SYSTEM LOG",
               {"logcat", "-v", "threadtime", "-v", "printable", "-v", "uid", "-d", "*:v"},
               CommandOptions::WithTimeoutInMs(timeout_ms).Build());
    timeout_ms = logcat_timeout({"events"});
    RunCommand(
        "EVENT LOG",
        {"logcat", "-b", "events", "-v", "threadtime", "-v", "printable", "-v", "uid", "-d", "*:v"},
        CommandOptions::WithTimeoutInMs(timeout_ms).Build());

    printf("========================================================\n");
    printf("== Networking Service\n");
    printf("========================================================\n");

    // ARC networking service implements dumpsys by reusing the 'wifi' service name.
    // The top-level handler is implemented in handleDump() in
    // vendor/google_arc/libs/arc-services/src/com/android/server/arc/net/ArcNetworkService.java.
    // It outputs a subset of Android system server state relevant for debugging ARC
    // connectivity issues, in a PII-free manner. See b/147270970.
    RunDumpsys("DUMPSYS NETWORK_SERVICE_LIMITED", {"wifi", "-a"},
               CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10));

    printf("========================================================\n");
    printf("== Dropbox crashes\n");
    printf("========================================================\n");

    RunDumpsys("DROPBOX SYSTEM SERVER CRASHES", {"dropbox", "-p", "system_server_crash"});
    RunDumpsys("DROPBOX SYSTEM APP CRASHES", {"dropbox", "-p", "system_app_crash"});

    printf("========================================================\n");
    printf("== Final progress (pid %d): %d/%d (estimated %d)\n", ds.pid_, ds.progress_->Get(),
           ds.progress_->GetMax(), ds.progress_->GetInitialMax());
    printf("========================================================\n");
    printf("== dumpstate: done (id %d)\n", ds.id_);
    printf("========================================================\n");
}

// Dumps various things. Returns early with status USER_CONSENT_DENIED if user denies consent
// Dumps various things. Returns early with status USER_CONSENT_DENIED if user denies consent
// via the consent they are shown. Ignores other errors that occur while running various
// via the consent they are shown. Ignores other errors that occur while running various
// commands. The consent checking is currently done around long running tasks, which happen to
// commands. The consent checking is currently done around long running tasks, which happen to
@@ -2100,7 +2053,7 @@ void Dumpstate::DumpstateBoard() {
static void ShowUsage() {
static void ShowUsage() {
    fprintf(stderr,
    fprintf(stderr,
            "usage: dumpstate [-h] [-b soundfile] [-e soundfile] [-d] [-p] "
            "usage: dumpstate [-h] [-b soundfile] [-e soundfile] [-d] [-p] "
            "[-z] [-s] [-S] [-q] [-P] [-R] [-A] [-V version]\n"
            "[-z] [-s] [-S] [-q] [-P] [-R] [-V version]\n"
            "  -h: display this help message\n"
            "  -h: display this help message\n"
            "  -b: play sound file instead of vibrate, at beginning of job\n"
            "  -b: play sound file instead of vibrate, at beginning of job\n"
            "  -e: play sound file instead of vibrate, at end of job\n"
            "  -e: play sound file instead of vibrate, at end of job\n"
@@ -2113,7 +2066,6 @@ static void ShowUsage() {
            "  -P: send broadcast when started and do progress updates\n"
            "  -P: send broadcast when started and do progress updates\n"
            "  -R: take bugreport in remote mode (requires -z and -d, shouldn't be used with -P)\n"
            "  -R: take bugreport in remote mode (requires -z and -d, shouldn't be used with -P)\n"
            "  -w: start binder service and make it wait for a call to startBugreport\n"
            "  -w: start binder service and make it wait for a call to startBugreport\n"
            "  -A: output limited information that is safe for submission in ARC++ bugreports\n"
            "  -v: prints the dumpstate header and exit\n");
            "  -v: prints the dumpstate header and exit\n");
}
}


@@ -2359,12 +2311,13 @@ static void LogDumpOptions(const Dumpstate::DumpOptions& options) {
        "do_zip_file: %d do_vibrate: %d use_socket: %d use_control_socket: %d do_screenshot: %d "
        "do_zip_file: %d do_vibrate: %d use_socket: %d use_control_socket: %d do_screenshot: %d "
        "is_remote_mode: %d show_header_only: %d do_start_service: %d telephony_only: %d "
        "is_remote_mode: %d show_header_only: %d do_start_service: %d telephony_only: %d "
        "wifi_only: %d do_progress_updates: %d fd: %d bugreport_mode: %s dumpstate_hal_mode: %s "
        "wifi_only: %d do_progress_updates: %d fd: %d bugreport_mode: %s dumpstate_hal_mode: %s "
        "arc_only: %d args: %s\n",
        "args: %s\n",
        options.do_zip_file, options.do_vibrate, options.use_socket, options.use_control_socket,
        options.do_zip_file, options.do_vibrate, options.use_socket, options.use_control_socket,
        options.do_screenshot, options.is_remote_mode, options.show_header_only,
        options.do_screenshot, options.is_remote_mode, options.show_header_only,
        options.do_start_service, options.telephony_only, options.wifi_only,
        options.do_start_service,
        options.do_progress_updates, options.bugreport_fd.get(), options.bugreport_mode.c_str(),
        options.telephony_only, options.wifi_only, options.do_progress_updates,
        toString(options.dumpstate_hal_mode).c_str(), options.arc_only, options.args.c_str());
        options.bugreport_fd.get(), options.bugreport_mode.c_str(),
        toString(options.dumpstate_hal_mode).c_str(), options.args.c_str());
}
}


void Dumpstate::DumpOptions::Initialize(BugreportMode bugreport_mode,
void Dumpstate::DumpOptions::Initialize(BugreportMode bugreport_mode,
@@ -2386,7 +2339,7 @@ void Dumpstate::DumpOptions::Initialize(BugreportMode bugreport_mode,
Dumpstate::RunStatus Dumpstate::DumpOptions::Initialize(int argc, char* argv[]) {
Dumpstate::RunStatus Dumpstate::DumpOptions::Initialize(int argc, char* argv[]) {
    RunStatus status = RunStatus::OK;
    RunStatus status = RunStatus::OK;
    int c;
    int c;
    while ((c = getopt(argc, argv, "dho:svqzpAPBRSV:w")) != -1) {
    while ((c = getopt(argc, argv, "dho:svqzpPBRSV:w")) != -1) {
        switch (c) {
        switch (c) {
            // clang-format off
            // clang-format off
            case 'd': do_add_date = true;            break;
            case 'd': do_add_date = true;            break;
@@ -2398,7 +2351,6 @@ Dumpstate::RunStatus Dumpstate::DumpOptions::Initialize(int argc, char* argv[])
            case 'p': do_screenshot = true;          break;
            case 'p': do_screenshot = true;          break;
            case 'P': do_progress_updates = true;    break;
            case 'P': do_progress_updates = true;    break;
            case 'R': is_remote_mode = true;         break;
            case 'R': is_remote_mode = true;         break;
            case 'A': arc_only = true;               break;
            case 'V':                                break;  // compatibility no-op
            case 'V':                                break;  // compatibility no-op
            case 'w':
            case 'w':
                // This was already processed
                // This was already processed
@@ -2683,7 +2635,6 @@ Dumpstate::RunStatus Dumpstate::RunInternal(int32_t calling_uid,
    // duration is logged into MYLOG instead.
    // duration is logged into MYLOG instead.
    PrintHeader();
    PrintHeader();


    // TODO(nandana) reduce code repetition in if branches
    if (options_->telephony_only) {
    if (options_->telephony_only) {
        MaybeTakeEarlyScreenshot();
        MaybeTakeEarlyScreenshot();
        onUiIntensiveBugreportDumpsFinished(calling_uid, calling_package);
        onUiIntensiveBugreportDumpsFinished(calling_uid, calling_package);
@@ -2695,11 +2646,6 @@ Dumpstate::RunStatus Dumpstate::RunInternal(int32_t calling_uid,
        onUiIntensiveBugreportDumpsFinished(calling_uid, calling_package);
        onUiIntensiveBugreportDumpsFinished(calling_uid, calling_package);
        MaybeCheckUserConsent(calling_uid, calling_package);
        MaybeCheckUserConsent(calling_uid, calling_package);
        DumpstateWifiOnly();
        DumpstateWifiOnly();
    } else if (options_->arc_only) {
        MaybeTakeEarlyScreenshot();
        onUiIntensiveBugreportDumpsFinished(calling_uid, calling_package);
        MaybeCheckUserConsent(calling_uid, calling_package);
        DumpstateArcOnly();
    } else {
    } else {
        // Invoke critical dumpsys first to preserve system state, before doing anything else.
        // Invoke critical dumpsys first to preserve system state, before doing anything else.
        RunDumpsysCritical();
        RunDumpsysCritical();
+0 −2
Original line number Original line Diff line number Diff line
@@ -377,8 +377,6 @@ class Dumpstate {
        bool do_start_service = false;
        bool do_start_service = false;
        bool telephony_only = false;
        bool telephony_only = false;
        bool wifi_only = false;
        bool wifi_only = false;
        // Trimmed-down version of dumpstate to only include whitelisted logs.
        bool arc_only = false;
        // Whether progress updates should be published.
        // Whether progress updates should be published.
        bool do_progress_updates = false;
        bool do_progress_updates = false;
        // The mode we'll use when calling IDumpstateDevice::dumpstateBoard.
        // The mode we'll use when calling IDumpstateDevice::dumpstateBoard.
+1 −1
Original line number Original line Diff line number Diff line
@@ -30,7 +30,7 @@ bool ShouldStartServiceAndWait(int argc, char* argv[]) {
    bool do_wait = false;
    bool do_wait = false;
    int c;
    int c;
    // Keep flags in sync with Dumpstate::DumpOptions::Initialize.
    // Keep flags in sync with Dumpstate::DumpOptions::Initialize.
    while ((c = getopt(argc, argv, "dho:svqzpAPBRSV:w")) != -1 && !do_wait) {
    while ((c = getopt(argc, argv, "wdho:svqzpPBRSV:")) != -1 && !do_wait) {
        switch (c) {
        switch (c) {
            case 'w':
            case 'w':
                do_wait = true;
                do_wait = true;
+0 −42
Original line number Original line Diff line number Diff line
@@ -179,7 +179,6 @@ TEST_F(DumpOptionsTest, InitializeNone) {
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.arc_only);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
}
}


@@ -207,7 +206,6 @@ TEST_F(DumpOptionsTest, InitializeAdbBugreport) {
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.arc_only);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
}
}


@@ -233,7 +231,6 @@ TEST_F(DumpOptionsTest, InitializeAdbShellBugreport) {
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.arc_only);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
}
}


@@ -252,7 +249,6 @@ TEST_F(DumpOptionsTest, InitializeFullBugReport) {
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.do_start_service);
    EXPECT_FALSE(options_.do_start_service);
    EXPECT_FALSE(options_.arc_only);
}
}


TEST_F(DumpOptionsTest, InitializeInteractiveBugReport) {
TEST_F(DumpOptionsTest, InitializeInteractiveBugReport) {
@@ -270,7 +266,6 @@ TEST_F(DumpOptionsTest, InitializeInteractiveBugReport) {
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.arc_only);
}
}


TEST_F(DumpOptionsTest, InitializeRemoteBugReport) {
TEST_F(DumpOptionsTest, InitializeRemoteBugReport) {
@@ -287,7 +282,6 @@ TEST_F(DumpOptionsTest, InitializeRemoteBugReport) {
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.arc_only);
}
}


TEST_F(DumpOptionsTest, InitializeWearBugReport) {
TEST_F(DumpOptionsTest, InitializeWearBugReport) {
@@ -305,7 +299,6 @@ TEST_F(DumpOptionsTest, InitializeWearBugReport) {
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.arc_only);
}
}


TEST_F(DumpOptionsTest, InitializeTelephonyBugReport) {
TEST_F(DumpOptionsTest, InitializeTelephonyBugReport) {
@@ -323,7 +316,6 @@ TEST_F(DumpOptionsTest, InitializeTelephonyBugReport) {
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.arc_only);
}
}


TEST_F(DumpOptionsTest, InitializeWifiBugReport) {
TEST_F(DumpOptionsTest, InitializeWifiBugReport) {
@@ -341,37 +333,6 @@ TEST_F(DumpOptionsTest, InitializeWifiBugReport) {
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.arc_only);
}

TEST_F(DumpOptionsTest, InitializeArcOnlyBugreport) {
    // clang-format off
    char* argv[] = {
        const_cast<char*>("dumpstatez"),
        const_cast<char*>("-S"),
        const_cast<char*>("-d"),
        const_cast<char*>("-z"),
        const_cast<char*>("-q"),
        const_cast<char*>("-A")
    };
    // clang-format on

    Dumpstate::RunStatus status = options_.Initialize(ARRAY_SIZE(argv), argv);

    EXPECT_EQ(status, Dumpstate::RunStatus::OK);
    EXPECT_TRUE(options_.do_add_date);
    EXPECT_TRUE(options_.do_zip_file);
    EXPECT_TRUE(options_.use_control_socket);
    EXPECT_FALSE(options_.do_vibrate);
    EXPECT_TRUE(options_.arc_only);

    // Other options retain default values
    EXPECT_FALSE(options_.show_header_only);
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
}
}


TEST_F(DumpOptionsTest, InitializeDefaultBugReport) {
TEST_F(DumpOptionsTest, InitializeDefaultBugReport) {
@@ -400,7 +361,6 @@ TEST_F(DumpOptionsTest, InitializeDefaultBugReport) {
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.wifi_only);
    EXPECT_FALSE(options_.wifi_only);
    EXPECT_FALSE(options_.arc_only);
}
}


TEST_F(DumpOptionsTest, InitializePartial1) {
TEST_F(DumpOptionsTest, InitializePartial1) {
@@ -430,7 +390,6 @@ TEST_F(DumpOptionsTest, InitializePartial1) {
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_screenshot);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.do_progress_updates);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.is_remote_mode);
    EXPECT_FALSE(options_.arc_only);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
}
}


@@ -460,7 +419,6 @@ TEST_F(DumpOptionsTest, InitializePartial2) {
    EXPECT_FALSE(options_.do_zip_file);
    EXPECT_FALSE(options_.do_zip_file);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_socket);
    EXPECT_FALSE(options_.use_control_socket);
    EXPECT_FALSE(options_.use_control_socket);
    EXPECT_FALSE(options_.arc_only);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
    EXPECT_EQ(options_.dumpstate_hal_mode, DumpstateMode::DEFAULT);
}
}