Commit graph

58721 commits

Author SHA1 Message Date
Nikita Ioffe
eb3f92f1ba Merge "Add reason why userspace reboot shutdown sequence failed" into rvc-dev 2020-05-01 10:42:49 +00:00
Nikita Ioffe
d172618e38 Merge "Reject services that are both critical and oneshot" into rvc-dev 2020-05-01 10:42:41 +00:00
yongcheol.lee
65e8e3803e Restore fastboot delete-logical-partition command for VTS
1. delete-logical-partition was deleted
	- After merge "Don't require bootloader fastboot for VTS compliance." commit, delete-logical-partition sequence was deleted in LogicalPartitionCompliance test. "create-logical-partition failed" is occurred when run vts fastbootverification module. So restore this sequence.


Test: run vts -m VtsFastbootVerification
Bug: 153913610

Signed-off-by: Yongcheol LEE <yongcheol09.lee@lge.com>
Change-Id: I00366b281eafa5677b0941419a86f2702fb3484b
Merged-In: I00366b281eafa5677b0941419a86f2702fb3484b
2020-04-30 21:52:07 +00:00
Nikita Ioffe
a4e83ad3d7 Add reason why userspace reboot shutdown sequence failed
Test: atest CtsUserspaceRebootHostSideTestCases
Bug: 154772075
Change-Id: I7e4674c474189b0185c020e3e066aea5678d7428
2020-04-30 22:37:15 +01:00
Nikita Ioffe
6a3c94b3aa Reject services that are both critical and oneshot
Test: atest CtsInitTestCases
Test: builds
Test: device boots
Bug: 155275196
Change-Id: I1bb9099371bd1a3f339396ef343c49b054fcef66
2020-04-30 19:52:43 +01:00
TreeHugger Robot
090eb40355 Merge "logd: disable flaky logd.timeout test" into rvc-dev 2020-04-30 16:46:38 +00:00
Tom Cherry
98a2724fbc logd: disable flaky logd.timeout test
This test is repeatedly seen to be flaky.  Disable it until we can run
tests against a dedicated logd instance.

Bug: 155146087
Test: logd-unit-tests
Merged-In: I0cd953955f613e40d17df73f70543d7d2f0925b6
Change-Id: I0cd953955f613e40d17df73f70543d7d2f0925b6
(cherry picked from commit 25a4d708e2)
2020-04-30 08:39:09 -07:00
Elliott Hughes
08929cc389 Avoid zero-initializing our most-used buffers.
The StringPrintf one is heavily used and brings the overhead versus
fmtlib down to 1.5x rather than 2x. I don't have a convenient benchmark
for the other two.

Test: libbase tests & benchmarks
Bug: http://b/155324241
Change-Id: I9e704a360846d5520c53f668e7c315b0c0ea55f8
(cherry picked from commit 8c253d4d42)
2020-04-29 16:49:13 -07:00
Jeffrey Huang
053ade4320 Merge "Add test for AStatsSocket_close()" into rvc-dev 2020-04-29 18:46:26 +00:00
Tom Cherry
03ead14288 Merge "liblog: remove Rwlocks for logd_socket and pmsg_fd" into rvc-dev 2020-04-29 17:46:59 +00:00
Tom Cherry
e70c28bdad init: fix restarting of subcontext
When the subcontext code was redone to allow only one subcontext
(vendor_init), the code for restarting it and for terminating it
during shutdown was not updated, resulting in it not working.

Bug: 155203339
Test: kill subcontext init and notice it restart
Test: subcontext init stops during shutdown
Merged-In: Ib77f59d1e7be0ffcfd3f31c8450dc022c20bb322
Change-Id: Ib77f59d1e7be0ffcfd3f31c8450dc022c20bb322
(cherry picked from commit e3e77d382f)
2020-04-29 08:41:21 -07:00
Tom Cherry
61910f123f liblog: remove Rwlocks for logd_socket and pmsg_fd
These historically used atomics to manage their lifetime.  They were
unfortunately unsafe and later replace with a RwLock.  A lock is
also problematic as it is too heavy weight for the typical use case
and implies that logging is neither async nor fork safe.

