c4e4823b00a94627e922eada1172688818471b0c |
|
04-May-2017 |
Mark Salyzyn <salyzyn@google.com> |
logd: validate and fill in socket credentials - android::pidToUid() additional checking. Make sure if we have to convert a PID to an UID that the parse of /proc/<pid>/status requires a trailing space after the number - android::tidToPid() added, in the same vein as android::pidToUid(). - stats.tidToPid() added - If no credentials, set PID to 0 and UID to DEFAULT_OVERFLOWUID - If credentialed PID is 0, use stats.tidToPid() - If credentialed UID is DEFAULT_OVERFLOWUID, use stats.pidToUid() Test: remove +passcred from logd.rc for daemon and confirm very few UID=65534 or PID=0 cases actually show up Bug: 37985222 Change-Id: I7d20506e70e67beb3043d1537cf9450ab58dc278
/system/core/logd/LogUtils.h
|
0484b3b5757594a43c6b646824b44643d2a007de |
|
11-Aug-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: ASAN cleansing A mixture of fixes and cleanup for LogKlog.cpp and friends. - sscanf calls strlen. Check if the string is missing a nul terminator, if it is, do not call sscanf. - replace NULL with nullptr for stronger typechecking. - pass by reference for simpler code. - Use ssize_t where possible to check for negative values. - fix FastCmp to add some validity checking since ASAN reports that callers are not making sure pre-conditions are met. - add fasticmp templates for completeness. - if the buffer is too small to contain a meaningful time, do not call down to log_time::strptime() because it does not limit its accesses to the buffer boundaries, instead stopping at a terminating nul or invalid match. - move strnstr to LogUtils.h, drop size checking of needle and clearly report the list of needles used with android::strnstr - replace 'sizeof(static const char[]) - 1' with strlen. Test: gTest liblog-unit-test, logd-unit-tests & logcat-unit-tests Bug: 30792935 Bug: 36536248 Bug: 35468874 Bug: 34949125 Bug: 34606909 Bug: 36075298 Bug: 36608728 Change-Id: I161bf03ba029050e809b31cceef03f729d318866
/system/core/logd/LogUtils.h
|
501c373916e292764400dbae735f44b33378400f |
|
10-Mar-2017 |
Mark Salyzyn <salyzyn@google.com> |
logd: specify clang format Switch _all_ file's coding style to match to ease all future changes. SideEffects: None Test: compile Bug: 35373582 Change-Id: I470cb17f64fa48f14aafc02f574e296bffe3a3f3
/system/core/logd/LogUtils.h
|
61e9ce6709a12cf39a9471476da3d50339efe466 |
|
12-Sep-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: add getEventTag command and service Will register a new event tag by name and format, and return an event-log-tags format response with the newly allocated tag. If format is not specified, then nothing will be recorded, but a pre-existing named entry will be listed. If name and format are not specified, list all dynamic entries. If name=* list all event log tag entries. Stickiness through logd crash will be managed with the tmpfs file /dev/event-log-tags and through a reboot with add_tag entries in the pmsg last logcat event log. On debug builds we retain a /data/misc/logd/event-log-tags file that aids stickiness and that can be picked up by the bugreport. If we detect truncation damage to /dev/event-log-tags, or to /data/misc/logd/event-log-tags, rebuild file with a new first line signature incorporating the time so mmap'd readers of the file can detect the possible change in shape and order. Manual testing: Make sure nc (netcat) is built for the target platform on the host: $ m nc Then the following can be used to issue a request on the platform: $ echo -n 'getEventTag name=<name> format="<format>"\0EXIT\0' | > nc -U /dev/socket/logd Test: gTest logd-unit-test --gtest_filter=getEventTag* Bug: 31456426 Change-Id: I5dacc5f84a24d52dae09cca5ee1a3a9f9207f06d
/system/core/logd/LogUtils.h
|
3296291cffd13af13ea9e60a8ac1138101cf8e4c |
|
12-Sep-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: add android::sizesTotal() function Test: gTest liblog-unit-tests, logd-unit-tests and logcat-unit-tests Bug: 31456426 Change-Id: I6fb6cd589227fc43d22f9336e01f1bf7e3feb24c
/system/core/logd/LogUtils.h
|
a2c022257c5bed56fbc47de25c5d909bbe880f7b |
|
13-Dec-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: record multiple duplicate messages as chatty If a series of messages arrive from a single source with identical message content payload, then suppress them and generate a chatty report. The checking is done on a per log id basis. This alters the assumption that chatty messages are always at the oldest entries, they now show up in the middle too. To address this change in behavior we print the first line, a chatty reference which internally takes little space, then the last line in the series. This does not conserve processing time in logd, and certainly has no impact on the long path of formatting and submitting log messages from from the source, but it may contribute to memory space and signal to noise savings under heavy spammy loads. Test: gTest liblog-unit-tests, logd-unit-tests & logcat-unit-tests Bug: 33535908 Change-Id: I3160c36d4f4e2f8216f528605a1b3993173f4dec
/system/core/logd/LogUtils.h
|
0eeb06b932f185e10377e4494475d2cdd6adfa1b |
|
02-Dec-2016 |
Mark Salyzyn <salyzyn@google.com> |
utils: Add FastStrcmp.h Move existing fast<str*cmp> templates for general use, pulled from the implementation used in logd that dealt with speed through cache locality and subroutine call mitigation. Rename to fastcmp. Test: logd-benchmarks and based on manual profiling from the past Bug: 31456426 Change-Id: Ic62f4a437fc3e06ffdeaae73a6f34e197957a6b0
/system/core/logd/LogUtils.h
|
aeaaf81c2cc8366ac4f66eb3d2fc85f9b8194982 |
|
30-Sep-2016 |
Mark Salyzyn <salyzyn@google.com> |
liblog: logd: logcat: Split out log/logger.h into public and private. log/logger.h pieces moved into log/log.h. Correct for some minor Android Coding standards. Test: gTests liblog-unit-tests, logd-unit-tests and logcat-unit-tests Bug: 19235719 Bug: 26552300 Bug: 31289077 Bug: 31456426 Change-Id: I0a19fd8788eec20a582e72e4c62c04534bdb1b9a
/system/core/logd/LogUtils.h
|
cfd5b080af8de527d768f0ff7902c26af8d49307 |
|
17-Oct-2016 |
Mark Salyzyn <salyzyn@google.com> |
system/core: preparation to pull back interfaces from android/log.h Point to log/log.h where necessary, define LOG_TAG where necessary. Accept that private/android_logger.h is suitable replacement for log/logger.h and android/log.h. Correct liblog/README Effectively a cleanup and controlled select revert of 'system/core: drop or replace log/logger.h' and 'system/core: Replace log/log.h with android/log.h'. Test: compile Bug: 30465923 Change-Id: Ic2ad157bad6f5efe2c6af293a73bb753300b17a2
/system/core/logd/LogUtils.h
|
f10e27379064797acb2659afc45b54eafbfcd019 |
|
27-Sep-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: Use private interfaces for buffer size properties Test: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests Bug: 31750617 Change-Id: I692577cfdf4bf8c93616f32df4b56786918aef1c
/system/core/logd/LogUtils.h
|
807e40ecc9786755e2f74a7a6a9b20c812588119 |
|
22-Sep-2016 |
Mark Salyzyn <salyzyn@google.com> |
liblog: logd: Add android_lookupEventTag_len() Allows us to mitigate the impact of MAP_PRIVATE and copy on write by calling android_lookupEventTag_len instead of android_lookupEventTag, and delaying the copy on write impact to the later. We return a string length in a supplied location along with the string pointer with android_lookupEventTag_len(const EventTagMap* map, size_t* len, int tag). The string is not guaranteed to be nul terminated. Since android_lookupEventTag() called even once can cause the memory impact, we will mark it as deprecated, but we currently have no timeframe for removal since this is a very old interface. Add an API for __android_log_is_loggable_len() that accepts the non null terminated content and fixup callers that would gain because the length is known prior to the call either in the compiler or at runtime. Tackle transition to android_lookupEventTag_len() and fixup callers. On any application that performs logging (eg: com.android.phone) /proc/<pid>/smaps before: xxxxxxxxxx-xxxxxxxxxx rw-p 00000000 fd:00 463 /system/etc/event-log-tags Size: 20 kB Rss: 20 kB Pss: 1 kB Shared_Clean: 0 kB Shared_Dirty: 20 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 20 kB AnonHugePages: 0 kB Swap: 0 kB SwapPss: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac /proc/<pid>/smaps after: xxxxxxxxxx-xxxxxxxxxx rw-p 00000000 fd:00 1773 /system/etc/event-log-tags Size: 20 kB Rss: 20 kB Pss: 1 kB Shared_Clean: 20 kB (was 0kB) Shared_Dirty: 0 kB (was 20kB) Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 20 kB (was 0kB) Anonymous: 0 kB (was 20kB) AnonHugePages: 0 kB Swap: 0 kB SwapPss: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac Added liblog-unit-tests --gtest_filter=liblog.event_log_tags to check for Shared_Clean: to not be 0 and Anonymous: to be 0 for all processes referencing event-log-tags. Which can include multiple references to /system/etc/event-log-tags and future possible refs to /data/misc/logd/event-log-tags and /dev/event-log-tags. We want failure messages to help point to errant code using the deprecated interface. This change saves 1/4MB of memory or more on a typical system. Test: gTest liblog-unit-tests Bug: 31456426 Change-Id: I9e08e44d9092bd96fe704b5709242e7195281d33
/system/core/logd/LogUtils.h
|
0dd4431072cce3c62876b728cb20aa5b77b11a8d |
|
29-Sep-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: logcat: Replace log/log.h with android/log.h Should use android/log.h instead of log/log.h as a good example to all others. Test: Compile Bug: 26552300 Bug: 31289077 Change-Id: If4c9711eb57267d4707b03d54a932af9de241b13
/system/core/logd/LogUtils.h
|
6a06694a610d103afdf424b0bb69dc8f7f2b8e5a |
|
15-Jul-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: Worst Tag filter enabled for events buffer - Add drop logistics to TagTable - replace uid references to a key reference since it is an UID for most buffers, but a TAG for the events and security buffer - template the find worst entry mechanics into LogFindWorst class Bug: 30118730 Change-Id: Ibea4be2c50d6ff4b39039e371365fed2453f17a2
/system/core/logd/LogUtils.h
|
d048f113a3fa0797cde2887632bcca4bb82b111e |
|
08-Feb-2016 |
Mark Salyzyn <salyzyn@google.com> |
logd: add internal prdebug function Usage: android::prdebug(const char *fmt, ...) __printflike(1, 2); Will add logd prefix tag, log as debug priority in kernel logs, and will suffix a newline if one is not supplied. To be used to aid debugging of the logger only. Change-Id: I217326ef34dc4eb0ea076bacb7a7a8b564c931c3
/system/core/logd/LogUtils.h
|
9c66a58f216e88e46f4ceacbd54599c28a20a729 |
|
15-Dec-2015 |
Mark Salyzyn <salyzyn@google.com> |
logd: Allow flags "eng" and "svelte" in boolean - enhance property_get_bool, drop property_get_bool_svelte - enhance base properties with ro and persist variants - update and fortify README.property - primarily move auditd and kernel logger into a realm where they can be controlled by build properties. - Move logd.klogd to logd.kernel, and add ro.logd.kernel and persist.logd.kernel. - Add ro.logd.auditd and persist.logd.auditd. - Document persist.logd.security - Document log.tag and persist.logd.tag properties. - Document ro.logd.size, persist.logd.size and logd.size properties. Bug: 26178938 Bug: 26029733 Bug: 17760225 Change-Id: Ibc1a497e45d69db5cf52133937f7ba6fb1d6cd21
/system/core/logd/LogUtils.h
|
cdda62b2c1178eca8cb9f5d8c775190736a98e3b |
|
14-Dec-2015 |
Mark Salyzyn <salyzyn@google.com> |
logd: ro.config.low_ram set buffer size to 64K Bug: 25792367 Change-Id: Icae85a7de70b3a71f89b2bf8c80866649f727177
/system/core/logd/LogUtils.h
|
083b037c0740ca00f72429e4457bfdd4b4d4dfa7 |
|
04-Dec-2015 |
Mark Salyzyn <salyzyn@google.com> |
logd: liblog: logcat: Add LOG_ID_SECURITY - Largish commit, buffer and access controls done together - Add LOG_ID_SECURITY binary content log - Add "default" meta buffer - allow LOG_ID_SECURITY only from AID_SYSTEM and AID_ROOT UID & GID - Use __android_log_security() to gate logging - Add __android_log_security_bwrite() native access to security logging. - Add liblog.__security_buffer end-to-end gTest Bug: 26029733 Change-Id: Ibcf5b4660c17c1aa6902c0d93f8ffd29c93d9a93
/system/core/logd/LogUtils.h
|
ddda212faa81d62f637926680cd8163345120f71 |
|
02-Oct-2015 |
Mark Salyzyn <salyzyn@google.com> |
logd: optimize code hotspots Discovered that we had a few libc hotspots. Adjust code to generally reduce or nullify the number of calls to malloc, free, strlen, strcmp, strncmp, memcmp & strncasecmp. Total gain looks to be about 3% of logd's processing time. malloc still contributes to 3%, but all others are now total 0.5%. Bug: 23685592 Change-Id: Ife721121667969260cdb8b055524ae90f5911278
/system/core/logd/LogUtils.h
|
5ac5c6b19364b5b3061a59db796b2357c95c3b64 |
|
28-Aug-2015 |
Mark Salyzyn <salyzyn@google.com> |
logd: Add LogUtils.h Move prototypes from LogBufferElement.h to LogUtils.h Change-Id: I55e42e17e6c997e35b2b78b87fd2f84f8f393282
/system/core/logd/LogUtils.h
|