summaryrefslogtreecommitdiff
path: root/cmds/incidentd/src/main.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Add an API to dump incident report for dumpstateMike Ma2019-08-221-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Instead of just relying on the regular iteration through the system services inside dumpstate, add another API to IIncidentManager dedicated for dumpstate. - It is only callable by dumpstate() (check the calling uid) - It has the same behavior as the current call inside dump() Advantages: - More explicit function name, right next to takeIncidentReport will make it easier to keep them in sync. - Nobody else can call it, make security easier. - If dumpstate calls it explicitly, it can skip the 10 second timeout - The regular dump() call should provide debugging data about incidentd itself, for example timestamps for the most recent N incident reports taken and the current state of the work directory, allowing us to debug incidentd itself. Bug: 137493082 Test: Manually trigger a bug report, and verify /proto/incident_log.proto in the zip file. Change-Id: I19139c765b53ede63d3beb3ea3ac40ada1aba42d
* Implement dumpsys for incident serviceMike Ma2018-12-031-1/+2
| | | | | | | | | | | | | | | | | | | | | Implement dump() function in IncidentService so that it can be dumped by default. Dumpstate calls it twice, one with and one without '--proto'. dump() ignores the former. Dumpsys allows 10s max for each service. Hence, section 1200, 1201, 1202 are skipped because they take too long. Section 3008 and 3015 are skipped temporarily due to errors. All sections should be enabled once we find a workaround. A follow-up change in SELinux is needed to allow dumpstate to access incidentd. Bug: 119417232 Test: Run `adb shell dumpsys incident --proto`, inspect result and logs Test: Run `adb bugreport`, make sure incident.proto is in the zip file Check the proto for validity via aprotoc: cat incident.proto | ./out/soong/host/linux-x86/bin/aprotoc --decode_raw Exempt-From-Owner-Approval: The original owners no longer work on this project. Change-Id: I7d08f6b644cb6751b201fb7ba37ac5e1c42fd3c5
* Use modern c++ code style for incidentd.Yi Jin2018-03-301-1/+2
| | | | | | | | This cl does not contain code logic changes. Bug: 77333635 Test: manual and incidentd_test Change-Id: Iea0a402b1051defd45159ca267e6dd705f9ffa49
* This cl formats incidentd and makes it easier for debugging.Yi Jin2018-02-151-8/+4
| | | | | | Bug: 72755317 Test: clang-format -type=file -i <files> Change-Id: Ide91227f26c6b1db6d2e5fe8117ca5cc4cf77fd3
* First checkin of incident reporting.Joe Onorato2016-12-151-0/+64
There are a few major pieces here: incidentd --------- This daemon (started by init) runs and accepts incoming requests to take incident reports. When prompted, it calls into various system services and fills in an IncidentProto data structure, and then writes the report into dropbox. The next steps for incidentd: - Security review of SELinux policies. These will be a subset of the dumpstate permissions. Until this is done, incidentd is not started at boot time. incident -------- This shell command calls into incidentd, and can initiate an incident report and either capture the output or leave for dropbox. incident_report --------------- This host side tool can call adb shell with the correct parameters and also format the incident report as text. This formatting code was left of the device on purpose. Right now it's pretty small, but as the number of fields increases, the metadata and code to do the formatting will start to grow. The incident_report command also contains a workaround to let it work before incidentd is turned on by default. Right now, it is implemented to call adb shell dumpsys <service> --proto directly, whereas in the future it will go through the full incidentd flow. incident_section_gen -------------------- A build-time tool that generates a stripped down set of information about the fields that are available. libincident ----------- This library contains the code to connect to incidentd, and the meta proto definitions that are used by the framework protos. The basics are here now, but they are not fully fleshed out yet. The privacy.proto file contains annotations that can go in the proto file that we will later use to filter which fields are uploaded, and which are used by local sources. For example, a device in a test lab is safe to upload much much more information than a real user. These will share the same mechanism, but the user's output will be filtered according to these annotations. frameworks/core/proto --------------------- These .proto files contain the definitions of the system's output. There is one master android.os.IncidentProto file that is the top level of an incident report, but some other services (notification, fingerprint, batterystats, etc) will have others that are used directly by the logging mechanism. Other files which are shared by several of the services also go here, such as ComponentName, Locale, Configuration, etc. There will be many more. There is also a first iplementation of a dump method handling --proto in the fingerprint service. IncidentManager --------------- The java API to trigger an incident report. Test: Not written yet Change-Id: I59568b115ac7fcf73af70c946c95752bf33ae67f