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

Commit 8df81bb3 authored by Devin Moore's avatar Devin Moore
Browse files

Add VINTF files to bug reports

Multiple files make up the vendor interface that is created at run-time.
These files can helpful for debugging issues like b/200606478.

Test: adb shell am bug-report
Bug: 202792567
Change-Id: I1871e03c4ec166e85c47d670be08d7f57fc36c12
parent 7514e3b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ cc_defaults {
        "libhidlbase",
        "liblog",
        "libutils",
        "libvintf",
        "libbinderdebug",
        "packagemanager_aidl-cpp",
    ],
+20 −0
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@
#include <private/android_logger.h>
#include <serviceutils/PriorityDumper.h>
#include <utils/StrongPointer.h>
#include <vintf/VintfObject.h>
#include "DumpstateInternal.h"
#include "DumpstateService.h"
#include "dumpstate.h"
@@ -1396,6 +1397,23 @@ static void DumpHals(int out_fd = STDOUT_FILENO) {
    }
}

// Dump all of the files that make up the vendor interface.
// See the files listed in dumpFileList() for the latest list of files.
static void DumpVintf() {
    const auto vintfFiles = android::vintf::details::dumpFileList();
    for (const auto vintfFile : vintfFiles) {
        struct stat st;
        if (stat(vintfFile.c_str(), &st) == 0) {
            if (S_ISDIR(st.st_mode)) {
                ds.AddDir(vintfFile, true /* recursive */);
            } else {
                ds.EnqueueAddZipEntryAndCleanupIfNeeded(ZIP_ROOT_DIR + vintfFile,
                        vintfFile);
            }
        }
    }
}

static void DumpExternalFragmentationInfo() {
    struct stat st;
    if (stat("/proc/buddyinfo", &st) != 0) {
@@ -1621,6 +1639,8 @@ static Dumpstate::RunStatus dumpstate() {
        do_dmesg();
    }

    DumpVintf();

    RunCommand("LIST OF OPEN FILES", {"lsof"}, CommandOptions::AS_ROOT);

    RUN_SLOW_FUNCTION_WITH_CONSENT_CHECK(for_each_pid, do_showmap, "SMAPS OF ALL PROCESSES");