This change returns us to using atomics with two key changes:
1) compare_exchange_strong() is used instead of atomic_exchange().
   The latter has a race condition where a separate thread could have
   read the atomic value into a register, while the thread performing
   the atomic_exchange closes that FD.  The new code only changes the
   FD in the atomic if it is uninitialized.
2) Using the fact that DGRAM sockets can have connect() called on them
   multiple times, it uses a single logd_socket for the duration of
   the program.

These sockets are thread/async/fork safely created and accessed.

The one caveat is __android_log_close(), which is intended only to be
used by zygote when it is single threaded and is therefore not thread
safe.  It will close this socket and reset the underlying variable,
such that the next log message will go through the above
initialization.

Bug: 65062446
Test: logging works, logging unit tests
Test: new unit test
Merged-In: Ia4dbf7479dbe50683d124558ab2f83bff53b8f5f
Change-Id: Ia4dbf7479dbe50683d124558ab2f83bff53b8f5f
(cherry picked from commit 7acfba274c)
2020-04-29 08:39:26 -07:00
Tom Cherry
806c0206b8 Merge "base: reimagine line splitting in logger.cpp" into rvc-dev 2020-04-29 15:05:36 +00:00
TreeHugger Robot
8d24215d33 Merge "libbase/liblog: set min_sdk_version" into rvc-dev 2020-04-29 05:45:30 +00:00
TreeHugger Robot
1e8f30f919 Merge "Moves some shared_libs to static_libs for vts_libsnapshot_test." into rvc-dev 2020-04-28 23:14:33 +00:00
Jeffrey Huang
6cc1d41527 Add test for AStatsSocket_close()
Bug: 154871176
Test: atest libstatssocket_test
Change-Id: If8aa26a9a9a75382b6f8779c23974a7008bd387a
2020-04-28 15:22:28 -07:00
Dan Shi
3174b3ae99 Merge "Add vts_processgroup_validate_test to vts suite" into rvc-dev 2020-04-28 16:56:06 +00:00
TreeHugger Robot
00e15d9e45 Merge "llkd: Print thread group before panic the kernel" into rvc-dev 2020-04-28 15:21:10 +00:00
Jooyung Han
0ed04aef4c libbase/liblog: set min_sdk_version
Modules contributing mainline modules (APK/APEX) should set
min_sdk_version as well as apex_available.

For now setting min_sdk_version doesn't change build outputs.
But build-time checks will be added soon.

Bug: 152655956
Test: m
Merged-In: If4ff1fbc31e5be3f5611a4713ae4032aba4ee5f2
Change-Id: If4ff1fbc31e5be3f5611a4713ae4032aba4ee5f2
(cherry picked from commit 3851f7e836)
2020-04-28 10:56:08 +09:00
Tom Cherry
953c0deadb base: reimagine line splitting in logger.cpp
Previously, we would split messages by line and call the logger
function for each line.  We would hold a lock during this, to ensure
that multiple threads would not interleave their messages.

There are a few problems with this approach:
1) Using a lock is not efficient and is not fork safe
2) With APEX, there is one lock per instance of libbase, so we must
   move the lock to a location where all instances can access it, or
   perform the line splitting in a way that does not require the lock.

To solve these issues, we reimagine line splitting.
1) We move the lock out of the LogMessage::~LogMessage() and make it
   the logger's responsibility to split lines, giving the logger the
   option to lock or not.
2) We do not need any locks at all for StderrLogger.
   Instead, we generate a single string that contains all of the lines
   with their appropriate log header.  A single write() call is used
   to output this at once.
3) Logd handles log messages with newlines correctly, however it only
   accepts up to a maximum size of log message.  Therefore we
   separate the incoming log message into chunks, delimited by new
   lines, up to that maximum size, and send each of those to logd.
   Note that this is the strategy used in
   android.util.Log.printlns().
   This should solve a majority of use cases, since the maximum size
   that logd accepts is nearly 4K, while remaining lock free.
   If interleaving messages absolutely must be avoided, a lock can
   still be used given 1) above.

