Fix AppZygote process and its children (the actual service processes)
ignoring android:memtagMode attribute in the app manifest.
When starting a new AppZygote process, apply memtag-related flags as
determined by the app manifest (and modified by compat features and
actual h/w capabilities). If this is not done, MTE is always disabled in
an AppZygote process, which makes it impossible to enable it in the
AppZygote's children.
This change has no effect unless MTE is supported in the hardware
(ARMv9) and enabled in the system.
Bug: 207557677
Test: CtsTaggingHostTestCases
Merged-In: Ibf64db8882a1fbffe6c0cc3cd3bc2299b088876a
Change-Id: Ibf64db8882a1fbffe6c0cc3cd3bc2299b088876a
(cherry picked from commit 2e50afbd53)
This reverts commit d27119ce0a.
Reason for revert: This is still an extremely necessary FD leak fix
Test: android.os.cts.SharedMemoryTest passes
Fixes: 206767336
Change-Id: I33cdbde0554b9e1cb7e9f8ea3ee8dfbd30fe8a89
(cherry picked from commit 6d4a948b3d)
Add screen on and doze timers for multiple displays.
For Battery history, charge/discharge logs and UnsupportedAppUsage, the
legacy screen state timers remain, as well. The legacy timers and
screen state tracking will now track overall screen state of the device.
The current overall screen state is the most "important" state currently
active.
Order of screen state importance is: on, doze, doze suspend, off.
Note: Utilizing per display measured energy will be handled in a follow
up CL.
Bug: 194107383
Test: atest FrameworksCoreTests:BatteryStatsTests
Change-Id: I4ad4f54b6897f406e4ec0f59834dd4762083e0d8
Merged-In: I4ad4f54b6897f406e4ec0f59834dd4762083e0d8
Trigger a wake from within the display-layout transition
for the device-state specified in the config.xml file.
Bug: 190593710
Test: Manually verify that the device wakes when opening
Change-Id: I28419ce93a5df6caa7a116860d891814118c7bc2
After we hit the per-UID proxy limit and kill the originating process,
there's actually no guarantee that the proxies to the (now dead)
processes are cleaned up immediately; if the processes get restarted and
start accumulating proxies again, we may go over the global proxy limit
(25k with this CL). Do a GC to make sure we clean them up.
Note that the GC here might not actually clean up all the proxies,
because the binder reference decrements will come in asynchronously; but
if new processes belonging to the UID keep adding proxies, we will get
another callback here, and run the GC again - this time cleaning up the
old proxies. Because of this potential delay, an app may temporarily
have many more outstanding proxies than the high watermark, so also
increase the global proxy limit to 25k proxies.
Bug: 198340142
Test: Manual
Change-Id: I75c7ea4f7aa4a5d448f610014770f1b9788cfb5b
Merged-In: I75c7ea4f7aa4a5d448f610014770f1b9788cfb5b
This fixes a race condition that exists around preparing CE storage, and
a package being reinstalled at the same time.
The normal CE data unlock procedure is something like this:
1. User state is RUNNING_LOCKED
2. UserController calls onBeforeUnlockUser()
3. onBeforeUnlockUser() prepares CE storage
4. onBeforeUnlockUser() calls PackageManagerService.reconcileAppsData()
5. reconcileAppsData() prepares app CE data directories, creating dirs
when needed
6. UserController changes state to RUNNING_UNLOCKING
The race comes into the picture when an app is installed right between
step 5 and step 6; when a new app is installed, PMS does have a function
to create the CE app data directory; but that function only creates CE
data directories when the user state is RUNNING_UNLOCKING (or later); so
even though technically CE storage became available in step 3, other
parts of PMS will only use it after step 6 has completed.
To fix this, we use StorageManagerService to record the fact that CE
storage for a particular user is prepared; then, PackageManagerService
can query StorageManager to ask whether CE storage is prepared. That in
combination with the user key being unlocked is then used as a condition
for creating CE data directories from PackageManagerService.
Bug: 187103629
Test: manual
Change-Id: Ice81ae98441b9ed287e8db4196a041c3d47afce9
Merged-In: Ice81ae98441b9ed287e8db4196a041c3d47afce9
If the lists of custom power components do not match, a crash will occur.
Instead of causing a crash, simply skip incompatible snapshots.
Bug: 196040329
Bug: 200511361
Test: atest FrameworksCoreTests:com.android.internal.os.BatteryUsageStatsProviderTest
Change-Id: I87ba605371a5f3119dcff33f6109e94ee46ab57d
(cherry picked from commit a1ea9ecd56)
Enable ANGLE as a Game Dashboard intervention via Phenotype.
Bug: b/188475576
Test: GameManagerServiceTests
Change-Id: I91894a76b8dcf7a97244cff679a501001734f671
Merged-In: I91894a76b8dcf7a97244cff679a501001734f671
(cherry picked from commit acf3851b8f)
Remove support for ANGLE's libfeature_support_angle.so.
This also removes all of the logic related to checking the rules file,
since libfeature_support_angle.so is what parsed the JSON rules file.
Bug: b/187342779
Bug: b/184757175
Test: make and manual verification ANGLE is loaded
Change-Id: I02ac083fb8144465b60ac0ed2738c73b31addda1
Merged-In: I02ac083fb8144465b60ac0ed2738c73b31addda1
It is a common source of confusion that something went wrong while
triaging bugs.
Bug: 195587219
Test: m
Change-Id: Ieca96a2774f08367b05147b49fcea56dd4f2bfda
These changes cause some noted app ops to be swallowed due to one-way
app ops.
Fixes: 187721493
Test: atest AppOpsLoggingTest
Change-Id: I3b761b65b2e06138fc1d130bf80587f8885bb1d5
To call the media service while bypassing transcoding there are 4 file
descriptors involved:
A: The original file descriptor the app owns and is responsible for
closing
B: Dupe of A, to pass into the MediaStore API as an input to receive a
non-transoding fd
C: The output from the MediaStore API
D: Final fd owned by the media service, after C gets duped over binder
as part of setDataSource
We were leaking (B) and (C). Now we close them appropriately.
See I0124ec8fbd0471237e99bab321f903544f8fe1f8 for another 2 fd leak
fix in MediaProvider
Test: atest TranscodeTest
Test: Manual with 'adb shell lsof | grep <filename>'
Bug: 194828489
Bug: 179804072
Change-Id: I978257bbc4a8f6813b6e6a5ce22124257204f432
Merged-In: I978257bbc4a8f6813b6e6a5ce22124257204f432
The original code is based on /proc/locks manpage. Unfortunately, that
manpage is never correctly updated to include the new field for blocked
locks. The new code detects the extra field. As StringTokenizer is too
heavy, ProcFileReader is used for better performance.
Bug: 194756340
Test: FrameworksUtilTests com.android.internal.util.ProcFileReaderTest
Test: FrameworksCoreTests com.android.internal.os.ProcLocksReaderTest
Test: No /proc/locks parsing exception with blocked locks
Change-Id: I4c9763f9d3091f7d84d2e4b672d7e5cb78b33f59
Revert "Add systrace tag for system property"
Revert "Adding system property tracing"
Revert submission 1403568-sysprop_trace
Reason for revert: makes property get/set non-reentrant
Reverted Changes:
I6f85f3f52:Add systrace tag for system property
Id2b93acb2:Adding system property tracing
Id78992d23:Add systrace tag for system property
I1ba9fc7bd:Add systrace tag for system property
Bug: 193050299
Change-Id: Iaf522b403e51abcf1d49804f35a184b4aa0d3209
Merged-In: Iaf522b403e51abcf1d49804f35a184b4aa0d3209
Test: build and boot a device
(cherry picked from commit 137d78bb67)
Remove getGpuDmabufUsageKb since the kernel no longer
supports the sysfs nodes that this depends on.
Add getGpuPrivateMemoryKb which uses the memtrack hal
to report the system-wide GPU private memory.
Bug: 193226716
Bug: 193465681
Bug: 192621117
Test: dumpsys meminfo
Change-Id: Ib90505ec184339d5acbcd42c67dad3ad65dbd933
The issue occurs when the application proc state changes
rapidly, e.g. from FOREGROUND to BACKGROUND to CACHED.
The original code would sometimes attribute the time slice
to the wrong proc state.
Bug: 192550308
Test: (on cuttlefish) atest --rerun-until-failure 300 FrameworksCoreTests:com.android.internal.os.BstatsCpuTimesValidationTest -- --abi x86_64
Change-Id: Ic22bbfa3aae701014fc016ec9e2d32b1c528d462
Using a direct ByteBuffer allows the buffer to be passed to/from JNI
without intermediate copies.
Test: FileBridgeTests, apps get installed without allocation churn
Bug: 192020559
Change-Id: Ic5965c94ba14de6599af67d2e3bba33cd9996046
Fix the implementation of SystemVibrator to return always no support to
all effect and primitive constants on devices with no vibrator.
Fix: 191414125
Test: FrameworksCoreTests:VibratorTest
Change-Id: I0fd9e27d6e2890df9ee206029488ea70ff50712d
Android 10 did not support file path operations for apps in
scoped storage. But Android 11 and above do support file path
operations for such apps.
Undeprecate getExternalStorageDirectory() and
getExternalStoragePublicDirectory() to reflect the current level of
support.
BUG: 153562415
Test: m
Change-Id: Ibd93ca07a0c08b11a82b70dca8c2cd7d49600354
(cherry picked from commit 74bf4e682d)