Merge "Fix number of * in VNDK ABI output."
diff --git a/python-packages/gdbrunner/__init__.py b/python-packages/gdbrunner/__init__.py
index 9cc6fb7..8dff373 100644
--- a/python-packages/gdbrunner/__init__.py
+++ b/python-packages/gdbrunner/__init__.py
@@ -244,6 +244,33 @@
return (open(path, "r"), found_locally)
raise RuntimeError('Could not find executable {}'.format(executable_path))
+def find_executable_path(device, executable_name, run_as_cmd=None):
+ """Find a device executable from its name
+
+ This function calls which on the device to retrieve the absolute path of
+ the executable.
+
+ Args:
+ device: the AndroidDevice object to use.
+ executable_name: the name of the executable to find.
+ run_as_cmd: if necessary, run-as or su command to prepend
+
+ Returns:
+ The absolute path of the executable.
+
+ Raises:
+ RuntimeError: could not find the executable.
+ """
+ cmd = ["which", executable_name]
+ if run_as_cmd:
+ cmd = run_as_cmd + cmd
+
+ try:
+ output, _ = device.shell(cmd)
+ return output
+ except adb.ShellError:
+ raise RuntimeError("Could not find executable '{}' on "
+ "device".format(executable_name))
def find_binary(device, pid, sysroot, run_as_cmd=None):
"""Finds a device executable file corresponding to |pid|."""
diff --git a/scripts/gdbclient.py b/scripts/gdbclient.py
index 2e37e0b..ff593b3 100755
--- a/scripts/gdbclient.py
+++ b/scripts/gdbclient.py
@@ -144,9 +144,15 @@
elif args.run_cmd:
if not args.run_cmd[0]:
sys.exit("empty command passed to -r")
- if not args.run_cmd[0].startswith("/"):
- sys.exit("commands passed to -r must use absolute paths")
run_cmd = args.run_cmd
+ if not run_cmd[0].startswith("/"):
+ try:
+ run_cmd[0] = gdbrunner.find_executable_path(device, args.run_cmd[0],
+ run_as_cmd=args.su_cmd)
+ except RuntimeError:
+ sys.exit("Could not find executable '{}' passed to -r, "
+ "please provide an absolute path.".format(args.run_cmd[0]))
+
binary_file, local = gdbrunner.find_file(device, run_cmd[0], sysroot,
run_as_cmd=args.su_cmd)
if binary_file is None:
diff --git a/tools/logblame/analyze_logs.py b/tools/logblame/analyze_logs.py
new file mode 100755
index 0000000..6956c6c
--- /dev/null
+++ b/tools/logblame/analyze_logs.py
@@ -0,0 +1,262 @@
+#!/usr/bin/env python2.7
+
+import argparse
+import datetime
+import re
+import subprocess
+import sys
+
+import logs
+import ps
+
+DURATION_RE = re.compile("((\\d+)w)?((\\d+)d)?((\\d+)h)?((\\d+)m)?((\\d+)s)?")
+
+class Bucket(object):
+ """Bucket of stats for a particular key managed by the Stats object."""
+ def __init__(self):
+ self.count = 0
+ self.memory = 0
+ self.lines = []
+
+ def __str__(self):
+ return "(%s,%s)" % (self.count, self.memory)
+
+
+class Stats(object):
+ """A group of stats with a particular key, where both memory and count are tracked."""
+ def __init__(self):
+ self._data = dict()
+
+ def add(self, key, logLine):
+ bucket = self._data.get(key)
+ if not bucket:
+ bucket = Bucket()
+ self._data[key] = bucket
+ bucket.count += 1
+ bucket.memory += logLine.memory()
+ bucket.lines.append(logLine)
+
+ def __iter__(self):
+ return self._data.iteritems()
+
+ def data(self):
+ return [(key, bucket) for key, bucket in self._data.iteritems()]
+
+ def byCount(self):
+ result = self.data()
+ result.sort(lambda a, b: -cmp(a[1].count, b[1].count))
+ return result
+
+ def byMemory(self):
+ result = self.data()
+ result.sort(lambda a, b: -cmp(a[1].memory, b[1].memory))
+ return result
+
+
+def ParseDuration(s):
+ """Parse a date of the format .w.d.h.m.s into the number of seconds."""
+ def make_int(index):
+ val = m.group(index)
+ if val:
+ return int(val)
+ else:
+ return 0
+ m = DURATION_RE.match(s)
+ if m:
+ weeks = make_int(2)
+ days = make_int(4)
+ hours = make_int(6)
+ minutes = make_int(8)
+ seconds = make_int(10)
+ return (weeks * 604800) + (days * 86400) + (hours * 3600) + (minutes * 60) + seconds
+ return 0
+
+def FormatMemory(n):
+ """Prettify the number of bytes into gb, mb, etc."""
+ if n >= 1024 * 1024 * 1024:
+ return "%10d gb" % (n / (1024 * 1024 * 1024))
+ elif n >= 1024 * 1024:
+ return "%10d mb" % (n / (1024 * 1024))
+ elif n >= 1024:
+ return "%10d kb" % (n / 1024)
+ else:
+ return "%10d b " % n
+
+def FormateTimeDelta(td):
+ """Format a time duration into the same format we accept on the commandline."""
+ seconds = (td.days * 86400) + (td.seconds) + int(td.microseconds / 1000000)
+ if seconds == 0:
+ return "0s"
+ result = ""
+ if seconds >= 604800:
+ weeks = int(seconds / 604800)
+ seconds -= weeks * 604800
+ result += "%dw" % weeks
+ if seconds >= 86400:
+ days = int(seconds / 86400)
+ seconds -= days * 86400
+ result += "%dd" % days
+ if seconds >= 3600:
+ hours = int(seconds / 3600)
+ seconds -= hours * 3600
+ result += "%dh" % hours
+ if seconds >= 60:
+ minutes = int(seconds / 60)
+ seconds -= minutes * 60
+ result += "%dm" % minutes
+ if seconds > 0:
+ result += "%ds" % seconds
+ return result
+
+
+def WriteResult(totalCount, totalMemory, bucket, text):
+ """Write a bucket in the normalized format."""
+ print "%7d (%2d%%) %s (%2d%%) %s" % (bucket.count, (100 * bucket.count / totalCount),
+ FormatMemory(bucket.memory), (100 * bucket.memory / totalMemory), text)
+
+
+def ParseArgs(argv):
+ parser = argparse.ArgumentParser(description="Process some integers.")
+ parser.add_argument("input", type=str, nargs="?",
+ help="the logs file to read")
+ parser.add_argument("--clear", action="store_true",
+ help="clear the log buffer before running logcat")
+ parser.add_argument("--duration", type=str, nargs=1,
+ help="how long to run for (XdXhXmXs)")
+ parser.add_argument("--rawlogs", type=str, nargs=1,
+ help="file to put the rawlogs into")
+
+ args = parser.parse_args()
+
+ args.durationSec = ParseDuration(args.duration[0]) if args.duration else 0
+
+ return args
+
+
+def main(argv):
+ args = ParseArgs(argv)
+
+ processes = ps.ProcessSet()
+
+ if args.rawlogs:
+ rawlogs = file(args.rawlogs[0], "w")
+ else:
+ rawlogs = None
+
+ # Choose the input
+ if args.input:
+ # From a file of raw logs
+ try:
+ infile = file(args.input, "r")
+ except IOError:
+ sys.stderr.write("Error opening file for read: %s\n" % args.input[0])
+ sys.exit(1)
+ else:
+ # From running adb logcat on an attached device
+ if args.clear:
+ subprocess.check_call(["adb", "logcat", "-c"])
+ cmd = ["adb", "logcat", "-v", "long", "-D", "-v", "uid"]
+ if not args.durationSec:
+ cmd.append("-d")
+ logcat = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ infile = logcat.stdout
+
+ # Do one update because we know we'll need it, but then don't do it again
+ # if we're not streaming them.
+ processes.Update(True)
+ if args.durationSec:
+ processes.doUpdates = True
+
+ totalCount = 0
+ totalMemory = 0
+ byTag = Stats()
+ byPid = Stats()
+ byText = Stats()
+
+ startTime = datetime.datetime.now()
+
+ # Read the log lines from the parser and build a big mapping of everything
+ for logLine in logs.ParseLogcat(infile, processes, args.durationSec):
+ if rawlogs:
+ rawlogs.write("%-10s %s %-6s %-6s %-6s %s/%s: %s\n" %(logLine.buf, logLine.timestamp,
+ logLine.uid, logLine.pid, logLine.tid, logLine.level, logLine.tag, logLine.text))
+
+ totalCount += 1
+ totalMemory += logLine.memory()
+ byTag.add(logLine.tag, logLine)
+ byPid.add(logLine.pid, logLine)
+ byText.add(logLine.text, logLine)
+
+ endTime = datetime.datetime.now()
+
+ # Print the log analysis
+
+ # At this point, everything is loaded, don't bother looking
+ # for new processes
+ processes.doUpdates = False
+
+ print "Top tags by count"
+ print "-----------------"
+ i = 0
+ for k,v in byTag.byCount():
+ WriteResult(totalCount, totalMemory, v, k)
+ if i >= 10:
+ break
+ i += 1
+
+ print
+ print "Top tags by memory"
+ print "------------------"
+ i = 0
+ for k,v in byTag.byMemory():
+ WriteResult(totalCount, totalMemory, v, k)
+ if i >= 10:
+ break
+ i += 1
+
+ print
+ print "Top Processes by memory"
+ print "-----------------------"
+ i = 0
+ for k,v in byPid.byMemory():
+ WriteResult(totalCount, totalMemory, v,
+ "%-8s %s" % (k, processes.FindPid(k).DisplayName()))
+ if i >= 10:
+ break
+ i += 1
+
+ print
+ print "Top Duplicates by count"
+ print "-----------------------"
+ i = 0
+ for k,v in byText.byCount():
+ logLine = v.lines[0]
+ WriteResult(totalCount, totalMemory, v,
+ "%s/%s: %s" % (logLine.level, logLine.tag, logLine.text))
+ if i >= 10:
+ break
+ i += 1
+
+ print
+ print "Top Duplicates by memory"
+ print "-----------------------"
+ i = 0
+ for k,v in byText.byCount():
+ logLine = v.lines[0]
+ WriteResult(totalCount, totalMemory, v,
+ "%s/%s: %s" % (logLine.level, logLine.tag, logLine.text))
+ if i >= 10:
+ break
+ i += 1
+
+ print
+ print "Totals"
+ print "------"
+ print "%7d %s" % (totalCount, FormatMemory(totalMemory))
+
+ print "Actual duration: %s" % FormateTimeDelta(endTime-startTime)
+
+if __name__ == "__main__":
+ main(sys.argv)
+
+# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab:
diff --git a/tools/logblame/app_switch_test b/tools/logblame/app_switch_test
new file mode 100755
index 0000000..14c168a
--- /dev/null
+++ b/tools/logblame/app_switch_test
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+# The intents to launch
+INTENTS="\
+ com.google.android.googlequicksearchbox/.SearchActivity \
+ com.android.settings/.Settings \
+ com.google.android.apps.messaging/.ui.ConversationListActivity \
+ com.google.android.calculator/com.android.calculator2.Calculator \
+ com.google.android.deskclock/com.android.deskclock.DeskClock \
+ com.google.android.contacts/com.android.contacts.activities.PeopleActivity \
+ com.google.android.talk/.SigningInActivity \
+ com.google.android.vr.home/com.google.android.apps.vr.home.app.MainActivity \
+ com.android.documentsui/.Launcher \
+ com.google.android.apps.nexuslauncher/.NexusLauncherActivity \
+ "
+# com.google.android.GoogleCamera/com.android.camera.CameraActivity \
+
+# The files to save output to.
+RAWLOGS_FILE=app-switch-rawlogs.txt
+ANALYSIS_FILE=app-switch-analysis.txt
+
+
+# Turn on the screen and unlock the device
+# TODO: Power on
+adb shell wm dismiss-keyguard
+adb logcat -P ""
+
+# Turn on airplane mode (to reduce background noise caught by other tests)
+airplane_mode_was_on=$(adb shell settings get global airplane_mode_on)
+if [ $airplane_mode_was_on != 1 ] ; then
+ adb shell settings put global airplane_mode_on 1 > /dev/null
+ adb shell am broadcast -a android.intent.action.AIRPLANE_MODE > /dev/null
+ sleep 15
+fi
+
+# Start the analysis process
+$TOP/development/tools/logblame/analyze_logs.py --duration=10m --clear --rawlogs $RAWLOGS_FILE \
+ | tee $ANALYSIS_FILE &
+analyze_pid=$!
+
+# Launch the intents with a 3s gap between them
+for intent in $INTENTS
+do
+ echo Starting: $intent
+ adb shell am start -a android.intent.action.MAIN $intent
+ sleep 4
+done
+
+# Turn the screen off and on
+adb shell input keyevent 26
+adb shell input keyevent 26
+adb shell wm dismiss-keyguard
+
+echo
+echo
+
+# Kill adb to disconnect logcat
+adb kill-server
+
+# Wait for the pyton process to exit
+wait $analyze_pid
+
+# Turn airplane mode back off
+if [ $airplane_mode_was_on == 0 ] ; then
+ adb shell settings put global airplane_mode_on 0 > /dev/null
+ adb shell am broadcast -a android.intent.action.AIRPLANE_MODE > /dev/null
+fi
+
+echo "Wrote raw logs to $RAWLOGS_FILE"
+echo "Wrote analysis to $ANALYSIS_FILE"
+
+
diff --git a/tools/logblame/connectivity_log_test b/tools/logblame/connectivity_log_test
new file mode 100755
index 0000000..2afab61
--- /dev/null
+++ b/tools/logblame/connectivity_log_test
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+# The files to save output to.
+RAWLOGS_FILE=connectivity-rawlogs.txt
+ANALYSIS_FILE=connectivity-analysis.txt
+
+# Turn on the screen and unlock the device
+# TODO: Power on
+adb shell wm dismiss-keyguard
+adb logcat -P ""
+
+airplane_mode_was_on=$(adb shell settings get global airplane_mode_on)
+if [ $airplane_mode_was_on == 1 ] ; then
+ adb shell settings put global airplane_mode_on 0 > /dev/null
+ adb shell am broadcast -a android.intent.action.AIRPLANE_MODE > /dev/null
+ sleep 30
+fi
+
+# Start the analysis process
+$TOP/development/tools/logblame/analyze_logs.py --duration=10m --clear --rawlogs $RAWLOGS_FILE \
+ | tee $ANALYSIS_FILE &
+analyze_pid=$!
+
+# Turn on airplane mode and wait for it to settle
+echo "Turning on airplane mode."
+adb shell settings put global airplane_mode_on 1 > /dev/null
+adb shell am broadcast -a android.intent.action.AIRPLANE_MODE > /dev/null
+sleep 15
+
+# Turn off airplane mode and wait for it to settle
+echo "Turning off airplane mode."
+adb shell settings put global airplane_mode_on 0 > /dev/null
+adb shell am broadcast -a android.intent.action.AIRPLANE_MODE > /dev/null
+sleep 45
+
+# Turn off wifi and then back on
+echo "Turning wifi off"
+adb shell svc wifi disable
+sleep 15
+
+echo "Turning wifi on"
+adb shell svc wifi enable
+sleep 15
+
+
+echo
+echo
+
+# Kill adb to disconnect logcat
+adb kill-server
+
+# Wait for the pyton process to exit
+wait $analyze_pid
+
+echo "Wrote raw logs to $RAWLOGS_FILE"
+echo "Wrote analysis to $ANALYSIS_FILE"
+
+
diff --git a/tools/logblame/logs.py b/tools/logblame/logs.py
new file mode 100644
index 0000000..6982e06
--- /dev/null
+++ b/tools/logblame/logs.py
@@ -0,0 +1,182 @@
+
+import datetime
+import re
+
+BUFFER_BEGIN = re.compile("^--------- beginning of (.*)$")
+BUFFER_SWITCH = re.compile("^--------- switch to (.*)$")
+HEADER = re.compile("^\\[ (\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d.\\d\\d\\d) +(.+?): *(\\d+): *(\\d+) *([EWIDV])/(.*?) *\\]$")
+HEADER_TYPE2 = re.compile("^(\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d.\\d\\d\\d) *(\\d+) *(\\d+) *([EWIDV]) ([^ :]*?): (.*?)$")
+CHATTY_IDENTICAL = re.compile("^.* identical (\\d+) lines$")
+
+STATE_BEGIN = 0
+STATE_BUFFER = 1
+STATE_HEADER = 2
+STATE_TEXT = 3
+STATE_BLANK = 4
+
+class LogLine(object):
+ """Represents a line of android logs."""
+ def __init__(self, buf=None, timestamp=None, uid=None, pid=None, tid=None, level=None,
+ tag=None, text=""):
+ self.buf = buf
+ self.timestamp = timestamp
+ self.uid = uid
+ self.pid = pid
+ self.tid = tid
+ self.level = level
+ self.tag = tag
+ self.text = text
+ self.process = None
+
+ def __str__(self):
+ return "{%s} {%s} {%s} {%s} {%s} {%s}/{%s}: {%s}" % (self.buf, self.timestamp, self.uid,
+ self.pid, self.tid, self.level, self.tag, self.text)
+
+ def __eq__(self, other):
+ return (
+ self.buf == other.buf
+ and self.timestamp == other.timestamp
+ and self.uid == other.uid
+ and self.pid == other.pid
+ and self.tid == other.tid
+ and self.level == other.level
+ and self.tag == other.tag
+ and self.text == other.text
+ )
+
+ def clone(self):
+ logLine = LogLine(self.buf, self.timestamp, self.uid, self.pid, self.tid, self.level,
+ self.tag, self.text)
+ logLine.process = self.process
+ return logLine
+
+ def memory(self):
+ """Return an estimate of how much memory is used for the log.
+ 32 bytes of header + 8 bytes for the pointer + the length of the tag and the text.
+ This ignores the overhead of the list of log lines itself."""
+ return 32 + 8 + len(self.tag) + 1 + len(self.text) + 1
+
+
+def ParseLogcat(f, processes, duration=None):
+ previous = None
+ for logLine in ParseLogcatInner(f, processes, duration):
+ if logLine.tag == "chatty" and logLine.level == "I":
+ m = CHATTY_IDENTICAL.match(logLine.text)
+ if m:
+ for i in range(int(m.group(1))):
+ clone = previous.clone()
+ clone.timestamp = logLine.timestamp
+ yield clone
+ continue
+ previous = logLine
+ yield logLine
+
+
+def ParseLogcatInner(f, processes, duration=None):
+ """Parses a file object containing log text and returns a list of LogLine objects."""
+ result = []
+
+ buf = None
+ timestamp = None
+ uid = None
+ pid = None
+ tid = None
+ level = None
+ tag = None
+
+ state = STATE_BEGIN
+ logLine = None
+ previous = None
+
+ if duration:
+ endTime = datetime.datetime.now() + datetime.timedelta(seconds=duration)
+
+ # TODO: use a nonblocking / timeout read so we stop if there are
+ # no logs coming out (haha joke, right!)
+ for line in f:
+ if duration and endTime <= datetime.datetime.now():
+ break
+
+ if len(line) > 0 and line[-1] == '\n':
+ line = line[0:-1]
+
+ m = BUFFER_BEGIN.match(line)
+ if m:
+ if logLine:
+ yield logLine
+ logLine = None
+ buf = m.group(1)
+ state = STATE_BUFFER
+ continue
+
+ m = BUFFER_SWITCH.match(line)
+ if m:
+ if logLine:
+ yield logLine
+ logLine = None
+ buf = m.group(1)
+ state = STATE_BUFFER
+ continue
+
+ m = HEADER.match(line)
+ if m:
+ if logLine:
+ yield logLine
+ logLine = LogLine(
+ buf=buf,
+ timestamp=m.group(1),
+ uid=m.group(2),
+ pid=m.group(3),
+ tid=m.group(4),
+ level=m.group(5),
+ tag=m.group(6)
+ )
+ previous = logLine
+ logLine.process = processes.FindPid(logLine.pid, logLine.uid)
+ state = STATE_HEADER
+ continue
+
+ m = HEADER_TYPE2.match(line)
+ if m:
+ if logLine:
+ yield logLine
+ logLine = LogLine(
+ buf=buf,
+ timestamp=m.group(1),
+ uid="0",
+ pid=m.group(2),
+ tid=m.group(3),
+ level=m.group(4),
+ tag=m.group(5),
+ text=m.group(6)
+ )
+ previous = logLine
+ logLine.process = processes.FindPid(logLine.pid, logLine.uid)
+ state = STATE_BEGIN
+ continue
+
+ if not len(line):
+ if state == STATE_BLANK:
+ if logLine:
+ logLine.text += "\n"
+ state = STATE_BLANK
+ continue
+
+ if logLine:
+ if state == STATE_HEADER:
+ logLine.text += line
+ elif state == STATE_TEXT:
+ logLine.text += "\n"
+ logLine.text += line
+ elif state == STATE_BLANK:
+ if len(logLine.text):
+ logLine.text += "\n"
+ logLine.text += "\n"
+ logLine.text += line
+ state = STATE_TEXT
+
+ if logLine:
+ yield logLine
+
+
+# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab:
diff --git a/tools/logblame/medium_idle_test b/tools/logblame/medium_idle_test
new file mode 100755
index 0000000..c4813b1
--- /dev/null
+++ b/tools/logblame/medium_idle_test
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# The files to save output to.
+RAWLOGS_FILE=medium-idle-rawlogs.txt
+ANALYSIS_FILE=medium-idle-analysis.txt
+
+# Turn on the screen and unlock the device
+# TODO: Power on
+adb shell wm dismiss-keyguard
+
+# Start the analysis process
+$TOP/development/tools/logblame/analyze_logs.py --duration=4h --clear --rawlogs $RAWLOGS_FILE \
+ | tee $ANALYSIS_FILE &
+analyze_pid=$!
+
+# Wait for the pyton process to exit
+echo "waiting... analyze_pid" $analyze_pid
+wait $analyze_pid
+
+echo "Wrote raw logs to $RAWLOGS_FILE"
+echo "Wrote analysis to $ANALYSIS_FILE"
+
+
diff --git a/tools/logblame/power_toggle_test b/tools/logblame/power_toggle_test
new file mode 100755
index 0000000..508c49f
--- /dev/null
+++ b/tools/logblame/power_toggle_test
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# The files to save output to.
+RAWLOGS_FILE=power-toggle-rawlogs.txt
+ANALYSIS_FILE=power-toggle-analysis.txt
+
+
+# Turn on the screen and unlock the device
+# TODO: Power on
+adb shell wm dismiss-keyguard
+adb logcat -P ""
+
+# Start the analysis process
+$TOP/development/tools/logblame/analyze_logs.py --duration=10m --clear --rawlogs $RAWLOGS_FILE \
+ | tee $ANALYSIS_FILE &
+analyze_pid=$!
+
+sleep 5
+for i in {0..5..1}; do
+ adb shell input keyevent KEYCODE_POWER
+ sleep 5
+ adb shell input keyevent KEYCODE_POWER
+ sleep 5
+ adb shell wm dismiss-keyguard
+ sleep 5
+done
+
+# Kill adb to disconnect logcat
+adb kill-server
+
+# Wait for the pyton process to exit
+wait $analyze_pid
+
+echo "Wrote raw logs to $RAWLOGS_FILE"
+echo "Wrote analysis to $ANALYSIS_FILE"
+
+
diff --git a/tools/logblame/ps.py b/tools/logblame/ps.py
new file mode 100644
index 0000000..2016016
--- /dev/null
+++ b/tools/logblame/ps.py
@@ -0,0 +1,142 @@
+import csv
+import re
+import subprocess
+
+HEADER_RE = re.compile("USER\\s*PID\\s*PPID\\s*VSIZE\\s*RSS\\s*WCHAN\\s*PC\\s*NAME")
+PROCESS_RE = re.compile("(\\S+)\\s+(\\d+)\\s+(\\d+)\\s+\\d+\\s+\\d+\\s+\\S+\\s+.\\S+\\s+\\S+\\s+(.*)")
+
+ANDROID_UID_RE = re.compile("u(\\d)+_([0-9a-fA-F]+)")
+UID_RE = re.compile("(\\d)+")
+
+class Process(object):
+ def __init__(self, uid, pid, ppid, name):
+ self.uid = uid
+ self.pid = pid
+ self.ppid = ppid
+ self.name = name
+
+ def DisplayName(self):
+ if self.name:
+ return self.name
+ if self.uid:
+ return self.uid.name
+ return self.pid
+
+ def __str__(self):
+ return "Process(uid=%s, pid=%s, name=%s)" % (self.uid, self.pid, self.name)
+
+class Uid(object):
+ def __init__(self, uid, name):
+ self.uid = uid
+ self.name = name
+
+ def __str__(self):
+ return "Uid(id=%s, name=%s)" % (self.uid, self.name)
+
+class ProcessSet(object):
+ def __init__(self):
+ self._processes = dict()
+ self._uids = dict()
+ self._pidUpdateCount = 0
+ self._uidUpdateCount = 0
+ self.doUpdates = False
+
+ def Update(self, force=False):
+ self.UpdateUids(force)
+ self.UpdateProcesses(force)
+
+ def UpdateProcesses(self, force=False):
+ if not (self.doUpdates or force):
+ return
+ self._pidUpdateCount += 1
+ try:
+ text = subprocess.check_output(["adb", "shell", "ps"])
+ except subprocess.CalledProcessError:
+ return # oh well. we won't get the pid
+ lines = ParsePs(text)
+ for line in lines:
+ if not self._processes.has_key(line[1]):
+ uid = self.FindUid(ParseUid(line[0]))
+ self._processes[line[1]] = Process(uid, line[1], line[2], line[3])
+
+ def UpdateUids(self, force=False):
+ if not (self.doUpdates or force):
+ return
+ self._uidUpdateCount += 1
+ try:
+ text = subprocess.check_output(["adb", "shell", "dumpsys", "package", "--checkin"])
+ except subprocess.CalledProcessError:
+ return # oh well. we won't get the pid
+ lines = ParseUids(text)
+ for line in lines:
+ if not self._uids.has_key(line[0]):
+ self._uids[line[1]] = Uid(*line)
+
+ def FindPid(self, pid, uid=None):
+ """Try to find the Process object for the given pid.
+ If it can't be found, do an update. If it still can't be found after that,
+ create a syntheitc Process object, add that to the list, and return that.
+ That can only happen after the process has died, and we just missed our
+ chance to find it. The pid won't come back.
+ """
+ result = self._processes.get(pid)
+ if not result:
+ self.UpdateProcesses()
+ result = self._processes.get(pid)
+ if not result:
+ if uid:
+ uid = self._uids.get(uid)
+ result = Process(uid, pid, None, None)
+ self._processes[pid] = result
+ return result
+
+ def FindUid(self, uid):
+ result = self._uids.get(uid)
+ if not result:
+ self.UpdateUids()
+ result = self._uids.get(uid)
+ if not result:
+ result = Uid(uid, uid)
+ self._uids[uid] = result
+ return result
+
+ def UpdateCount(self):
+ return (self._pidUpdateCount, self._uidUpdateCount)
+
+ def Print(self):
+ for process in self._processes:
+ print process
+ for uid in self._uids:
+ print uid
+
+def ParsePs(text):
+ """Parses the output of ps, and returns it as a list of tuples of (user, pid, ppid, name)"""
+ result = []
+ for line in text.splitlines():
+ m = HEADER_RE.match(line)
+ if m:
+ continue
+ m = PROCESS_RE.match(line)
+ if m:
+ result.append((m.group(1), m.group(2), m.group(3), m.group(4)))
+ continue
+ return result
+
+
+def ParseUids(text):
+ """Parses the output of dumpsys package --checkin and returns the uids as a list of
+ tuples of (uid, name)"""
+ return [(x[2], x[1]) for x in csv.reader(text.split("\n")) if len(x) and x[0] == "pkg"]
+
+
+def ParseUid(text):
+ m = ANDROID_UID_RE.match(text)
+ if m:
+ result = int("0x" + m.group(2), 16)
+ return "(%s/%s/%s)" % (m.group(1), m.group(2), result)
+ m = UID_RE.match(text)
+ if m:
+ return "[%s]" % m.group(1)
+ return text
+
+# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab:
diff --git a/tools/logblame/sample.txt b/tools/logblame/sample.txt
new file mode 100644
index 0000000..725adb8
--- /dev/null
+++ b/tools/logblame/sample.txt
@@ -0,0 +1,2947 @@
+--------- beginning of main
+[ 01-01 15:12:06.640 root: 600: 600 I/chatty ]
+uid=0(root) /system/bin/thermal-engine expire 3 lines
+
+[ 01-01 15:12:16.640 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1021): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:12:24.572 10081:20049:20054 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+--------- beginning of system
+[ 01-01 15:12:24.863 1000: 2272: 3628 I/PowerManagerService ]
+Going to sleep due to power button (uid 1000)...
+
+--------- switch to main
+[ 01-01 15:12:24.572 10081:20049:20054 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:12:25.055 10081:20049:20054 I/zygote64 ]
+Compiler allocated 6MB to compile void android.view.ViewRootImpl.performTraversals()
+
+--------- switch to system
+[ 01-01 15:12:25.343 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+[ 01-01 15:12:25.344 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+[ 01-01 15:12:25.347 1000: 2272: 3582 I/VrManagerService ]
+VR mode is disallowed
+
+--------- switch to main
+[ 01-01 15:12:25.431 1000: 2272: 3592 I/sensors ]
+activate
+
+[ 01-01 15:12:25.436 1000: 2272: 3592 I/nanohub ]
+queueActivate: sensor=28, handle=30, enable=0
+
+[ 01-01 15:12:25.437 1000: 2272: 3592 V/KeyguardServiceDelegate ]
+onScreenTurnedOff()
+
+[ 01-01 15:12:25.440 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=0, state=3
+
+
+[ 01-01 15:12:25.441 1000: 2272: 3592 I/sensors ]
+activate
+
+[ 01-01 15:12:25.443 1000: 2272: 3592 I/nanohub ]
+queueActivate: sensor=12, handle=7, enable=0
+
+--------- switch to system
+[ 01-01 15:12:25.448 1000: 2272: 3590 I/DisplayManagerService ]
+Display device changed state: "Built-in Screen", OFF
+
+--------- switch to main
+[ 01-01 15:12:25.453 1000: 398: 398 D/SurfaceFlinger ]
+Set power mode=0, type=0 flinger=0x7542c6c000
+
+--------- switch to system
+[ 01-01 15:12:25.464 1000: 2272: 3614 W/LocalDisplayAdapter ]
+Unable to find color mode 0, ignoring request.
+
+--------- switch to main
+[ 01-01 15:12:25.466 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Setting mode 0 on display: 0
+
+[ 01-01 15:12:25.595 1000: 398: 462 I/qdhwcomposer ]
+handle_blank_event: dpy:0 panel power state: 0
+
+[ 01-01 15:12:25.599 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Done setting mode 0 on display 0
+
+[ 01-01 15:12:25.599 1000: 2272: 3787 D/SurfaceControl ]
+Excessive delay in setPowerMode(): 146ms
+
+--------- switch to system
+[ 01-01 15:12:25.604 1000: 2272: 3592 I/DreamManagerService ]
+Entering dreamland.
+
+[ 01-01 15:12:25.605 1000: 2272: 3592 I/PowerManagerService ]
+Dozing...
+
+[ 01-01 15:12:25.607 1000: 2272: 3588 I/DreamController ]
+Starting dream: name=ComponentInfo{com.android.systemui/com.android.systemui.doze.DozeService}, isTest=false, canDoze=true, userId=0
+
+--------- switch to main
+[ 01-01 15:12:25.643 1000: 2272: 8012 I/sensors ]
+batch
+
+[ 01-01 15:12:25.646 1000: 2272: 8012 I/nanohub ]
+queueBatch: sensor=24, handle=20, period=1000000, latency=0
+
+[ 01-01 15:12:25.646 1000: 2272: 8012 I/sensors ]
+activate
+
+[ 01-01 15:12:25.648 1000: 2272: 8012 I/nanohub ]
+queueActivate: sensor=24, handle=20, enable=1
+
+[ 01-01 15:12:25.652 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 1
+
+
+[ 01-01 15:12:25.654 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=4
+
+
+[ 01-01 15:12:25.656 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=3
+
+
+[ 01-01 15:12:25.658 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered on, new state 2
+
+
+--------- switch to system
+[ 01-01 15:12:25.684 1000: 2272: 4217 I/ActivityManager ]
+Setting hasTopUi=true for pid=3812
+
+--------- switch to main
+[ 01-01 15:12:25.694 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:12:25.723 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:12:25.730 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:12:25.731 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:12:25.731 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:12:25.731 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:12:25.898 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back HOME* RECENT* clock search quick_settings >
+
+[ 01-01 15:12:26.644 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1022): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:12:26.694 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:12:27.695 1041: 541: 678 I/chatty ]
+uid=1041(audioserver) MediaLogNotifie identical 1 line
+
+[ 01-01 15:12:28.696 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:12:36.647 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1023): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:12:36.858 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] detected still, confidence: 92, votes: 3, motionConfidence: 2
+
+
+[ 01-01 15:12:46.650 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1024): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:12:56.654 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1025): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:12:56.898 1000: 2272: 5402 D/WificondControl ]
+Scan result ready event
+
+[ 01-01 15:12:56.951 1000: 2272: 3755 W/WifiConfigManager ]
+Looking up network with invalid networkId -1
+
+[ 01-01 15:13:06.657 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1026): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:13:26.664 root: 600: 600 I/chatty ]
+uid=0(root) /system/bin/thermal-engine identical 2 lines
+
+[ 01-01 15:13:36.667 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1029): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:13:40.125 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] detected still, confidence: 92, votes: 3, motionConfidence: 7
+
+
+[ 01-01 15:13:46.670 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1030): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:13:56.674 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1031): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:13:56.996 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] sending event 0x00000001
+
+[ 01-01 15:13:57.005 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered off, new state 0
+
+
+[ 01-01 15:13:57.007 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 0
+
+
+[ 01-01 15:13:57.011 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=0, state=5
+
+
+[ 01-01 15:13:57.014 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=0, state=3
+
+
+[ 01-01 15:13:57.029 1000: 2272: 5447 I/sensors ]
+batch
+
+[ 01-01 15:13:57.032 1000: 2272: 5447 I/nanohub ]
+queueBatch: sensor=24, handle=20, period=1000000, latency=0
+
+[ 01-01 15:13:57.032 1000: 2272: 5447 I/sensors ]
+activate
+
+[ 01-01 15:13:57.035 1000: 2272: 5447 I/nanohub ]
+queueActivate: sensor=24, handle=20, enable=1
+
+[ 01-01 15:13:57.037 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 1
+
+
+--------- switch to system
+[ 01-01 15:13:57.038 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+--------- switch to main
+[ 01-01 15:13:57.038 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=4
+
+
+--------- switch to system
+[ 01-01 15:13:57.039 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+[ 01-01 15:13:57.039 1000: 2272: 3592 I/DisplayPowerController ]
+Blocking screen on until initial contents have been drawn.
+
+--------- switch to main
+[ 01-01 15:13:57.040 1000: 2272: 3592 V/KeyguardServiceDelegate ]
+onScreenTurnedOn(showListener = com.android.server.policy.PhoneWindowManager$2@cb6ff88)
+
+[ 01-01 15:13:57.043 1000: 398: 398 D/SurfaceFlinger ]
+Set power mode=1, type=0 flinger=0x7542c6c000
+
+--------- switch to system
+[ 01-01 15:13:57.043 1000: 2272: 3590 I/DisplayManagerService ]
+Display device changed state: "Built-in Screen", DOZE
+
+--------- switch to main
+[ 01-01 15:13:57.043 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Setting mode 1 on display: 0
+
+[ 01-01 15:13:57.047 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=3
+
+
+[ 01-01 15:13:57.050 1000: 2272: 4464 I/sensors ]
+batch
+
+[ 01-01 15:13:57.050 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered on, new state 2
+
+
+--------- switch to system
+[ 01-01 15:13:57.058 1000: 2272: 3614 W/LocalDisplayAdapter ]
+Unable to find color mode 0, ignoring request.
+
+--------- switch to main
+[ 01-01 15:13:57.059 1000: 2272: 4464 I/nanohub ]
+queueBatch: sensor=13, handle=6, period=200000000, latency=0
+
+[ 01-01 15:13:57.059 1000: 2272: 4464 I/sensors ]
+activate
+
+[ 01-01 15:13:57.074 1000: 2272: 4464 I/nanohub ]
+queueActivate: sensor=13, handle=6, enable=1
+
+[ 01-01 15:13:57.084 1000: 2272: 4088 V/KeyguardServiceDelegate ]
+**** SHOWN CALLED ****
+
+[ 01-01 15:13:57.095 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+--------- switch to system
+[ 01-01 15:13:57.166 1000: 2272: 3592 I/DisplayPowerController ]
+Unblocked screen on after 127 ms
+
+--------- switch to main
+[ 01-01 15:13:57.167 1000: 2272: 3592 V/KeyguardServiceDelegate ]
+onScreenTurnedOn()
+
+[ 01-01 15:13:57.298 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Done setting mode 1 on display 0
+
+[ 01-01 15:13:57.298 1000: 398: 462 I/qdhwcomposer ]
+handle_blank_event: dpy:0 panel power state: 2
+
+[ 01-01 15:13:57.305 1000: 2272: 3787 D/SurfaceControl ]
+Excessive delay in setPowerMode(): 262ms
+
+--------- switch to system
+[ 01-01 15:13:57.395 1000: 2272: 3628 I/PowerManagerService ]
+Waking up from dozing (uid 1000)...
+
+--------- switch to main
+[ 01-01 15:13:57.400 1000: 2272: 2272 I/sensors ]
+batch
+
+[ 01-01 15:13:57.403 1000: 2272: 2272 I/nanohub ]
+queueBatch: sensor=28, handle=30, period=66667000, latency=0
+
+[ 01-01 15:13:57.403 1000: 2272: 2272 I/sensors ]
+activate
+
+--------- switch to system
+[ 01-01 15:13:57.404 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+[ 01-01 15:13:57.405 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+--------- switch to main
+[ 01-01 15:13:57.406 1000: 2272: 2272 I/nanohub ]
+queueActivate: sensor=28, handle=30, enable=1
+
+[ 01-01 15:13:57.406 1000: 2272: 2272 V/KeyguardServiceDelegate ]
+onStartedWakingUp()
+
+[ 01-01 15:13:57.409 1000: 2272: 3592 I/sensors ]
+batch
+
+[ 01-01 15:13:57.412 1000: 2272: 3592 I/nanohub ]
+queueBatch: sensor=12, handle=7, period=250000000, latency=0
+
+[ 01-01 15:13:57.412 1000: 2272: 3592 I/sensors ]
+activate
+
+[ 01-01 15:13:57.414 1000: 2272: 3592 I/nanohub ]
+queueActivate: sensor=12, handle=7, enable=1
+
+[ 01-01 15:13:57.418 1000: 398: 398 D/SurfaceFlinger ]
+Set power mode=2, type=0 flinger=0x7542c6c000
+
+[ 01-01 15:13:57.418 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Setting mode 2 on display: 0
+
+--------- switch to system
+[ 01-01 15:13:57.418 1000: 2272: 3590 I/DisplayManagerService ]
+Display device changed state: "Built-in Screen", ON
+
+[ 01-01 15:13:57.419 1000: 2272: 3582 I/ActivityManager ]
+Killing 14363:com.google.android.ims/u0a94 (adj 902): empty for 1839s
+
+[ 01-01 15:13:57.420 1000: 2272: 3582 I/ActivityManager ]
+Killing 14629:com.android.cellbroadcastreceiver/u0a5 (adj 904): empty for 1839s
+
+[ 01-01 15:13:57.421 1000: 2272: 3582 I/ActivityManager ]
+Killing 14601:org.codeaurora.ims/1001 (adj 904): empty for 1839s
+
+[ 01-01 15:13:57.422 1000: 2272: 3582 I/ActivityManager ]
+Killing 14575:com.verizon.omadm/u0a9 (adj 904): empty for 1839s
+
+[ 01-01 15:13:57.423 1000: 2272: 3582 I/ActivityManager ]
+Killing 14301:com.google.android.carriersetup/u0a93 (adj 904): empty for 1839s
+
+--------- switch to main
+[ 01-01 15:13:57.423 1000: 398: 462 I/qdhwcomposer ]
+handle_blank_event: dpy:0 panel power state: 1
+
+--------- switch to system
+[ 01-01 15:13:57.423 1000: 2272: 3582 I/ActivityManager ]
+Killing 14132:com.android.sdm.plugins.sprintdm/1001 (adj 904): empty for 1839s
+
+[ 01-01 15:13:57.424 1000: 2272: 3582 I/ActivityManager ]
+Killing 14711:com.lge.HiddenMenu/1000 (adj 906): empty for 1841s
+
+[ 01-01 15:13:57.431 1000: 2272: 3592 I/DreamManagerService ]
+Gently waking up from dream.
+
+[ 01-01 15:13:57.433 1000: 2272: 3614 W/LocalDisplayAdapter ]
+Unable to find color mode 0, ignoring request.
+
+--------- switch to main
+[ 01-01 15:13:57.450 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+--------- switch to system
+[ 01-01 15:13:57.454 1000: 2272: 8012 I/DreamManagerService ]
+Leaving dreamland.
+
+[ 01-01 15:13:57.455 1000: 2272: 3588 I/DreamController ]
+Stopping dream: name=ComponentInfo{com.android.systemui/com.android.systemui.doze.DozeService}, isTest=false, canDoze=true, userId=0
+
+--------- switch to main
+[ 01-01 15:13:57.495 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Done setting mode 2 on display 0
+
+[ 01-01 15:13:57.502 1000: 2272: 3578 I/sensors ]
+activate
+
+[ 01-01 15:13:57.504 1000: 2272: 3578 I/nanohub ]
+queueActivate: sensor=24, handle=20, enable=0
+
+[ 01-01 15:13:57.506 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_TECH_CFG_EVT; status=0x0
+
+[ 01-01 15:13:57.509 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_PROTO_CFG_EVT; status=0x0
+
+[ 01-01 15:13:57.511 nfc: 4175:20146 D/BrcmNfcJni ]
+RoutingManager::commitRouting
+
+[ 01-01 15:13:57.511 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 0
+
+
+[ 01-01 15:13:57.512 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_UPDATED_EVT
+
+[ 01-01 15:13:57.514 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:13:57.514 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:13:57.514 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:13:57.515 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered off, new state 0
+
+
+[ 01-01 15:13:57.516 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:13:57.552 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:13:57.561 10036: 3812: 3819 I/chatty ]
+uid=10036(u0_a36) Jit thread pool identical 4 lines
+
+[ 01-01 15:13:57.568 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:13:58.164 1000: 2272: 3617 I/nanohub ]
+osLog: [WO] rotation changed to: ******* 0 *******
+
+
+[ 01-01 15:13:58.194 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:13:58.450 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:13:58.730 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back HOME RECENT clock search quick_settings >
+
+--------- switch to system
+[ 01-01 15:13:58.812 1000: 2272: 3582 I/VrManagerService ]
+VR mode is allowed
+
+--------- switch to main
+[ 01-01 15:13:58.813 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back HOME RECENT clock search quick_settings >
+
+[ 01-01 15:13:58.997 1000: 2272: 8012 I/sensors ]
+activate
+
+[ 01-01 15:13:58.999 1000: 2272: 8012 I/nanohub ]
+queueActivate: sensor=13, handle=6, enable=0
+
+[ 01-01 15:13:59.042 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:13:59.043 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:13:59.043 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:13:59.043 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:13:59.054 nfc: 4175: 4346 E/BrcmNfcJni ]
+nfaConnectionCallback: unknown event ????
+
+[ 01-01 15:13:59.054 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_TECH_CFG_EVT; status=0x0
+
+[ 01-01 15:13:59.057 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_PROTO_CFG_EVT; status=0x0
+
+[ 01-01 15:13:59.057 nfc: 4175:20160 D/BrcmNfcJni ]
+RoutingManager::commitRouting
+
+[ 01-01 15:13:59.057 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_UPDATED_EVT
+
+[ 01-01 15:13:59.109 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back home* recent* clock search quick_settings >
+
+[ 01-01 15:13:59.156 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:13:59.308 10018: 4514: 4514 I/chatty ]
+uid=10018(u0_a18) com.google.android.gms identical 18 lines
+
+[ 01-01 15:13:59.319 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:13:59.450 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+--------- switch to system
+[ 01-01 15:13:59.462 1000: 2272: 5450 I/ActivityManager ]
+Setting hasTopUi=false for pid=3812
+
+--------- switch to main
+[ 01-01 15:14:00.090 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:00.097 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:00.098 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:00.098 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:00.098 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:00.123 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:00.123 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+--------- switch to system
+[ 01-01 15:14:00.192 1000: 2272: 3627 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000
+
+--------- switch to main
+[ 01-01 15:14:00.451 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:00.458 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:00.458 1000: 2272: 3635 I/OpenGLRenderer ]
+Initialized EGL, version 1.4
+
+[ 01-01 15:14:00.458 1000: 2272: 3635 D/OpenGLRenderer ]
+Swap behavior 2
+
+[ 01-01 15:14:00.564 10038:18491:18672 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:00.565 1000: 2272: 2282 I/zygote64 ]
+Background concurrent copying GC freed 16057(13MB) AllocSpace objects, 0(0B) LOS objects, 42% free, 15MB/27MB, paused 530us total 107.155ms
+
+[ 01-01 15:14:00.642 10038:18491:18491 I/OptInState ]
+There is a new client and it does not support opt-in. Dropping request.
+
+[ 01-01 15:14:00.648 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:00.655 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:00.655 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:00.657 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:00.664 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:00.664 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:00.666 10038:18491:19016 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:00.680 10038:18491:19008 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@4fc0a
+
+[ 01-01 15:14:00.683 1041: 541: 5248 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:00.685 1041: 541:20182 I/AudioFlinger ]
+AudioFlinger's thread 0xf1220600 tid=20182 ready to run
+
+[ 01-01 15:14:00.699 10038:18491:19008 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@4fc0a
+
+[ 01-01 15:14:00.699 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:00.702 1041: 541:20183 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:00.702 1041: 541:20183 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:00.702 1041: 541:20183 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:00.704 10038:18491:19015 W/LocationOracle ]
+No location history returned by ContextManager
+
+[ 01-01 15:14:00.711 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:00.712 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:00.720 1041: 541:20183 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:00.720 1041: 541:20183 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:00.733 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:00.737 10038:18491:18502 I/zygote64 ]
+Background concurrent copying GC freed 3431(3MB) AllocSpace objects, 1(68KB) LOS objects, 49% free, 8MB/17MB, paused 6.968ms total 70.367ms
+
+[ 01-01 15:14:00.796 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:00.814 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:00.870 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:00.876 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+[ 01-01 15:14:00.979 1000: 2272: 5401 D/WificondControl ]
+Scan result ready event
+
+[ 01-01 15:14:01.029 1000: 2272: 3755 W/WifiConfigManager ]
+Looking up network with invalid networkId -1
+
+[ 01-01 15:14:01.119 10018: 5497:19840 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:01.341 10018: 5497:19650 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:01.347 10018: 5497:20187 I/PlaceInferenceEngine ]
+[anon] Changed inference mode: 105
+
+[ 01-01 15:14:01.348 10018: 5497:20188 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:01.352 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:01.378 10018: 5497:20032 W/ctxmgr ]
+[AclManager]No 3 for (accnt=account#-517948760#, com.google.android.googlequicksearchbox(10038):com.google.android.googlequicksearchbox, vrsn=10298000, 1, 3pPkg = null , 3pMdlId = null). Was: 3 for 18, account#-517948760#
+
+[ 01-01 15:14:01.383 1000: 2272: 4464 I/sensors ]
+batch
+
+[ 01-01 15:14:01.387 10038:18491:19015 W/zygote64 ]
+Long monitor contention with owner NonUserFacing9 (19135) at boolean android.os.BinderProxy.transactNative(int, android.os.Parcel, android.os.Parcel, int)(Binder.java:-2) waiters=0 in boolean com.google.android.apps.gsa.staticplugins.q.g.aJV() for 606ms
+
+[ 01-01 15:14:01.395 10018: 5497:19840 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:01.395 1000: 2272: 4464 I/nanohub ]
+queueBatch: sensor=1, handle=1, period=20000000, latency=0
+
+[ 01-01 15:14:01.395 1000: 2272: 4464 I/sensors ]
+activate
+
+[ 01-01 15:14:01.401 1000: 2272: 4464 I/nanohub ]
+queueActivate: sensor=1, handle=1, enable=1
+
+[ 01-01 15:14:01.454 10018: 5497:20032 E/ctxmgr ]
+[ProducerStatusImpl]updateStateForNewContextData: inactive, contextName=7
+
+[ 01-01 15:14:01.505 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:01.513 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:01.547 10018: 5497:20187 I/Places ]
+?: PlacesBleScanner start() with priority 2
+
+[ 01-01 15:14:01.548 10018: 5497:20187 I/PlaceInferenceEngine ]
+[anon] Changed inference mode: 102
+
+[ 01-01 15:14:01.570 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:01.631 10018: 5497:20187 W/Places ]
+?: Failed to download inference model weights
+
+
+[ 01-01 15:14:01.631 10018: 5497:20187 W/PlaceInferenceEngine ]
+Failed to download model weights. Status code: 7
+
+[ 01-01 15:14:01.639 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:02.091 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:02.094 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:02.094 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:02.094 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:02.094 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+--------- switch to system
+[ 01-01 15:14:02.097 1000: 2272: 5450 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[435,1254][646,1507] (has extras)} from uid 10038
+
+--------- switch to main
+[ 01-01 15:14:02.134 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:02.134 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:02.214 1000:14206:14206 I/zygote64 ]
+Starting a blocking GC Explicit
+
+[ 01-01 15:14:02.265 1000:14206:14206 I/zygote64 ]
+Explicit concurrent copying GC freed 2205(1093KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/7MB, paused 357us total 50.228ms
+
+[ 01-01 15:14:02.270 1000:14206:14206 I/zygote64 ]
+Starting a blocking GC Explicit
+
+[ 01-01 15:14:02.300 1000:14206:14206 I/zygote64 ]
+Explicit concurrent copying GC freed 217(778KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/7MB, paused 163us total 29.425ms
+
+[ 01-01 15:14:02.306 1000:14206:14206 E/StrictMode ]
+class com.android.settings.SubSettings; instances=2; limit=1
+android.os.StrictMode$InstanceCountViolation: class com.android.settings.SubSettings; instances=2; limit=1
+ at android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1)
+
+
+--------- switch to system
+[ 01-01 15:14:02.364 1000:14206:14206 E/ActivityThread ]
+Activity com.android.settings.SubSettings has leaked ServiceConnection android.bluetooth.BluetoothA2dp$2@97ec6ff that was originally bound here
+android.app.ServiceConnectionLeaked: Activity com.android.settings.SubSettings has leaked ServiceConnection android.bluetooth.BluetoothA2dp$2@97ec6ff that was originally bound here
+ at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1485)
+ at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1377)
+ at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1592)
+ at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1552)
+ at android.content.ContextWrapper.bindServiceAsUser(ContextWrapper.java:699)
+ at android.bluetooth.BluetoothA2dp.doBind(BluetoothA2dp.java:200)
+ at android.bluetooth.BluetoothA2dp.<init>(BluetoothA2dp.java:193)
+ at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:2044)
+ at com.android.settings.development.DevelopmentSettings.onCreateView(DevelopmentSettings.java:712)
+ at android.app.Fragment.performCreateView(Fragment.java:2554)
+ at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1262)
+ at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1516)
+ at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1578)
+ at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:2999)
+ at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2951)
+ at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:178)
+ at android.app.Activity.performCreateCommon(Activity.java:6899)
+ at android.app.Activity.performCreate(Activity.java:6907)
+ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1212)
+ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2768)
+ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2890)
+ at android.app.ActivityThread.-wrap11(Unknown Source:0)
+ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1591)
+ at android.os.Handler.dispatchMessage(Handler.java:105)
+ at android.os.Looper.loop(Looper.java:164)
+ at android.app.ActivityThread.main(ActivityThread.java:6537)
+ at java.lang.reflect.Method.invoke(Native Method)
+ at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
+ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
+
+
+--------- switch to main
+[ 01-01 15:14:02.366 1000:14206:14206 E/StrictMode ]
+null
+android.app.ServiceConnectionLeaked: Activity com.android.settings.SubSettings has leaked ServiceConnection android.bluetooth.BluetoothA2dp$2@97ec6ff that was originally bound here
+ at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1485)
+ at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1377)
+ at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1592)
+ at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1552)
+ at android.content.ContextWrapper.bindServiceAsUser(ContextWrapper.java:699)
+ at android.bluetooth.BluetoothA2dp.doBind(BluetoothA2dp.java:200)
+ at android.bluetooth.BluetoothA2dp.<init>(BluetoothA2dp.java:193)
+ at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:2044)
+ at com.android.settings.development.DevelopmentSettings.onCreateView(DevelopmentSettings.java:712)
+ at android.app.Fragment.performCreateView(Fragment.java:2554)
+ at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1262)
+ at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1516)
+ at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1578)
+ at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:2999)
+ at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2951)
+ at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:178)
+ at android.app.Activity.performCreateCommon(Activity.java:6899)
+ at android.app.Activity.performCreate(Activity.java:6907)
+ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1212)
+ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2768)
+ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2890)
+ at android.app.ActivityThread.-wrap11(Unknown Source:0)
+ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1591)
+ at android.os.Handler.dispatchMessage(Handler.java:105)
+ at android.os.Looper.loop(Looper.java:164)
+ at android.app.ActivityThread.main(ActivityThread.java:6537)
+ at java.lang.reflect.Method.invoke(Native Method)
+ at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
+ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
+
+
+--------- switch to system
+[ 01-01 15:14:02.367 1000: 2272: 5402 W/ActivityManager ]
+Unbind failed: could not find connection for android.os.BinderProxy@d2a6c1d
+
+--------- switch to main
+[ 01-01 15:14:02.397 1000:14206:14206 D/DashboardSummary ]
+Listening for condition changes
+
+[ 01-01 15:14:02.397 1000:14206:14206 D/DashboardSummary ]
+onConditionsChanged
+
+[ 01-01 15:14:02.398 1000:14206:14206 D/DashboardAdapter ]
+adapter setConditions called
+
+[ 01-01 15:14:02.398 1000:14206:14206 D/DashboardSummary ]
+conditions refreshed
+
+[ 01-01 15:14:02.398 1000:14206:14206 D/APM_Condition ]
+APM condition refreshed
+
+[ 01-01 15:14:02.399 1000:14206:14206 D/APM_Condition ]
+setActive was called with false
+
+[ 01-01 15:14:02.456 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:02.507 1000:14206:20201 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 17 millis
+
+[ 01-01 15:14:02.537 1000:14206:20202 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 10 millis
+
+[ 01-01 15:14:02.644 1000:14206:20203 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:02.660 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:02.672 1000:14206:20203 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:02.673 1000:14206:20203 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+[ 01-01 15:14:02.677 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:02.677 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+--------- switch to system
+[ 01-01 15:14:02.699 1000: 2272: 4464 D/BatteryStatsService ]
+begin updateExternalStatsSync reason=get-stats
+
+[ 01-01 15:14:02.801 1000: 2272: 4464 E/BatteryStatsService ]
+no controller energy info supplied
+
+[ 01-01 15:14:02.854 1000: 2272: 4464 D/BatteryStatsImpl ]
+Reading cpu stats took 34 ms
+
+[ 01-01 15:14:02.881 1000: 2272: 4464 E/KernelMemoryBandwidthStats ]
+Failed to read memory bandwidth: /sys/kernel/memory_state_time/show_stat (No such file or directory)
+
+[ 01-01 15:14:02.881 1000: 2272: 4464 D/BatteryStatsService ]
+end updateExternalStatsSync
+
+--------- switch to main
+[ 01-01 15:14:02.891 10038:18491:18491 I/MicroDetector ]
+Keeping mic open: false
+
+[ 01-01 15:14:02.892 10038:18491:18549 I/MicroRecognitionRunner ]
+Stopping hotword detection.
+
+[ 01-01 15:14:02.896 10038:18491:19006 I/DeviceStateChecker ]
+DeviceStateChecker cancelled
+
+[ 01-01 15:14:02.897 10038:18491:19016 I/MicroRecognitionRunner ]
+Detection finished
+
+[ 01-01 15:14:02.899 10038:18491:19007 I/AudioController ]
+internalShutdown
+
+[ 01-01 15:14:02.900 10038:18491:19007 I/MicrophoneInputStream ]
+mic_close com.google.android.apps.gsa.speech.audio.ag@4fc0a
+
+[ 01-01 15:14:02.997 1000: 2272: 3590 W/zygote64 ]
+Long monitor contention with owner ActivityManager (3582) at void com.android.server.am.ActivityStackSupervisor$ActivityStackSupervisorHandler.activityIdleInternal(com.android.server.am.ActivityRecord, boolean)(ActivityStackSupervisor.java:4228) waiters=0 in void com.android.server.am.ActivityManagerService.notifyActivityDrawn(android.os.IBinder) for 178ms
+
+[ 01-01 15:14:02.997 1000: 2272: 3579 W/zygote64 ]
+Long monitor contention with owner ActivityManager (3582) at void com.android.server.am.ActivityStackSupervisor$ActivityStackSupervisorHandler.activityIdleInternal(com.android.server.am.ActivityRecord, boolean)(ActivityStackSupervisor.java:4228) waiters=1 in boolean com.android.server.am.ActivityManagerService.unbindService(android.app.IServiceConnection) for 122ms
+
+[ 01-01 15:14:03.041 1041: 541:20182 D/audio_hw_primary ]
+disable_audio_route: usecase(9) reset and update mixer path: audio-record
+
+[ 01-01 15:14:03.042 1041: 541:20182 D/audio_hw_primary ]
+disable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:03.049 1041: 541:20182 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 0, rx 0, concurrency session_allowed 1
+
+[ 01-01 15:14:03.054 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:03.240 1000:14206:20198 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:03.267 1000:14206:20198 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:03.269 1000:14206:20198 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+[ 01-01 15:14:03.456 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:03.495 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:03.497 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:03.497 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:03.497 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:03.497 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:03.522 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:03.522 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+--------- switch to system
+[ 01-01 15:14:03.529 1000: 2272: 3627 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000
+
+--------- switch to main
+[ 01-01 15:14:03.581 10038: 4245: 4251 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:03.581 10038: 4245: 4251 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:03.585 1000:14206:14206 D/DashboardSummary ]
+Stopped listening for condition changes
+
+[ 01-01 15:14:03.669 10038:18491:18672 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:03.715 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:03.785 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:03.785 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:03.805 10038:18491:19006 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:03.806 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:03.806 10038:18491:19008 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@85dd117
+
+[ 01-01 15:14:03.813 1041: 541: 5248 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:03.819 1041: 541:20213 I/AudioFlinger ]
+AudioFlinger's thread 0xf1220e40 tid=20213 ready to run
+
+[ 01-01 15:14:03.836 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:03.837 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:03.837 10038:18491:19008 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@85dd117
+
+[ 01-01 15:14:03.841 1041: 541:20214 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:03.841 1041: 541:20214 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:03.841 1041: 541:20214 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:03.849 1041: 541:20214 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:03.850 1041: 541:20214 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:03.901 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:03.922 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:04.032 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:04.044 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:04.044 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:04.045 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:04.159 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+[ 01-01 15:14:04.446 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+--------- switch to system
+[ 01-01 15:14:04.448 1000: 2272: 5447 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[435,1254][646,1507] (has extras)} from uid 10038
+
+--------- switch to main
+[ 01-01 15:14:04.448 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:04.449 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:04.449 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:04.449 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:04.457 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:04.480 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:04.480 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:04.623 1000:14206:14206 D/DashboardSummary ]
+Listening for condition changes
+
+[ 01-01 15:14:04.623 1000:14206:14206 D/DashboardSummary ]
+onConditionsChanged
+
+[ 01-01 15:14:04.623 1000:14206:14206 D/DashboardAdapter ]
+adapter setConditions called
+
+[ 01-01 15:14:04.624 1000:14206:14206 D/DashboardSummary ]
+conditions refreshed
+
+[ 01-01 15:14:04.624 1000:14206:14206 D/APM_Condition ]
+APM condition refreshed
+
+[ 01-01 15:14:04.624 1000:14206:14206 D/APM_Condition ]
+setActive was called with false
+
+[ 01-01 15:14:04.712 1000:14206:20202 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 35 millis
+
+[ 01-01 15:14:04.738 1000:14206:20202 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 10 millis
+
+[ 01-01 15:14:04.837 1000:14206:20202 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:04.869 1000:14206:20202 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:04.870 1000:14206:20202 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+--------- switch to system
+[ 01-01 15:14:04.898 1000: 2272: 3579 D/BatteryStatsService ]
+begin updateExternalStatsSync reason=get-stats
+
+--------- switch to main
+[ 01-01 15:14:04.908 1000: 2272: 5444 I/sensors ]
+activate
+
+[ 01-01 15:14:04.916 1000: 2272: 5444 I/nanohub ]
+queueActivate: sensor=1, handle=1, enable=0
+
+[ 01-01 15:14:04.998 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:05.010 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:05.010 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+--------- switch to system
+[ 01-01 15:14:05.022 1000: 2272: 3579 E/BatteryStatsService ]
+no controller energy info supplied
+
+--------- switch to main
+[ 01-01 15:14:05.040 1000: 2272: 3626 E/hw-IPCThreadState ]
+binder thread pool (1 threads) starved for 116 ms
+
+--------- switch to system
+[ 01-01 15:14:05.072 1000: 2272: 3579 D/BatteryStatsImpl ]
+Reading cpu stats took 34 ms
+
+[ 01-01 15:14:05.098 1000: 2272: 3579 E/KernelMemoryBandwidthStats ]
+Failed to read memory bandwidth: /sys/kernel/memory_state_time/show_stat (No such file or directory)
+
+[ 01-01 15:14:05.098 1000: 2272: 3579 D/BatteryStatsService ]
+end updateExternalStatsSync
+
+--------- switch to main
+[ 01-01 15:14:05.112 10038:18491:18491 I/MicroDetector ]
+Keeping mic open: false
+
+[ 01-01 15:14:05.113 10038:18491:19016 I/DeviceStateChecker ]
+DeviceStateChecker cancelled
+
+[ 01-01 15:14:05.119 10038:18491:19007 I/AudioController ]
+internalShutdown
+
+[ 01-01 15:14:05.120 10038:18491:19007 I/MicrophoneInputStream ]
+mic_close com.google.android.apps.gsa.speech.audio.ag@85dd117
+
+[ 01-01 15:14:05.124 10038:18491:18549 I/MicroRecognitionRunner ]
+Stopping hotword detection.
+
+[ 01-01 15:14:05.252 1041: 541:20213 D/audio_hw_primary ]
+disable_audio_route: usecase(9) reset and update mixer path: audio-record
+
+[ 01-01 15:14:05.253 1041: 541:20213 D/audio_hw_primary ]
+disable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:05.258 1041: 541:20213 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 0, rx 0, concurrency session_allowed 1
+
+[ 01-01 15:14:05.263 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:05.267 10038:18491:19006 W/zygote64 ]
+Long monitor contention with owner UserFacing4 (19007) at void android.media.AudioRecord.native_stop()(AudioRecord.java:-2) waiters=1 in void com.google.android.apps.gsa.speech.audio.an.reset(int) for 141ms
+
+[ 01-01 15:14:05.267 10038:18491:19006 I/MicroRecognitionRunner ]
+Detection finished
+
+[ 01-01 15:14:05.457 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:05.465 1000:14206:20201 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:05.499 1000:14206:20201 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:05.500 1000:14206:20201 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+[ 01-01 15:14:05.564 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:05.568 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:05.568 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:05.568 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:05.568 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:05.589 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:05.593 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:05.593 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:05.598 1000:14206:14212 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+--------- switch to system
+[ 01-01 15:14:05.603 1000: 2272: 3627 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000
+
+--------- switch to main
+[ 01-01 15:14:05.658 1000:14206:14206 D/DashboardSummary ]
+Stopped listening for condition changes
+
+[ 01-01 15:14:05.750 10038:18491:18504 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:05.796 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:05.854 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:05.855 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:05.883 10038:18491:19006 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:05.884 10038:18491:19007 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@987bb93
+
+[ 01-01 15:14:05.896 1041: 541: 5248 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:05.906 1041: 541:20227 I/AudioFlinger ]
+AudioFlinger's thread 0xf1220e80 tid=20227 ready to run
+
+[ 01-01 15:14:05.916 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:05.917 10038:18491:19007 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@987bb93
+
+[ 01-01 15:14:05.919 1041: 541:20228 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:05.919 1041: 541:20228 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:05.919 1041: 541:20228 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:05.927 1041: 541:20228 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:05.927 1041: 541:20228 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:05.936 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:05.981 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:06.029 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:06.112 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:06.123 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:06.123 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:06.157 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:06.239 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+[ 01-01 15:14:06.674 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1032): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+--------- switch to system
+[ 01-01 15:14:06.931 1000: 2272: 3628 I/PowerManagerService ]
+Going to sleep due to power button (uid 1000)...
+
+[ 01-01 15:14:07.432 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+[ 01-01 15:14:07.433 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+[ 01-01 15:14:07.444 1000: 2272: 3582 I/VrManagerService ]
+VR mode is disallowed
+
+--------- switch to main
+[ 01-01 15:14:07.535 1000: 2272: 3592 I/sensors ]
+activate
+
+[ 01-01 15:14:07.544 1000: 2272: 3592 I/nanohub ]
+queueActivate: sensor=28, handle=30, enable=0
+
+[ 01-01 15:14:07.545 1000: 2272: 3592 V/KeyguardServiceDelegate ]
+onScreenTurnedOff()
+
+[ 01-01 15:14:07.547 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=0, state=3
+
+
+[ 01-01 15:14:07.548 1000: 2272: 3592 I/sensors ]
+activate
+
+[ 01-01 15:14:07.550 1000: 2272: 3592 I/nanohub ]
+queueActivate: sensor=12, handle=7, enable=0
+
+--------- switch to system
+[ 01-01 15:14:07.551 1000: 2272: 3590 I/DisplayManagerService ]
+Display device changed state: "Built-in Screen", OFF
+
+--------- switch to main
+[ 01-01 15:14:07.552 1000: 398: 398 D/SurfaceFlinger ]
+Set power mode=0, type=0 flinger=0x7542c6c000
+
+[ 01-01 15:14:07.555 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Setting mode 0 on display: 0
+
+--------- switch to system
+[ 01-01 15:14:07.565 1000: 2272: 3614 W/LocalDisplayAdapter ]
+Unable to find color mode 0, ignoring request.
+
+--------- switch to main
+[ 01-01 15:14:07.664 10038:18491:18491 I/MicroDetector ]
+Keeping mic open: false
+
+[ 01-01 15:14:07.665 1000: 398: 462 I/qdhwcomposer ]
+handle_blank_event: dpy:0 panel power state: 0
+
+[ 01-01 15:14:07.665 10038:18491:19012 I/AudioController ]
+internalShutdown
+
+[ 01-01 15:14:07.666 10038:18491:19012 I/MicrophoneInputStream ]
+mic_close com.google.android.apps.gsa.speech.audio.ag@987bb93
+
+[ 01-01 15:14:07.666 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Done setting mode 0 on display 0
+
+[ 01-01 15:14:07.666 10038:18491:19016 I/DeviceStateChecker ]
+DeviceStateChecker cancelled
+
+[ 01-01 15:14:07.666 1000: 2272: 3787 D/SurfaceControl ]
+Excessive delay in setPowerMode(): 115ms
+
+--------- switch to system
+[ 01-01 15:14:07.670 1000: 2272: 3592 I/DreamManagerService ]
+Entering dreamland.
+
+--------- switch to main
+[ 01-01 15:14:07.671 10038:18491:18549 I/MicroRecognitionRunner ]
+Stopping hotword detection.
+
+--------- switch to system
+[ 01-01 15:14:07.671 1000: 2272: 3592 I/PowerManagerService ]
+Dozing...
+
+[ 01-01 15:14:07.673 1000: 2272: 3588 I/DreamController ]
+Starting dream: name=ComponentInfo{com.android.systemui/com.android.systemui.doze.DozeService}, isTest=false, canDoze=true, userId=0
+
+--------- switch to main
+[ 01-01 15:14:07.710 1000: 2272: 5447 I/sensors ]
+batch
+
+[ 01-01 15:14:07.711 1000: 2272: 5447 I/nanohub ]
+queueBatch: sensor=24, handle=20, period=1000000, latency=0
+
+[ 01-01 15:14:07.712 1000: 2272: 5447 I/sensors ]
+activate
+
+[ 01-01 15:14:07.713 1000: 2272: 5447 I/nanohub ]
+queueActivate: sensor=24, handle=20, enable=1
+
+[ 01-01 15:14:07.717 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 1
+
+
+[ 01-01 15:14:07.719 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=4
+
+
+[ 01-01 15:14:07.721 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=3
+
+
+[ 01-01 15:14:07.722 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered on, new state 2
+
+
+[ 01-01 15:14:07.730 1041: 541:20227 D/audio_hw_primary ]
+disable_audio_route: usecase(9) reset and update mixer path: audio-record
+
+[ 01-01 15:14:07.731 1041: 541:20227 D/audio_hw_primary ]
+disable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:07.735 1041: 541:20227 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 0, rx 0, concurrency session_allowed 1
+
+[ 01-01 15:14:07.738 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:07.742 10038:18491:19006 I/MicroRecognitionRunner ]
+Detection finished
+
+--------- switch to system
+[ 01-01 15:14:07.769 1000: 2272: 4084 I/ActivityManager ]
+Setting hasTopUi=true for pid=3812
+
+--------- switch to main
+[ 01-01 15:14:07.776 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:07.827 nfc: 4175: 4192 I/zygote64 ]
+Background concurrent copying GC freed 96(1791KB) AllocSpace objects, 0(0B) LOS objects, 53% free, 1330KB/2MB, paused 6.135ms total 19.615ms
+
+[ 01-01 15:14:07.829 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:14:07.829 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:14:07.829 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:14:07.830 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:14:07.831 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:14:07.831 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:14:07.831 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:14:07.831 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:14:07.886 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:08.003 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back HOME* RECENT* clock search quick_settings >
+
+[ 01-01 15:14:08.108 10018: 5497:20188 E/ctxmgr ]
+[WorkManager]Ongoing task not found: PlacesProducer_receive
+
+[ 01-01 15:14:08.776 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:09.777 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:10.001 1000: 2272: 4088 I/sensors ]
+batch
+
+[ 01-01 15:14:10.007 1000: 2272: 4088 I/nanohub ]
+queueBatch: sensor=1, handle=1, period=20000000, latency=0
+
+[ 01-01 15:14:10.007 1000: 2272: 4088 I/sensors ]
+activate
+
+[ 01-01 15:14:10.010 1000: 2272: 4088 I/nanohub ]
+queueActivate: sensor=1, handle=1, enable=1
+
+[ 01-01 15:14:10.778 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:12.776 10018: 5497:20188 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:12.842 1000: 2272: 5430 I/sensors ]
+activate
+
+[ 01-01 15:14:12.845 10018: 5497:20187 I/PlaceInferenceEngine ]
+[anon] Changed inference mode: 105
+
+[ 01-01 15:14:12.851 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:12.857 1000: 2272: 5430 I/nanohub ]
+queueActivate: sensor=1, handle=1, enable=0
+
+[ 01-01 15:14:12.889 10018: 5497:20188 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:12.890 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:13.008 10018: 5497: 5502 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:14.351 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] sending event 0x00000001
+
+[ 01-01 15:14:14.358 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered off, new state 0
+
+
+[ 01-01 15:14:14.361 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 0
+
+
+[ 01-01 15:14:14.362 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=0, state=5
+
+
+[ 01-01 15:14:14.366 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=0, state=3
+
+
+[ 01-01 15:14:14.380 1000: 2272: 4219 I/sensors ]
+batch
+
+[ 01-01 15:14:14.382 1000: 2272: 4219 I/nanohub ]
+queueBatch: sensor=24, handle=20, period=1000000, latency=0
+
+[ 01-01 15:14:14.383 1000: 2272: 4219 I/sensors ]
+activate
+
+[ 01-01 15:14:14.385 1000: 2272: 4219 I/nanohub ]
+queueActivate: sensor=24, handle=20, enable=1
+
+[ 01-01 15:14:14.388 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 1
+
+
+--------- switch to system
+[ 01-01 15:14:14.389 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+[ 01-01 15:14:14.389 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+[ 01-01 15:14:14.390 1000: 2272: 3592 I/DisplayPowerController ]
+Blocking screen on until initial contents have been drawn.
+
+--------- switch to main
+[ 01-01 15:14:14.391 1000: 2272: 3592 V/KeyguardServiceDelegate ]
+onScreenTurnedOn(showListener = com.android.server.policy.PhoneWindowManager$2@cb6ff88)
+
+[ 01-01 15:14:14.393 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=4
+
+
+--------- switch to system
+[ 01-01 15:14:14.394 1000: 2272: 3590 I/DisplayManagerService ]
+Display device changed state: "Built-in Screen", DOZE
+
+--------- switch to main
+[ 01-01 15:14:14.394 1000: 398: 398 D/SurfaceFlinger ]
+Set power mode=1, type=0 flinger=0x7542c6c000
+
+[ 01-01 15:14:14.395 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Setting mode 1 on display: 0
+
+[ 01-01 15:14:14.396 1000: 2272: 3617 I/nanohub ]
+osLog: [BMI160] accPower: on=1, state=3
+
+
+[ 01-01 15:14:14.398 1000: 2272: 4217 I/sensors ]
+batch
+
+[ 01-01 15:14:14.400 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered on, new state 2
+
+
+[ 01-01 15:14:14.403 1000: 2272: 4217 I/nanohub ]
+queueBatch: sensor=13, handle=6, period=200000000, latency=0
+
+[ 01-01 15:14:14.404 1000: 2272: 4217 I/sensors ]
+activate
+
+--------- switch to system
+[ 01-01 15:14:14.405 1000: 2272: 3614 W/LocalDisplayAdapter ]
+Unable to find color mode 0, ignoring request.
+
+--------- switch to main
+[ 01-01 15:14:14.408 1000: 2272: 4217 I/nanohub ]
+queueActivate: sensor=13, handle=6, enable=1
+
+[ 01-01 15:14:14.421 1000: 2272: 5450 V/KeyguardServiceDelegate ]
+**** SHOWN CALLED ****
+
+--------- switch to system
+[ 01-01 15:14:14.514 1000: 2272: 3592 I/DisplayPowerController ]
+Unblocked screen on after 124 ms
+
+--------- switch to main
+[ 01-01 15:14:14.517 1000: 2272: 3592 V/KeyguardServiceDelegate ]
+onScreenTurnedOn()
+
+[ 01-01 15:14:14.629 1000: 398: 462 I/qdhwcomposer ]
+handle_blank_event: dpy:0 panel power state: 2
+
+[ 01-01 15:14:14.629 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Done setting mode 1 on display 0
+
+[ 01-01 15:14:14.650 1000: 2272: 3787 D/SurfaceControl ]
+Excessive delay in setPowerMode(): 255ms
+
+--------- switch to system
+[ 01-01 15:14:14.943 1000: 2272: 3628 I/PowerManagerService ]
+Waking up from dozing (uid 1000)...
+
+--------- switch to main
+[ 01-01 15:14:14.949 1000: 2272: 2272 I/sensors ]
+batch
+
+--------- switch to system
+[ 01-01 15:14:14.952 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+--------- switch to main
+[ 01-01 15:14:14.953 1000: 2272: 2272 I/nanohub ]
+queueBatch: sensor=28, handle=30, period=66667000, latency=0
+
+[ 01-01 15:14:14.953 1000: 2272: 2272 I/sensors ]
+activate
+
+--------- switch to system
+[ 01-01 15:14:14.954 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+--------- switch to main
+[ 01-01 15:14:14.955 1000: 2272: 2272 I/nanohub ]
+queueActivate: sensor=28, handle=30, enable=1
+
+[ 01-01 15:14:14.955 1000: 2272: 2272 V/KeyguardServiceDelegate ]
+onStartedWakingUp()
+
+[ 01-01 15:14:14.959 1000: 2272: 3592 I/sensors ]
+batch
+
+[ 01-01 15:14:14.961 1000: 2272: 3592 I/nanohub ]
+queueBatch: sensor=12, handle=7, period=250000000, latency=0
+
+[ 01-01 15:14:14.961 1000: 2272: 3592 I/sensors ]
+activate
+
+[ 01-01 15:14:14.962 1000: 2272: 3592 I/nanohub ]
+queueActivate: sensor=12, handle=7, enable=1
+
+--------- switch to system
+[ 01-01 15:14:14.965 1000: 2272: 3590 I/DisplayManagerService ]
+Display device changed state: "Built-in Screen", ON
+
+--------- switch to main
+[ 01-01 15:14:14.966 1000: 398: 398 D/SurfaceFlinger ]
+Set power mode=2, type=0 flinger=0x7542c6c000
+
+[ 01-01 15:14:14.966 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Setting mode 2 on display: 0
+
+[ 01-01 15:14:14.966 1000: 398: 462 I/qdhwcomposer ]
+handle_blank_event: dpy:0 panel power state: 1
+
+[ 01-01 15:14:14.966 1000: 398: 398 D/qdhwcomposer ]
+hwc_setPowerMode: Done setting mode 2 on display 0
+
+--------- switch to system
+[ 01-01 15:14:14.970 1000: 2272: 3592 I/DreamManagerService ]
+Gently waking up from dream.
+
+[ 01-01 15:14:14.975 1000: 2272: 3614 W/LocalDisplayAdapter ]
+Unable to find color mode 0, ignoring request.
+
+--------- switch to main
+[ 01-01 15:14:14.978 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+--------- switch to system
+[ 01-01 15:14:14.998 1000: 2272: 5401 I/DreamManagerService ]
+Leaving dreamland.
+
+[ 01-01 15:14:15.000 1000: 2272: 3588 I/DreamController ]
+Stopping dream: name=ComponentInfo{com.android.systemui/com.android.systemui.doze.DozeService}, isTest=false, canDoze=true, userId=0
+
+--------- switch to main
+[ 01-01 15:14:15.007 1000: 2272: 5430 I/sensors ]
+activate
+
+[ 01-01 15:14:15.008 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_TECH_CFG_EVT; status=0x0
+
+[ 01-01 15:14:15.008 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_PROTO_CFG_EVT; status=0x0
+
+[ 01-01 15:14:15.008 nfc: 4175:20249 D/BrcmNfcJni ]
+RoutingManager::commitRouting
+
+[ 01-01 15:14:15.009 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_UPDATED_EVT
+
+[ 01-01 15:14:15.010 1000: 2272: 5430 I/nanohub ]
+queueActivate: sensor=24, handle=20, enable=0
+
+[ 01-01 15:14:15.011 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:14:15.011 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:14:15.011 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:14:15.011 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:14:15.014 1000: 2272: 3617 I/nanohub ]
+osLog: [PickupGesture] power: 0
+
+
+[ 01-01 15:14:15.019 1000: 2272: 3617 I/nanohub ]
+osLog: [Activity] activity activity powered off, new state 0
+
+
+[ 01-01 15:14:15.045 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:15.069 10036: 3812: 3819 I/chatty ]
+uid=10036(u0_a36) Jit thread pool identical 2 lines
+
+[ 01-01 15:14:15.070 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:15.098 10018: 5497: 5502 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:15.098 10018: 5497: 5502 I/chatty ]
+uid=10018(u0_a18) Jit thread pool identical 1 line
+
+[ 01-01 15:14:15.098 10018: 5497: 5502 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:15.306 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:15.324 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:15.393 1000: 2272: 3617 I/nanohub ]
+osLog: [WO] rotation changed to: ******* 0 *******
+
+
+[ 01-01 15:14:15.978 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:16.106 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back HOME RECENT clock search quick_settings >
+
+--------- switch to system
+[ 01-01 15:14:16.196 1000: 2272: 3582 I/VrManagerService ]
+VR mode is allowed
+
+--------- switch to main
+[ 01-01 15:14:16.197 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back HOME RECENT clock search quick_settings >
+
+[ 01-01 15:14:16.382 1000: 2272: 4465 I/sensors ]
+activate
+
+[ 01-01 15:14:16.384 1000: 2272: 4465 I/nanohub ]
+queueActivate: sensor=13, handle=6, enable=0
+
+[ 01-01 15:14:16.423 nfc: 4175: 4351 E/NxpTml ]
+_i2c_write() errno : 5
+
+[ 01-01 15:14:16.423 nfc: 4175: 4351 E/NxpTml ]
+PN54X - Error in I2C Write.....
+
+
+[ 01-01 15:14:16.423 nfc: 4175: 4353 E/NxpHal ]
+write error status = 0x1ff
+
+[ 01-01 15:14:16.423 nfc: 4175: 4346 E/NxpHal ]
+write_unlocked failed - PN54X Maybe in Standby Mode - Retry
+
+[ 01-01 15:14:16.428 nfc: 4175: 4346 E/BrcmNfcJni ]
+nfaConnectionCallback: unknown event ????
+
+[ 01-01 15:14:16.428 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_TECH_CFG_EVT; status=0x0
+
+[ 01-01 15:14:16.430 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_SET_PROTO_CFG_EVT; status=0x0
+
+[ 01-01 15:14:16.430 nfc: 4175:20146 D/BrcmNfcJni ]
+RoutingManager::commitRouting
+
+[ 01-01 15:14:16.430 nfc: 4175: 4346 D/BrcmNfcJni ]
+RoutingManager::nfaEeCallback: NFA_EE_UPDATED_EVT
+
+[ 01-01 15:14:16.484 10038:18491:18504 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:16.486 10038:18491:18504 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:16.520 10038:18491:19642 W/LocationOracle ]
+No location history returned by ContextManager
+
+[ 01-01 15:14:16.525 10036: 3812: 3812 D/StatusBar ]
+disable: < expand icons alerts system_info back home* recent* clock search quick_settings >
+
+[ 01-01 15:14:16.537 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:16.538 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:16.563 10038:18491:20275 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:16.564 10038:18491:19007 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@bde1866
+
+[ 01-01 15:14:16.565 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:16.565 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:16.567 1041: 541: 5248 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:16.578 1041: 541:20278 I/AudioFlinger ]
+AudioFlinger's thread 0xf12208c0 tid=20278 ready to run
+
+[ 01-01 15:14:16.584 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:16.585 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.590 10038:18491:19007 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@bde1866
+
+[ 01-01 15:14:16.591 1041: 541:20279 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:16.591 1041: 541:20279 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:16.591 1041: 541:20279 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:16.591 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:16.604 10038: 4245: 4251 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:16.610 1041: 541:20279 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:16.611 1041: 541:20279 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:16.613 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.616 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:16.617 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.636 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.638 10038:18491:18502 I/zygote64 ]
+Background concurrent copying GC freed 1017(3MB) AllocSpace objects, 1(68KB) LOS objects, 50% free, 8MB/16MB, paused 2.320ms total 118.207ms
+
+[ 01-01 15:14:16.648 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.665 10018: 4514: 4514 I/chatty ]
+uid=10018(u0_a18) com.google.android.gms identical 2 lines
+
+[ 01-01 15:14:16.670 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.677 root: 600: 600 W/thermal-engine ]
+type=1400 audit(0.0:1033): avc: denied { search } for name="leds" dev="sysfs" ino=7453 scontext=u:r:thermal-engine:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
+
+[ 01-01 15:14:16.681 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:16.709 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.728 10018: 4514: 4514 I/chatty ]
+uid=10018(u0_a18) com.google.android.gms identical 2 lines
+
+[ 01-01 15:14:16.735 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.743 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:16.747 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.796 10018: 4514: 4514 I/chatty ]
+uid=10018(u0_a18) com.google.android.gms identical 6 lines
+
+[ 01-01 15:14:16.801 10018: 4514: 4514 I/DeviceCache ]
+Unable to convert the the network interface's MAC Address to string. MAC address cannot be null.
+
+[ 01-01 15:14:16.803 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+--------- switch to system
+[ 01-01 15:14:16.937 1000: 2272: 3579 I/ActivityManager ]
+Setting hasTopUi=false for pid=3812
+
+--------- switch to main
+[ 01-01 15:14:16.980 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:16.988 10018: 5497:19840 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:16.990 10018: 5497:20283 I/PlaceInferenceEngine ]
+[anon] Changed inference mode: 105
+
+[ 01-01 15:14:16.993 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:17.009 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:17.041 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:17.107 10018: 5497:20188 W/ctxmgr ]
+[AclManager]No 3 for (accnt=account#-517948760#, com.google.android.googlequicksearchbox(10038):com.google.android.googlequicksearchbox, vrsn=10298000, 1, 3pPkg = null , 3pMdlId = null). Was: 3 for 18, account#-517948760#
+
+[ 01-01 15:14:17.108 1000: 2272: 3832 I/sensors ]
+batch
+
+[ 01-01 15:14:17.110 1000: 2272: 3832 I/nanohub ]
+queueBatch: sensor=1, handle=1, period=20000000, latency=0
+
+[ 01-01 15:14:17.110 1000: 2272: 3832 I/sensors ]
+activate
+
+[ 01-01 15:14:17.111 1000: 2272: 3832 I/nanohub ]
+queueActivate: sensor=1, handle=1, enable=1
+
+[ 01-01 15:14:17.139 10018: 5497:20188 E/ctxmgr ]
+[ProducerStatusImpl]updateStateForNewContextData: inactive, contextName=7
+
+[ 01-01 15:14:17.165 10018: 5497:20284 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:17.187 10018: 5497:19161 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:17.224 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:17.227 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+--------- switch to system
+[ 01-01 15:14:17.227 1000: 2272: 5431 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[435,1254][646,1507] (has extras)} from uid 10038
+
+--------- switch to main
+[ 01-01 15:14:17.227 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:17.227 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:17.227 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:17.250 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:17.250 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:17.251 10018: 5497: 5506 E/StrictMode ]
+A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
+java.lang.Throwable: Explicit termination method 'close' not called
+ at dalvik.system.CloseGuard.open(CloseGuard.java:223)
+ at java.io.FileOutputStream.<init>(FileOutputStream.java:224)
+ at android.app.ContextImpl.openFileOutput(ContextImpl.java:513)
+ at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:195)
+ at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:195)
+ at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:195)
+ at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:195)
+ at lts.c(:com.google.android.gms:96)
+ at lts.a(:com.google.android.gms:55)
+ at com.google.android.gms.icing.proxy.ApplicationLauncherIntentOperation.onHandleIntent(:com.google.android.gms:5192)
+ at com.google.android.chimera.IntentOperation.onHandleIntent(:com.google.android.gms:118)
+ at caz.run(:com.google.android.gms:10864)
+ at caw.run(:com.google.android.gms:1143)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+[ 01-01 15:14:17.252 10018: 5497:20283 I/Places ]
+?: PlacesBleScanner start() with priority 2
+
+[ 01-01 15:14:17.252 10018: 5497:20283 I/PlaceInferenceEngine ]
+[anon] Changed inference mode: 102
+
+[ 01-01 15:14:17.253 10018: 5497:20283 W/Places ]
+?: Failed to download inference model weights
+
+
+[ 01-01 15:14:17.253 10018: 5497:20283 W/PlaceInferenceEngine ]
+Failed to download model weights. Status code: 7
+
+[ 01-01 15:14:17.264 10018: 5497:20188 I/Places ]
+?: Couldn't find platform key file.
+
+[ 01-01 15:14:17.352 10018: 5497: 5537 W/GCoreFlp ]
+No location to return for getLastLocation()
+
+[ 01-01 15:14:17.458 1000:14206:14206 D/DashboardSummary ]
+Listening for condition changes
+
+[ 01-01 15:14:17.458 1000:14206:14206 D/DashboardSummary ]
+onConditionsChanged
+
+[ 01-01 15:14:17.458 1000:14206:14206 D/DashboardAdapter ]
+adapter setConditions called
+
+[ 01-01 15:14:17.459 1000:14206:14206 D/DashboardSummary ]
+conditions refreshed
+
+[ 01-01 15:14:17.459 1000:14206:14206 D/APM_Condition ]
+APM condition refreshed
+
+[ 01-01 15:14:17.459 1000:14206:14206 D/APM_Condition ]
+setActive was called with false
+
+[ 01-01 15:14:17.559 1000:14206:20203 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 60 millis
+
+[ 01-01 15:14:17.596 1000:14206:20203 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 22 millis
+
+[ 01-01 15:14:17.699 1000:14206:20203 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:17.727 1000:14206:20203 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:17.728 1000:14206:20203 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+--------- switch to system
+[ 01-01 15:14:17.745 1000: 2272: 5448 D/BatteryStatsService ]
+begin updateExternalStatsSync reason=get-stats
+
+--------- switch to main
+[ 01-01 15:14:17.748 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:17.760 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:17.760 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+--------- switch to system
+[ 01-01 15:14:17.764 1000: 2272: 5448 E/BatteryStatsService ]
+no controller energy info supplied
+
+[ 01-01 15:14:17.817 1000: 2272: 5448 D/BatteryStatsImpl ]
+Reading cpu stats took 34 ms
+
+[ 01-01 15:14:17.843 1000: 2272: 5448 E/KernelMemoryBandwidthStats ]
+Failed to read memory bandwidth: /sys/kernel/memory_state_time/show_stat (No such file or directory)
+
+[ 01-01 15:14:17.843 1000: 2272: 5448 D/BatteryStatsService ]
+end updateExternalStatsSync
+
+--------- switch to main
+[ 01-01 15:14:17.894 10038:18491:18491 I/MicroDetector ]
+Keeping mic open: false
+
+[ 01-01 15:14:17.895 10038:18491:19006 I/DeviceStateChecker ]
+DeviceStateChecker cancelled
+
+[ 01-01 15:14:17.896 10038:18491:19012 I/AudioController ]
+internalShutdown
+
+[ 01-01 15:14:17.896 10038:18491:19012 I/MicrophoneInputStream ]
+mic_close com.google.android.apps.gsa.speech.audio.ag@bde1866
+
+[ 01-01 15:14:17.899 10038:18491:18549 I/MicroRecognitionRunner ]
+Stopping hotword detection.
+
+[ 01-01 15:14:17.964 1000:14206:14212 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:17.982 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:18.003 1041: 541:20278 D/audio_hw_primary ]
+disable_audio_route: usecase(9) reset and update mixer path: audio-record
+
+[ 01-01 15:14:18.004 1041: 541:20278 D/audio_hw_primary ]
+disable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:18.008 1041: 541:20278 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 0, rx 0, concurrency session_allowed 1
+
+[ 01-01 15:14:18.010 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:18.013 10038:18491:20275 I/MicroRecognitionRunner ]
+Detection finished
+
+[ 01-01 15:14:18.203 1000:14206:20198 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:18.230 1000:14206:20198 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:18.231 1000:14206:20198 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+[ 01-01 15:14:18.311 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:18.313 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:18.313 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:18.313 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:18.313 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:18.339 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:18.339 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+--------- switch to system
+[ 01-01 15:14:18.417 1000: 2272: 3627 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000
+
+--------- switch to main
+[ 01-01 15:14:18.467 1000:14206:14206 D/DashboardSummary ]
+Stopped listening for condition changes
+
+[ 01-01 15:14:18.539 10038:18491:18504 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:18.582 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:18.630 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:18.630 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:18.647 10038:18491:20275 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:18.650 10038:18491:19012 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@e61439e
+
+[ 01-01 15:14:18.652 1041: 541:18637 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:18.654 1041: 541:20301 I/AudioFlinger ]
+AudioFlinger's thread 0xf19aa340 tid=20301 ready to run
+
+[ 01-01 15:14:18.661 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:18.662 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:18.675 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:18.676 10038:18491:19012 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@e61439e
+
+[ 01-01 15:14:18.681 1041: 541:20302 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:18.681 1041: 541:20302 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:18.681 1041: 541:20302 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:18.687 1041: 541:20302 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:18.687 1041: 541:20302 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:18.689 1000: 2272: 2282 I/zygote64 ]
+Background concurrent copying GC freed 31100(11MB) AllocSpace objects, 6(240KB) LOS objects, 42% free, 16MB/28MB, paused 299us total 106.777ms
+
+[ 01-01 15:14:18.745 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:18.780 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:18.859 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:18.874 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:18.874 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:18.911 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:19.034 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+[ 01-01 15:14:19.215 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+--------- switch to system
+[ 01-01 15:14:19.216 1000: 2272: 3832 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[435,1254][646,1507] (has extras)} from uid 10038
+
+--------- switch to main
+[ 01-01 15:14:19.219 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:19.220 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:19.220 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:19.220 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:19.245 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:19.245 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:19.384 1000:14206:14206 D/DashboardSummary ]
+Listening for condition changes
+
+[ 01-01 15:14:19.384 1000:14206:14206 D/DashboardSummary ]
+onConditionsChanged
+
+[ 01-01 15:14:19.385 1000:14206:14206 D/DashboardAdapter ]
+adapter setConditions called
+
+[ 01-01 15:14:19.385 1000:14206:14206 D/DashboardSummary ]
+conditions refreshed
+
+[ 01-01 15:14:19.385 1000:14206:14206 D/APM_Condition ]
+APM condition refreshed
+
+[ 01-01 15:14:19.385 1000:14206:14206 D/APM_Condition ]
+setActive was called with false
+
+[ 01-01 15:14:19.455 1000:14206:20201 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 22 millis
+
+[ 01-01 15:14:19.497 1000:14206:20201 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 23 millis
+
+[ 01-01 15:14:19.600 1000:14206:20201 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:19.636 1000:14206:20201 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:19.638 1000:14206:20201 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+--------- switch to system
+[ 01-01 15:14:19.660 1000: 2272: 5448 D/BatteryStatsService ]
+begin updateExternalStatsSync reason=get-stats
+
+[ 01-01 15:14:19.681 1000: 2272: 5448 E/BatteryStatsService ]
+no controller energy info supplied
+
+[ 01-01 15:14:19.737 1000: 2272: 5448 D/BatteryStatsImpl ]
+Reading cpu stats took 34 ms
+
+--------- switch to main
+[ 01-01 15:14:19.759 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+--------- switch to system
+[ 01-01 15:14:19.764 1000: 2272: 5448 E/KernelMemoryBandwidthStats ]
+Failed to read memory bandwidth: /sys/kernel/memory_state_time/show_stat (No such file or directory)
+
+[ 01-01 15:14:19.764 1000: 2272: 5448 D/BatteryStatsService ]
+end updateExternalStatsSync
+
+--------- switch to main
+[ 01-01 15:14:19.772 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:19.772 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:19.981 10038:18491:18491 I/MicroDetector ]
+Keeping mic open: false
+
+[ 01-01 15:14:19.982 10038:18491:19007 I/AudioController ]
+internalShutdown
+
+[ 01-01 15:14:19.983 10038:18491:18549 I/MicroRecognitionRunner ]
+Stopping hotword detection.
+
+[ 01-01 15:14:19.987 10038:18491:20275 I/MicroRecognitionRunner ]
+Detection finished
+
+[ 01-01 15:14:19.989 10038:18491:19006 I/DeviceStateChecker ]
+DeviceStateChecker cancelled
+
+[ 01-01 15:14:19.990 10038:18491:19007 I/MicrophoneInputStream ]
+mic_close com.google.android.apps.gsa.speech.audio.ag@e61439e
+
+[ 01-01 15:14:20.045 1041: 541:20301 D/audio_hw_primary ]
+disable_audio_route: usecase(9) reset and update mixer path: audio-record
+
+[ 01-01 15:14:20.046 1041: 541:20301 D/audio_hw_primary ]
+disable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:20.051 1041: 541:20301 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 0, rx 0, concurrency session_allowed 1
+
+[ 01-01 15:14:20.053 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:20.153 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:20.153 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:20.156 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:20.156 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:20.156 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:20.157 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:20.165 1000:14206:20202 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:20.180 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:20.181 10036: 3812: 3819 I/chatty ]
+uid=10036(u0_a36) Jit thread pool identical 3 lines
+
+[ 01-01 15:14:20.181 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:20.185 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:20.185 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:20.199 1000:14206:20202 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:20.200 1000:14206:20202 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+--------- switch to system
+[ 01-01 15:14:20.204 1000: 2272: 3627 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000
+
+--------- switch to main
+[ 01-01 15:14:20.346 1000:14206:14206 D/DashboardSummary ]
+Stopped listening for condition changes
+
+[ 01-01 15:14:20.352 10038:18491:18672 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:20.392 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:20.466 1000: 2272: 4217 W/zygote64 ]
+Long monitor contention with owner Binder:2272_4 (3832) at void com.android.server.am.ActivityManagerService.activityIdle(android.os.IBinder, android.content.res.Configuration, boolean)(ActivityManagerService.java:6920) waiters=2 in int com.android.server.am.ActivityManagerService.getLastResumedActivityUserId() for 103ms
+
+[ 01-01 15:14:20.492 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:20.492 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:20.511 10038:18491:19006 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:20.512 10038:18491:19007 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@cdae8fe
+
+[ 01-01 15:14:20.513 1041: 541:18637 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:20.515 1041: 541:20313 I/AudioFlinger ]
+AudioFlinger's thread 0xf19a7500 tid=20313 ready to run
+
+[ 01-01 15:14:20.542 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:20.543 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:20.544 10038:18491:19007 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@cdae8fe
+
+[ 01-01 15:14:20.545 1041: 541:20314 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:20.545 1041: 541:20314 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:20.545 1041: 541:20314 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:20.552 1041: 541:20314 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:20.552 1041: 541:20314 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:20.613 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:20.618 1000: 2272: 4088 I/sensors ]
+activate
+
+[ 01-01 15:14:20.621 1000: 2272: 4088 I/nanohub ]
+queueActivate: sensor=1, handle=1, enable=0
+
+[ 01-01 15:14:20.638 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:20.705 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:20.716 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:20.716 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:20.755 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:20.843 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+[ 01-01 15:14:21.055 1000: 2272: 4464 D/WificondControl ]
+Scan result ready event
+
+[ 01-01 15:14:21.096 1000: 2272: 3755 W/WifiConfigManager ]
+Looking up network with invalid networkId -1
+
+[ 01-01 15:14:21.153 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:21.980 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+--------- switch to system
+[ 01-01 15:14:21.982 1000: 2272: 5450 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[435,1254][646,1507] (has extras)} from uid 10038
+
+--------- switch to main
+[ 01-01 15:14:21.983 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:21.983 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:21.983 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:21.983 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:22.016 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:22.016 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:22.154 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:22.182 1000:14206:14206 D/DashboardSummary ]
+Listening for condition changes
+
+[ 01-01 15:14:22.183 1000:14206:14206 D/DashboardSummary ]
+onConditionsChanged
+
+[ 01-01 15:14:22.183 1000:14206:14206 D/DashboardAdapter ]
+adapter setConditions called
+
+[ 01-01 15:14:22.183 1000:14206:14206 D/DashboardSummary ]
+conditions refreshed
+
+[ 01-01 15:14:22.183 1000:14206:14206 D/APM_Condition ]
+APM condition refreshed
+
+[ 01-01 15:14:22.183 1000:14206:14206 D/APM_Condition ]
+setActive was called with false
+
+[ 01-01 15:14:22.258 1000:14206:20201 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 42 millis
+
+[ 01-01 15:14:22.292 1000:14206:20201 D/DatabaseIndexingManager ]
+Indexing locale 'en_US' took 19 millis
+
+[ 01-01 15:14:22.397 1000:14206:20201 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:22.429 1000:14206:20201 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:22.430 1000:14206:20201 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+--------- switch to system
+[ 01-01 15:14:22.448 1000: 2272: 4217 D/BatteryStatsService ]
+begin updateExternalStatsSync reason=get-stats
+
+--------- switch to main
+[ 01-01 15:14:22.525 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:22.541 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:22.541 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+--------- switch to system
+[ 01-01 15:14:22.551 1000: 2272: 4217 E/BatteryStatsService ]
+no controller energy info supplied
+
+[ 01-01 15:14:22.601 1000: 2272: 4217 D/BatteryStatsImpl ]
+Reading cpu stats took 35 ms
+
+[ 01-01 15:14:22.627 1000: 2272: 4217 E/KernelMemoryBandwidthStats ]
+Failed to read memory bandwidth: /sys/kernel/memory_state_time/show_stat (No such file or directory)
+
+[ 01-01 15:14:22.628 1000: 2272: 4217 D/BatteryStatsService ]
+end updateExternalStatsSync
+
+--------- switch to main
+[ 01-01 15:14:22.642 10038:18491:18491 I/MicroDetector ]
+Keeping mic open: false
+
+[ 01-01 15:14:22.642 10038:18491:19012 I/AudioController ]
+internalShutdown
+
+[ 01-01 15:14:22.643 10038:18491:19012 I/MicrophoneInputStream ]
+mic_close com.google.android.apps.gsa.speech.audio.ag@cdae8fe
+
+[ 01-01 15:14:22.644 10038:18491:18549 I/MicroRecognitionRunner ]
+Stopping hotword detection.
+
+[ 01-01 15:14:22.649 10038:18491:20275 I/DeviceStateChecker ]
+DeviceStateChecker cancelled
+
+[ 01-01 15:14:22.736 1000: 2272: 3582 W/zygote64 ]
+Long monitor contention with owner Binder:2272_7 (4217) at android.os.ParcelFileDescriptor com.android.server.am.BatteryStatsService.getStatisticsStream()(BatteryStatsService.java:378) waiters=0 in boolean com.android.server.am.ActivityManagerService.applyOomAdjLocked(com.android.server.am.ProcessRecord, boolean, long, long) for 108ms
+
+[ 01-01 15:14:22.790 1041: 541:20313 D/audio_hw_primary ]
+disable_audio_route: usecase(9) reset and update mixer path: audio-record
+
+[ 01-01 15:14:22.791 1041: 541:20313 D/audio_hw_primary ]
+disable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:22.798 1041: 541:20313 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 0, rx 0, concurrency session_allowed 1
+
+[ 01-01 15:14:22.799 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:22.804 10038:18491:18549 W/zygote64 ]
+Long monitor contention with owner UserFacing6 (19012) at void android.media.AudioRecord.native_stop()(AudioRecord.java:-2) waiters=0 in void com.google.android.apps.gsa.speech.audio.an.reset(int) for 154ms
+
+[ 01-01 15:14:22.805 10038:18491:19006 I/MicroRecognitionRunner ]
+Detection finished
+
+[ 01-01 15:14:22.936 1041: 541: 5252 D/audio_route ]
+Apply path: speaker-protected
+
+[ 01-01 15:14:22.938 1041: 541: 5252 D/audio_hw_primary ]
+enable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:22.938 1041: 541: 5252 D/audio_route ]
+Apply path: vi-feedback
+
+[ 01-01 15:14:22.938 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(23) apply and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:22.938 1041: 541: 5252 D/audio_route ]
+Apply path: spkr-vi-record
+
+[ 01-01 15:14:22.969 1041: 541: 5252 D/audio_hw_primary ]
+enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback
+
+[ 01-01 15:14:22.969 1041: 541: 5252 D/audio_route ]
+Apply path: low-latency-playback
+
+[ 01-01 15:14:23.024 1000:14206:20198 I/SuggestionParser ]
+Use your voice requires unavailable account type com.google
+
+[ 01-01 15:14:23.062 1000:14206:20198 W/Bundle ]
+Key com.android.settings.dismiss expected String but value was a java.lang.Integer. The default value <null> was returned.
+
+[ 01-01 15:14:23.063 1000:14206:20198 W/Bundle ]
+Attempt to cast generated internal exception:
+java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
+ at android.os.BaseBundle.getString(BaseBundle.java:1072)
+ at com.android.settingslib.SuggestionParser.getDismissControl(SuggestionParser.java:377)
+ at com.android.settingslib.SuggestionParser.isDismissed(SuggestionParser.java:330)
+ at com.android.settingslib.SuggestionParser.filterSuggestions(SuggestionParser.java:187)
+ at com.android.settingslib.SuggestionParser.readSuggestions(SuggestionParser.java:204)
+ at com.android.settingslib.SuggestionParser.getSuggestions(SuggestionParser.java:151)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:260)
+ at com.android.settings.dashboard.DashboardSummary$SuggestionLoader.doInBackground(DashboardSummary.java:255)
+ at android.os.AsyncTask$2.call(AsyncTask.java:305)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+ at java.lang.Thread.run(Thread.java:764)
+
+
+--------- switch to system
+[ 01-01 15:14:23.066 1000: 2272: 3627 I/ActivityManager ]
+START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000
+
+--------- switch to main
+[ 01-01 15:14:23.120 1000:14206:14206 D/DashboardSummary ]
+Stopped listening for condition changes
+
+[ 01-01 15:14:23.156 1041: 541: 678 I/ServiceManager ]
+Waiting for service media.log...
+
+[ 01-01 15:14:23.242 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:23.249 10038:18491:18504 I/AttachedClient ]
+Adding client event 2 to pending list.
+
+[ 01-01 15:14:23.317 10036: 3812: 3819 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:23.320 10038:18491:18491 I/MicroDetectionWorker ]
+#updateMicroDetector [currentDetectionMode: [mDetectionMode: [1]]]
+
+[ 01-01 15:14:23.321 10038:18491:18491 I/MicroDetectionWorker ]
+#startMicroDetector [speakerMode: 0]
+
+[ 01-01 15:14:23.331 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:23.337 10038:18491:20275 I/MicroRecognitionRunner ]
+Starting detection.
+
+[ 01-01 15:14:23.339 10038:18491:19012 I/MicrophoneInputStream ]
+mic_starting com.google.android.apps.gsa.speech.audio.ag@681da37
+
+[ 01-01 15:14:23.341 1041: 541: 742 W/DeviceHAL ]
+Device 0xf4fad000 open_input_stream: Invalid argument
+
+[ 01-01 15:14:23.352 1041: 541:20329 I/AudioFlinger ]
+AudioFlinger's thread 0xf19a7f40 tid=20329 ready to run
+
+[ 01-01 15:14:23.361 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:23.364 1041: 541: 741 I/SoundTriggerHwService::Module ]
+onCallbackEvent no clients
+
+[ 01-01 15:14:23.364 10038:18491:19012 I/MicrophoneInputStream ]
+mic_started com.google.android.apps.gsa.speech.audio.ag@681da37
+
+[ 01-01 15:14:23.374 1041: 541:20330 D/sound_trigger_platform ]
+platform_stdev_check_and_update_concurrency: concurrency active 0, tx 1, rx 0, concurrency session_allowed 0
+
+[ 01-01 15:14:23.375 1041: 541:20330 D/audio_hw_primary ]
+enable_snd_device: snd_device(72: voice-rec-mic)
+
+[ 01-01 15:14:23.375 1041: 541:20330 D/audio_route ]
+Apply path: voice-rec-mic
+
+[ 01-01 15:14:23.377 10038:18491:18496 I/zygote64 ]
+Integer.valueOf will not be optimized
+
+[ 01-01 15:14:23.378 1041: 541:20330 D/audio_hw_primary ]
+enable_audio_route: usecase(9) apply and update mixer path: audio-record
+
+[ 01-01 15:14:23.378 1041: 541:20330 D/audio_route ]
+Apply path: audio-record
+
+[ 01-01 15:14:23.431 10038:18491:18491 I/MicroDetectionWorker ]
+onReady
+
+[ 01-01 15:14:23.473 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:23.491 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback
+
+[ 01-01 15:14:23.503 1041: 541: 717 D/audio_hw_primary ]
+disable_snd_device: snd_device(88: vi-feedback)
+
+[ 01-01 15:14:23.503 1041: 541: 717 D/audio_hw_primary ]
+disable_audio_route: usecase(23) reset and update mixer path: spkr-vi-record
+
+[ 01-01 15:14:23.593 1000: 2272: 3783 W/OpenGLRenderer ]
+Warning: attempt to read pixels from hardware bitmap, which is very slow operation
+
+[ 01-01 15:14:23.698 10038: 4245: 4483 W/OpenGLRenderer ]
+Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+
+--------- switch to system
+[ 01-01 15:14:24.210 1000: 2272: 3628 I/PowerManagerService ]
+Going to sleep due to power button (uid 1000)...
+
+[ 01-01 15:14:24.708 1000: 2272: 3592 D/BatteryStatsService ]
+begin noteScreenState
+
+[ 01-01 15:14:24.710 1000: 2272: 3592 D/BatteryStatsService ]
+end noteScreenState
+
+[ 01-01 15:14:24.719 1000: 2272: 3582 I/VrManagerService ]
+VR mode is disallowed
+
diff --git a/tools/logblame/short_idle_test b/tools/logblame/short_idle_test
new file mode 100755
index 0000000..c4ff436
--- /dev/null
+++ b/tools/logblame/short_idle_test
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# The files to save output to.
+RAWLOGS_FILE=short-idle-rawlogs.txt
+ANALYSIS_FILE=short-idle-analysis.txt
+
+# Turn on the screen and unlock the device
+# TODO: Power on
+adb shell wm dismiss-keyguard
+
+# Start the analysis process
+$TOP/development/tools/logblame/analyze_logs.py --duration=5m --clear --rawlogs $RAWLOGS_FILE \
+ | tee $ANALYSIS_FILE &
+analyze_pid=$!
+
+# Wait for the pyton process to exit
+echo "waiting... analyze_pid" $analyze_pid
+wait $analyze_pid
+
+echo "Wrote raw logs to $RAWLOGS_FILE"
+echo "Wrote analysis to $ANALYSIS_FILE"
+
+
diff --git a/tools/logblame/test_analyze.py b/tools/logblame/test_analyze.py
new file mode 100755
index 0000000..4bd752f
--- /dev/null
+++ b/tools/logblame/test_analyze.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python2.7 -B
+
+import analyze_logs
+
+
+def test_ParseDuration(s, expected):
+ actual = analyze_logs.ParseDuration(s)
+ if actual != expected:
+ raise Exception("expected %s, actual %s" % (expected, actual))
+
+def main():
+ test_ParseDuration("1w", 604800)
+ test_ParseDuration("1d", 86400)
+ test_ParseDuration("1h", 3600)
+ test_ParseDuration("1m", 60)
+ test_ParseDuration("1s", 1)
+ test_ParseDuration("1w1d1h1m1s", 694861)
+
+
+if __name__ == "__main__":
+ main()
+
+
+# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab :
diff --git a/tools/logblame/test_logs.py b/tools/logblame/test_logs.py
new file mode 100755
index 0000000..122ecf3
--- /dev/null
+++ b/tools/logblame/test_logs.py
@@ -0,0 +1,179 @@
+#!/usr/bin/env python2.7 -B
+
+import logs
+import ps
+
+import datetime
+import StringIO
+
+def test_empty():
+ """Test parsing no tag and no text, not well formed."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "",
+ "") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/ ]
+
+"""
+ check_parsing(expected, text)
+
+
+def test_none():
+ """Test parsing no tag and no text."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "",
+ "") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/ ]
+"""
+ check_parsing(expected, text)
+
+
+
+def test_trailing_blank():
+ """Test parsing text containing an extra intended newline at the end."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
+ "Newline after\n") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
+Newline after
+
+
+"""
+ check_parsing(expected, text)
+
+
+def test_blank_between():
+ """Test parsing text containing a newline in the middle."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
+ "Message\n\nNewline between") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
+Message
+
+Newline between
+
+"""
+ check_parsing(expected, text)
+
+
+def test_preceeding_blank():
+ """Test parsing text containing a newline then text."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
+ "\nNewline before") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
+
+Newline before
+
+"""
+ check_parsing(expected, text)
+
+
+def test_one_blank():
+ """Test parsing text one blank line."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
+ "\n") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
+
+
+"""
+ check_parsing(expected, text)
+
+
+def test_two_blanks():
+ """Test parsing text two blank lines."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
+ "\n\n") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
+
+
+
+"""
+ check_parsing(expected, text)
+
+
+def test_two_lines_noblanks():
+ """Test parsing two lines of text with no blank lines."""
+ expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
+ "One\nTwo") ]
+ text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
+One
+Two
+
+"""
+ check_parsing(expected, text)
+
+
+def test_chatty():
+ """Test a log with chatty identical messages."""
+
+ expected = [
+ logs.LogLine("system", "03-29 00:46:58.857", "1000", "1815", "1816", "I", "Noisy", "Message"),
+ logs.LogLine("system", "03-29 00:46:58.858", "1000", "1815", "1816", "I", "Noisy", "Message"),
+ logs.LogLine("system", "03-29 00:46:58.858", "1000", "1815", "1816", "I", "Noisy", "Message"),
+ logs.LogLine("system", "03-29 00:46:58.858", "1000", "1815", "1816", "I", "Noisy", "Message"),
+ logs.LogLine("system", "03-29 00:46:58.859", "1000", "1815", "1816", "I", "Noisy", "Message"),
+ ]
+ text = """--------- beginning of system
+[ 03-29 00:46:58.857 1000: 1815: 1816 I/Noisy ]
+Message
+
+[ 03-29 00:46:58.858 1000: 1815: 1816 I/chatty ]
+uid=1000(system) Thread-6 identical 3 lines
+
+[ 03-29 00:46:58.859 1000: 1815: 1816 I/Noisy ]
+Message
+
+"""
+ check_parsing(expected, text)
+
+
+
+def test_normal():
+ """Test a realistic (albeit short) log."""
+ expected = [
+ logs.LogLine("system", "03-29 00:46:58.857", "1000", "1815", "1816", "I", "Package: ]Manager",
+ "/system/app/KeyChain changed; collecting certs"),
+ logs.LogLine("system", "03-29 00:46:58.872", "1000", "1815", "1816", "I", "PackageManager",
+ "/system/app/HiddenMenu changed; collecting certs"),
+ logs.LogLine("main", "03-29 00:46:58.872", "1000", "1815", "1816", "I", "PackageManager",
+ "/system/app/HiddenMenu changed; collecting certs"),
+ ]
+
+ text = """--------- beginning of system
+[ 03-29 00:46:58.857 1000: 1815: 1816 I/Package: ]Manager ]
+/system/app/KeyChain changed; collecting certs
+
+[ 03-29 00:46:58.872 1000: 1815: 1816 I/PackageManager ]
+/system/app/HiddenMenu changed; collecting certs
+
+--------- switch to main
+[ 03-29 00:46:58.872 1000: 1815: 1816 I/PackageManager ]
+/system/app/HiddenMenu changed; collecting certs
+
+"""
+ check_parsing(expected, text)
+
+
+
+def check_parsing(expected, text):
+ """Parse the text and see if it parsed as expected."""
+ processes = ps.ProcessSet()
+ result = [x for x in logs.ParseLogcat(StringIO.StringIO(text), processes)]
+ if result != expected:
+ raise Exception("test failed.\nexpected:\n[%s]\nactual\n[%s]" % (
+ ", ".join([str(r) for r in expected]),
+ ", ".join([str(r) for r in result])))
+
+
+def main():
+ test_empty()
+ test_none()
+ test_trailing_blank()
+ test_blank_between()
+ test_preceeding_blank()
+ test_one_blank()
+ test_two_blanks()
+ test_chatty()
+ test_normal()
+
+
+if __name__ == "__main__":
+ main()
+
+
+# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab:
diff --git a/tools/logblame/test_ps.py b/tools/logblame/test_ps.py
new file mode 100755
index 0000000..a0d73cb
--- /dev/null
+++ b/tools/logblame/test_ps.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python2.7 -B
+
+import ps
+
+
+def test_pids():
+ text = """USER PID PPID VSIZE RSS WCHAN PC NAME
+root 1 0 10632 776 SyS_epoll_ 0000000000 S /init
+root 2 0 0 0 kthreadd 0000000000 S kthreadd
+u0_a22 7308 633 1808572 79760 SyS_epoll_ 0000000000 S com.google.android.dialer
+u0_a19 7370 633 1841228 37828 SyS_epoll_ 0000000000 S com.google.android.gms.feedback
+u0_a136 7846 634 1320656 119964 SyS_epoll_ 0000000000 S com.sonos.acr
+"""
+
+ actual = ps.ParsePs(text)
+
+ expected = [
+ ('root', '1', '0', '/init'),
+ ('root', '2', '0', 'kthreadd'),
+ ('u0_a22', '7308', '633', 'com.google.android.dialer'),
+ ('u0_a19', '7370', '633', 'com.google.android.gms.feedback'),
+ ('u0_a136', '7846', '634', 'com.sonos.acr')
+ ]
+
+ if actual != expected:
+ print "Expected:"
+ print expected
+ print
+ print "Actual:"
+ print actual
+ raise Exception("test failed")
+
+
+def test_uids():
+ text = """vers,1
+vrfy,com.android.vending,10035
+ifv,com.google.android.gms,10019
+lib,com.vzw.apnlib,jar,/system/app/VZWAPNLib/VZWAPNLib.apk
+lib,com.google.android.media.effects,jar,/system/framework/com.google.android.media.effects.jar
+pkg,com.amazon.mShop.android.shopping,10118,116434610,1486361139496,1491403362196,com.android.vending
+pkg-splt,base,0
+pkg-usr,0,IbsusL,0,com.android.vending
+pkg,com.getgoodcode.bart,10129,21,1486361637815,1486361637815,com.android.vending
+pkg-splt,base,0
+pkg-usr,0,IbsuSl,0,?
+pkg,com.flightaware.android.liveFlightTracker,10115,138,1486361042695,1486361042695,com.android.vending
+pkg-splt,base,0
+pkg-usr,0,IbsuSl,0,?
+pkg,com.android.cts.priv.ctsshim,10010,24,1230796800000,1230796800000,?
+pkg-splt,base,0
+pkg-usr,0,IbsusL,0,?
+"""
+ actual = ps.ParseUids(text)
+
+ expected = [
+ ('10118', 'com.amazon.mShop.android.shopping'),
+ ('10129', 'com.getgoodcode.bart'),
+ ('10115', 'com.flightaware.android.liveFlightTracker'),
+ ('10010', 'com.android.cts.priv.ctsshim')
+ ]
+
+ if actual != expected:
+ print "Expected:"
+ print expected
+ print
+ print "Actual:"
+ print actual
+ raise Exception("test failed")
+
+
+def test_update():
+ """Requires an attached device."""
+ processes = ps.ProcessSet()
+ processes.Update()
+ processes.Update()
+ processes.Print()
+ process = processes.FindPid("0", "0")
+ print "process:", process
+ print "uid:", process.uid.uid
+ print "username:", process.uid.name
+ print "pid:", process.pid
+ print "ppid:", process.ppid
+ print "name:", process.name
+ print "displayName:", process.DisplayName()
+
+
+def main():
+ #test_uids()
+ #test_pids()
+ test_update()
+
+
+if __name__ == "__main__":
+ main()
+
+
+# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab:
diff --git a/vndk/tools/definition-tool/tests/test_banned_libs.py b/vndk/tools/definition-tool/tests/test_banned_libs.py
deleted file mode 100755
index 6c7dd53..0000000
--- a/vndk/tools/definition-tool/tests/test_banned_libs.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python3
-
-from __future__ import print_function
-
-import os
-import sys
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-
-import unittest
-
-from vndk_definition_tool import BA_WARN, BannedLibDict
-
-
-class BannedLibDictTest(unittest.TestCase):
- def test_add(self):
- d = BannedLibDict()
- d.add('libfoo.so', 'test', BA_WARN)
- x = d.get('libfoo.so')
-
- self.assertIsNotNone(x)
- self.assertEqual('libfoo.so', x.name)
- self.assertEqual('test', x.reason)
- self.assertEqual(BA_WARN, x.action)
-
- def test_get(self):
- d = BannedLibDict.create_default()
- self.assertIsNotNone(d.get('libbinder.so'))
- self.assertIsNotNone(d.get('libselinux.so'))
- self.assertIsNone(d.get('libc.so'))
-
- def test_is_banned(self):
- d = BannedLibDict.create_default()
- self.assertTrue(d.is_banned('/system/lib/libbinder.so'))
- self.assertTrue(d.is_banned('/system/lib/libselinux.so'))
- self.assertTrue(d.is_banned('/system/lib64/libbinder.so'))
- self.assertTrue(d.is_banned('/system/lib64/libselinux.so'))
- self.assertFalse(d.is_banned('/system/lib64/libc.so'))
-
-
-if __name__ == '__main__':
- unittest.main()
-
diff --git a/vndk/tools/definition-tool/tests/test_elf_linker.py b/vndk/tools/definition-tool/tests/test_elf_linker.py
index d3eecdd..6faa9d2 100755
--- a/vndk/tools/definition-tool/tests/test_elf_linker.py
+++ b/vndk/tools/definition-tool/tests/test_elf_linker.py
@@ -9,8 +9,8 @@
import unittest
from compat import StringIO
-from vndk_definition_tool import (BannedLibDict, ELF, ELFLinker, GenericRefs,
- PT_SYSTEM, PT_VENDOR)
+from vndk_definition_tool import (ELF, ELFLinker, GenericRefs, PT_SYSTEM,
+ PT_VENDOR)
class GraphBuilder(object):
@@ -520,89 +520,5 @@
self.assertNotIn(libc_path, sp_ndk_indirect)
- def test_compute_vndk_cap(self):
- gb = GraphBuilder()
-
- # Add LL-NDK libraries.
- gb.add_multilib(PT_SYSTEM, 'libc')
- gb.add_multilib(PT_SYSTEM, 'libdl')
- gb.add_multilib(PT_SYSTEM, 'liblog')
- gb.add_multilib(PT_SYSTEM, 'libm')
- gb.add_multilib(PT_SYSTEM, 'libstdc++')
-
- # Add SP-NDK libraries.
- gb.add_multilib(PT_SYSTEM, 'libEGL')
- gb.add_multilib(PT_SYSTEM, 'libGLES_v2')
-
- # Add banned libraries.
- gb.add_multilib(PT_SYSTEM, 'libbinder')
- gb.add_multilib(PT_SYSTEM, 'libselinux')
-
- # Add good examples.
- gb.add_multilib(PT_SYSTEM, 'libgood_a', dt_needed=['libc.so'])
- gb.add_multilib(PT_SYSTEM, 'libgood_b', dt_needed=['libEGL.so'])
- gb.add_multilib(PT_SYSTEM, 'libgood_c', dt_needed=['libGLES_v2.so'])
-
- # Add bad examples.
- gb.add_multilib(PT_SYSTEM, 'libbad_a', dt_needed=['libbinder.so'])
- gb.add_multilib(PT_SYSTEM, 'libbad_b', dt_needed=['libselinux.so'])
- gb.add_multilib(PT_SYSTEM, 'libbad_c', dt_needed=['libbad_a.so'])
- gb.add_multilib(PT_SYSTEM, 'libbad_d', dt_needed=['libbad_c.so'])
- gb.add_multilib(PT_VENDOR, 'libbad_e', dt_needed=['libc.so'])
-
- gb.resolve()
-
- # Compute VNDK cap.
- banned_libs = BannedLibDict.create_default()
- vndk_cap = gb.graph.compute_vndk_cap(banned_libs)
- vndk_cap = set(lib.path for lib in vndk_cap)
-
- # Check the existence of good examples.
- self.assertIn('/system/lib/libgood_a.so', vndk_cap)
- self.assertIn('/system/lib/libgood_b.so', vndk_cap)
- self.assertIn('/system/lib/libgood_c.so', vndk_cap)
-
- self.assertIn('/system/lib64/libgood_a.so', vndk_cap)
- self.assertIn('/system/lib64/libgood_b.so', vndk_cap)
- self.assertIn('/system/lib64/libgood_c.so', vndk_cap)
-
- # Check the absence of bad examples.
- self.assertNotIn('/system/lib/libbad_a.so', vndk_cap)
- self.assertNotIn('/system/lib/libbad_b.so', vndk_cap)
- self.assertNotIn('/system/lib/libbad_c.so', vndk_cap)
- self.assertNotIn('/system/lib/libbad_d.so', vndk_cap)
- self.assertNotIn('/vendor/lib/libbad_e.so', vndk_cap)
-
- self.assertNotIn('/system/lib64/libbad_a.so', vndk_cap)
- self.assertNotIn('/system/lib64/libbad_b.so', vndk_cap)
- self.assertNotIn('/system/lib64/libbad_c.so', vndk_cap)
- self.assertNotIn('/system/lib64/libbad_d.so', vndk_cap)
- self.assertNotIn('/vendor/lib64/libbad_e.so', vndk_cap)
-
- # Check the absence of banned libraries.
- self.assertNotIn('/system/lib/libbinder.so', vndk_cap)
- self.assertNotIn('/system/lib/libselinux.so', vndk_cap)
-
- self.assertNotIn('/system/lib64/libbinder.so', vndk_cap)
- self.assertNotIn('/system/lib64/libselinux.so', vndk_cap)
-
- # Check the absence of NDK libraries. Although LL-NDK and SP-NDK
- # libraries are not banned, they are not VNDK libraries either.
- self.assertNotIn('/system/lib/libEGL.so', vndk_cap)
- self.assertNotIn('/system/lib/libOpenGLES_v2.so', vndk_cap)
- self.assertNotIn('/system/lib/libc.so', vndk_cap)
- self.assertNotIn('/system/lib/libdl.so', vndk_cap)
- self.assertNotIn('/system/lib/liblog.so', vndk_cap)
- self.assertNotIn('/system/lib/libm.so', vndk_cap)
- self.assertNotIn('/system/lib/libstdc++.so', vndk_cap)
-
- self.assertNotIn('/system/lib64/libEGL.so', vndk_cap)
- self.assertNotIn('/system/lib64/libOpenGLES_v2.so', vndk_cap)
- self.assertNotIn('/system/lib64/libc.so', vndk_cap)
- self.assertNotIn('/system/lib64/libdl.so', vndk_cap)
- self.assertNotIn('/system/lib64/liblog.so', vndk_cap)
- self.assertNotIn('/system/lib64/libm.so', vndk_cap)
- self.assertNotIn('/system/lib64/libstdc++.so', vndk_cap)
-
if __name__ == '__main__':
unittest.main()
diff --git a/vndk/tools/definition-tool/tests/test_ndk_libs.py b/vndk/tools/definition-tool/tests/test_ndk_libs.py
index 00a4c18..eca9180 100755
--- a/vndk/tools/definition-tool/tests/test_ndk_libs.py
+++ b/vndk/tools/definition-tool/tests/test_ndk_libs.py
@@ -67,36 +67,6 @@
# LL-NDK is not SP-NDK.
self.assertFalse(NDK_LIBS.is_sp_ndk('/system/lib/libc.so'))
- def test_is_hlndk(self):
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libOpenMAXAL.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libOpenSLES.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libandroid.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libcamera2ndk.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libjnigraphics.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libmediandk.so'))
-
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libOpenMAXAL.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libOpenSLES.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libandroid.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libcamera2ndk.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libjnigraphics.so'))
- self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libmediandk.so'))
-
- # LL-NDK and SP-NDK are not HL-NDK.
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libc.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libEGL.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libGLESv1_CM.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libGLESv2.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libGLESv3.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libvulkan.so'))
-
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libc.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libEGL.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libGLESv1_CM.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libGLESv2.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libGLESv3.so'))
- self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libvulkan.so'))
-
def test_is_ndk(self):
# LL-NDK
self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libc.so'))
@@ -128,23 +98,6 @@
self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libGLESv2.so'))
self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libGLESv3.so'))
- # HL-NDK
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libOpenMAXAL.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libOpenSLES.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libandroid.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libcamera2ndk.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libjnigraphics.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libmediandk.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libvulkan.so'))
-
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libOpenMAXAL.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libOpenSLES.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libandroid.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libcamera2ndk.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libjnigraphics.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libmediandk.so'))
- self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libvulkan.so'))
-
def test_classify(self):
self.assertEqual(NDK_LIBS.NOT_NDK,
NDK_LIBS.classify('/system/lib/libfoo.so'))
@@ -152,8 +105,6 @@
NDK_LIBS.classify('/system/lib/libc.so'))
self.assertEqual(NDK_LIBS.SP_NDK,
NDK_LIBS.classify('/system/lib/libEGL.so'))
- self.assertEqual(NDK_LIBS.HL_NDK,
- NDK_LIBS.classify('/system/lib/libmediandk.so'))
self.assertEqual(NDK_LIBS.NOT_NDK,
NDK_LIBS.classify('/system/lib64/libfoo.so'))
@@ -161,8 +112,6 @@
NDK_LIBS.classify('/system/lib64/libc.so'))
self.assertEqual(NDK_LIBS.SP_NDK,
NDK_LIBS.classify('/system/lib64/libEGL.so'))
- self.assertEqual(NDK_LIBS.HL_NDK,
- NDK_LIBS.classify('/system/lib64/libmediandk.so'))
if __name__ == '__main__':
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index b2ea0af..83319ee 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -526,14 +526,13 @@
#------------------------------------------------------------------------------
-# NDK and Banned Libraries
+# NDK
#------------------------------------------------------------------------------
class NDKLibDict(object):
NOT_NDK = 0
LL_NDK = 1
SP_NDK = 2
- HL_NDK = 3
LL_NDK_LIB_NAMES = (
'libc.so',
@@ -556,15 +555,6 @@
'libvulkan.so',
)
- HL_NDK_LIB_NAMES = (
- 'libOpenMAXAL.so',
- 'libOpenSLES.so',
- 'libandroid.so',
- 'libcamera2ndk.so',
- 'libjnigraphics.so',
- 'libmediandk.so',
- )
-
@staticmethod
def _create_pattern(names):
return '|'.join('(?:^\\/system\\/lib(?:64)?\\/' + re.escape(i) + '$)'
@@ -583,10 +573,8 @@
def __init__(self):
self.ll_ndk_patterns = self._compile_path_matcher(self.LL_NDK_LIB_NAMES)
self.sp_ndk_patterns = self._compile_path_matcher(self.SP_NDK_LIB_NAMES)
- self.hl_ndk_patterns = self._compile_path_matcher(self.HL_NDK_LIB_NAMES)
self.ndk_patterns = self._compile_multi_path_matcher(
- (self.LL_NDK_LIB_NAMES, self.SP_NDK_LIB_NAMES,
- self.HL_NDK_LIB_NAMES))
+ (self.LL_NDK_LIB_NAMES, self.SP_NDK_LIB_NAMES))
def is_ll_ndk(self, path):
return self.ll_ndk_patterns.match(path)
@@ -594,9 +582,6 @@
def is_sp_ndk(self, path):
return self.sp_ndk_patterns.match(path)
- def is_hl_ndk(self, path):
- return self.hl_ndk_patterns.match(path)
-
def is_ndk(self, path):
return self.ndk_patterns.match(path)
@@ -609,33 +594,6 @@
NDK_LIBS = NDKLibDict()
-BannedLib = collections.namedtuple(
- 'BannedLib', ('name', 'reason', 'action',))
-
-BA_WARN = 0
-BA_EXCLUDE = 1
-
-class BannedLibDict(object):
- def __init__(self):
- self.banned_libs = dict()
-
- def add(self, name, reason, action):
- self.banned_libs[name] = BannedLib(name, reason, action)
-
- def get(self, name):
- return self.banned_libs.get(name)
-
- def is_banned(self, path):
- return self.get(os.path.basename(path))
-
- @staticmethod
- def create_default():
- d = BannedLibDict()
- d.add('libbinder.so', 'un-versioned IPC', BA_WARN)
- d.add('libselinux.so', 'policydb might be incompatible', BA_WARN)
- return d
-
-
#------------------------------------------------------------------------------
# ELF Linker
#------------------------------------------------------------------------------
@@ -733,10 +691,6 @@
def is_sp_ndk(self):
return self._ndk_classification == NDKLibDict.SP_NDK
- @property
- def is_hl_ndk(self):
- return self._ndk_classification == NDKLibDict.HL_NDK
-
def add_dep(self, dst, ty):
self._deps[ty].add(dst)
dst._users[ty].add(self)
@@ -1534,43 +1488,6 @@
vndk_sp_indirect_ext=vndk_sp_indirect_ext,
extra_vendor_libs=extra_vendor_libs)
- def compute_vndk_cap(self, banned_libs):
- # ELF files on vendor partitions are banned unconditionally. ELF files
- # on the system partition are banned if their file extensions are not
- # '.so' or their file names are listed in banned_libs. LL-NDK and
- # SP-NDK libraries are treated as a special case which will not be
- # considered as banned libraries at the moment.
- def is_banned(lib):
- if lib.is_ndk:
- return lib.is_hl_ndk
- return (banned_libs.is_banned(lib.path) or
- not lib.is_system_lib() or
- not lib.path.endswith('.so'))
-
- # Find all libraries that are banned.
- banned_set = set()
- for lib_set in self.lib_pt:
- for lib in lib_set.values():
- if is_banned(lib):
- banned_set.add(lib)
-
- # Find the transitive closure of the banned libraries.
- stack = list(banned_set)
- while stack:
- lib = stack.pop()
- for user in lib.users:
- if not user.is_ndk and user not in banned_set:
- banned_set.add(user)
- stack.append(user)
-
- # Find the non-NDK non-banned libraries.
- vndk_cap = set()
- for lib in self.lib_pt[PT_SYSTEM].values():
- if not lib.is_ndk and lib not in banned_set:
- vndk_cap.add(lib)
-
- return vndk_cap
-
@staticmethod
def _compute_closure(root_set, is_excluded, get_successors):
closure = set(root_set)