Bug: 65062446
Bug: 153824050
Test: logging, particularly multi-line stack traces, show correctly
Test: existing and new unit tests
Change-Id: Id0cb5669bee7f912da1e17f7010f0ee4c93be1e3
(cherry picked from commit 36d31c530d)
2020-04-27 16:25:27 -07:00
Daniel Norman
f1d37369ed Moves some shared_libs to static_libs for vts_libsnapshot_test.
These shared_libs are missing from /system/lib/ on 64-bit devices.

Test: Build, install, and run 32bit vts_libsnapshot_test.
Bug: 154115505
Change-Id: Iaf2014748546a055d35e4fe0e24969eef13db7fa
2020-04-27 15:40:38 -07:00
Dan Shi
20ba98c1a7 Add vts_processgroup_validate_test to vts suite
Bug: 154727600
Test: atest vts_processgroup_validate_test
Change-Id: I53bd4f9fd097878deaa77159feb2d48f66c464d1
2020-04-27 13:34:20 -07:00
TreeHugger Robot
19685064b9 Merge "Convert vts configs to Android.bp" into rvc-dev 2020-04-27 17:05:10 +00:00
Automerger Merge Worker
cb02c1f825 Convert vts configs to Android.bp
Bug: 154727600
Test: treehugger
Change-Id: Ibe8ed03555ac78ee38be6511eb4169cddfcd3555
Merged-In: Ibe8ed03555ac78ee38be6511eb4169cddfcd3555
2020-04-27 16:36:53 +00:00
TreeHugger Robot
312bc65194 Merge changes I25df8eec,I493ff192 into rvc-dev
* changes:
  result.h - fix bugprone-suspicious-semicolon warning
  expected.h - fix bugprone-forwarding-reference-overload warnings
2020-04-27 16:13:12 +00:00
Woody Lin
15c65cc321 llkd: Print thread group before panic the kernel
Debugging information for addressing the reason why the process stops as
a zombie, can be found by observing the call trace and running status of
threads in thread group of the zombie process.

Bug: 154667692
Change-Id: Icd7fa2161e88b08fd5ce0d5dc3a3790ed4ac02d1
(cherry picked from commit e5a09d8da5)
2020-04-27 16:11:53 +08:00
Maciej Żenczykowski
c708c3fa37 result.h - fix bugprone-suspicious-semicolon warning
Fixes:
  system/core/base/include/android-base/result.h:
  133:94: warning: potentially unintended semicolon [bugprone-suspicious-semicolon]

Bernie says:
  it probably means that there's a parser bug with "if constexpr"

  maybe, at static analysis pass, the "if constexpr" was evaluated to false,
  and the compiler removed the "then" block from the AST...
  ... and then it thought you had written it that way :-)
  https://reviews.llvm.org/D46027

Test: builds
Bug: 153035880
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I25df8eeca4ec06b3180c1cd21b554fc583c5581a
Merged-In: I25df8eeca4ec06b3180c1cd21b554fc583c5581a
2020-04-24 17:32:00 -07:00
Maciej Żenczykowski
62ae965b0a expected.h - fix bugprone-forwarding-reference-overload warnings
Fixes:
  system/core/base/include/android-base/expected.h:
  186:13: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
  195:22: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
  611:13: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]

To quote Tom Cherry:
  I'm a bit confused at what's happening there.
  I think it's a bug in the linter itself.
  The general solution to that problem is a heavy dose of std::enable_if<>
  to hide that constructor when the 'U' parameter is the same class,
  but those constructors do have the necessarily std::enable_if<> lines.

  I think the problem is that the linter doesn't check that the macro
  _ENABLE_IF() expands into std::enable_if<>.  Let me try explicitly
  putting the std::enable_if<> instead of the macro and check if it
  goes away.

  I expanded the macro but the linter doesn't still doesn't accept
  the format of `std::enable_if_t<(condition_here)>* = nullptr`.
  It does accept `typename Enable = std::enable_if_t<(condition_here), void>`,
  which is the syntax used on their example here:
    https://clang.llvm.org/extra/clang-tidy/checks/bugprone-forwarding-reference-overload.html.

  That latter syntax doesn't work for us.
  See the Notes section on
    https://en.cppreference.com/w/cpp/types/enable_if
  as a reference for why what we're doing is correct.

Test: builds
Bug: 153035880
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I493ff19208cc104f5f176a36ec23fbcb914388f7
Merged-In: I493ff19208cc104f5f176a36ec23fbcb914388f7
2020-04-24 17:31:52 -07:00
Nikita Ioffe
e343f439a3 Merge "Make /data/apex/active world readable" into rvc-dev 2020-04-24 21:44:40 +00:00
Jeffrey Huang
18d239c5c5 Add require root to libstats tests
root is required for coverage tests

Bug: 154652564
Test: m -j
Change-Id: I3325565818a275a069aed35a34bf3a58ee4b5bfc
2020-04-24 10:44:25 -07:00
TreeHugger Robot
61e2b0104a Merge "expected.h - fix bugprone-branch-clone warning" into rvc-dev 2020-04-24 02:39:42 +00:00
Ytai Ben-tsvi
a6f8993f8b Merge "Control audio HAL services in start/stop" into rvc-dev 2020-04-24 00:30:36 +00:00
Treehugger Robot
ffaa7d6751 expected.h - fix bugprone-branch-clone warning
Fixes:
  system/core/base/include/android-base/expected.h:606:39: warning: repeated branch in conditional chain [bugprone-branch-clone]
    if (x.has_value() != y.has_value()) {
                                        ^
  system/core/base/include/android-base/expected.h:608:4: note: end of the original
    } else if (!x.has_value()) {
     ^
  system/core/base/include/android-base/expected.h:610:10: note: clone 1 starts here
    } else {
           ^

Test: builds
Bug: 153035880
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie67a8bb1bf622319adea15466c42077e0e9b1a18
Merged-In: Ie67a8bb1bf622319adea15466c42077e0e9b1a18
2020-04-24 00:24:38 +00:00
Jeffrey Huang
6d99e68e74 Merge "Tag libstatspull and libstatssocket tests as MTS" into rvc-dev 2020-04-23 23:55:31 +00:00
TreeHugger Robot
04083e2ba8 Merge "logcatd: unset pinning log files" into rvc-dev 2020-04-23 22:52:26 +00:00
Tom Cherry
c53c64c0ec Merge "Remove thread safety from libbase logging / liblog" into rvc-dev 2020-04-23 21:40:23 +00:00
Jaegeuk Kim
63cdd7095b logcatd: unset pinning log files
commit 5327d931ac ("logcatd: fallocate and fadvise to logcat files")
introduced pinning log files in order to avoid f2fs fragmentation.

But, logcatd does not guarantee to write data within fallocated 2MB space.
So, we can see some bytes written beyond 2MB boundary which results in
pinning small chunks across the filesystem. This makes F2FS GC have to unset
the pinning blocks via GC loop. If this happens during checkpoint=disable
at booting time, we can see long delay to mount /data accordingly.

Bug: 136483670
Bug: 137180754
Bug: 149418646
Fixes: 5327d931ac ("logcatd: fallocate and fadvise to logcat files")
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: I986221d6d1da9b8e46e63d1be98ddf0ce4cb099f
2020-04-23 13:53:37 -07:00
David Anderson
d029ccd0d6 Merge "liblp: Fix tests for linear extent overlap." into rvc-dev 2020-04-23 20:51:15 +00:00
TreeHugger Robot
386e91d21c Merge "adb: Avoid extra string construction" into rvc-dev 2020-04-23 20:11:05 +00:00
Ytai Ben-Tsvi
6025b731e6 Control audio HAL services in start/stop
Some system services (e.g. SoundTriggerMiddleware) assume that
whenever they start, the audio HAL is in its default (reset) state.
init.rc scripts tie the lifetimes of the audio HAL and system
processes, but when using stop/start this is not the case, and this
may cause spurious crashes in this case.

stop/start is apparently being relied on in some test infrastructure,
so this change is needed to avoid causing problems for those systems
or false detection of problems, which are not actually present in
production.

Bug: 154029444
Test: Manually verify that the audio HAL is stopped on
      'adb shell stop', restarted on 'adb shell start' and that the
      system boots correctly after.
Change-Id: I39878b978b47a169c4fe446c43d7347809d15e06
2020-04-23 10:42:55 -07:00
Tom Cherry
2ae56067bf Remove thread safety from libbase logging / liblog
There are no libbase users that require thread safety for SetLogger,
SetAborter, or SetDefaultTag  and the equivalent liblog symbols are
unreleased, thus have effectively no users.

It is hard to imagine a scenario where a user would need to use these
functions in a multi-threaded program, and it is unreasonable for all
users to pay for thread safety for a vast minority of potential
scenarios. Thread safety implies less efficiency and necessarily means
that these functions are neither fork safe nor async-signal safe, and
we do have users who depend on those characteristics.

It is always possible for users of the non-thread safe versions of
these functions to build thread safe versions on top of them.  For
example, if a user needs a thread safe SetLogger(), they can use the
non-thread safe SetLogger at the start of their program to register a
logger that has its own lock and pointer to a logger function.

Bug: 119867234
Test: logging unit tests
Change-Id: I8afffec1a6957d3bda95502a4c59493e0c5049ce
(cherry picked from commit 53d301c29b)
2020-04-23 10:33:03 -07:00
Jeffrey Huang
2f51ad7b86 Tag libstatspull and libstatssocket tests as MTS
create both 32 and 64 bit variants
fixes libstatssocket_test for 32 bit devices

Bug: 154652564
Test: make mts, adb push, adb shell all 4 tests
Change-Id: Ia6b51686c06e786b38cb3713315977533f1bb819
2020-04-22 17:13:24 -07:00
David Anderson
f81ec0e43a liblp: Fix tests for linear extent overlap.
The "OwnsSector" tests did not work if one range fit completely inside
another range. The new OverlapsWith() methods address this case.

Bug: 154277287
Bug: 154646936
Test: liblp_test gtests
Change-Id: I1a59069db4ffe4f13c45963c4847cff7b3dd3dfc
2020-04-22 14:39:04 -07:00
Nikita Ioffe
1b8c391c29 Merge "Observe new apexd status value of "activated" as required." into rvc-dev 2020-04-22 18:43:01 +00:00
Oli Lan
7c59fc4fb4 Observe new apexd status value of "activated" as required.
- Cherry pick of aosp/1228482

As of aosp/1224611, there is a new step in the preparation of APEXes
where init calls back into apexd after DE user data is unencrypted to
allow DE apex data to be snapshotted or restored.

aosp/1228581 introduces a new apexd.status value of "activated" that
is set once APEXes are activated but before this snapshot has occurred.

init may execute "perform_apex_config" once this has occurred, so this
CL changes init to wait for "activated" rather than "ready" before
doing this.

Bug: 148672144
Test: build & flash, check boot completes and check in logs that init
waits on the correct status value.
Merged-In: I339580bf593d3b09a5dff749ac2a5d1952bcb210
Change-Id: I71b62c9dd2f7951811606002f38612784d3d9086
2020-04-22 12:37:27 +00:00
Greg Kaiser
cb885c24fc adb: Avoid extra string construction
Bug: 150827486
Test: TreeHugger
Change-Id: Ie03062a17b98866f1bc419a7e509461cf4e6bb80
Merged-In: Ie03062a17b98866f1bc419a7e509461cf4e6bb80
2020-04-21 20:34:44 -07:00
Nikita Ioffe
71278019d1 Make /data/apex/active world readable
This will allow Phonesky to read APEXes under /data/apex/active.

Test: adb shell su 10114 dd if=/data/apex/active/com.android.tzdata@300000000.apex of=/dev/null
Bug: 154635217
Change-Id: I5278897413ca0e32aed9d1c7f82e48138bc51404
2020-04-21 21:14:59 +01:00
TreeHugger Robot
af9240abc9 Merge "Add /mnt/androidwritable for MOUNT_EXTERNAL_ANDROID_WRITABLE apps" into rvc-dev 2020-04-21 11:08:07 +00:00
Jiyong Park
132bb5f861 Merge changes from topic "apex_available" into rvc-dev
* changes:
  adbd: add apex_available and visibility for internal libs.
  Set apex_available property
  Set apex_available property
  Set apex_available property
  Set apex_available property
2020-04-21 03:15:39 +00:00
TreeHugger Robot
0970bcf9f7 Merge "adb: change mdns tls service names (RFC 6763)." into rvc-dev 2020-04-20 22:41:29 +00:00