Sympton: Oom-adj of provider process will be always 0.
Root Cause: Exception happend in openContentUri
may not call removeContentProviderExternalUnchecked.
Flow:
application [MediaPlayer.setDataSource(Context context, Uri uri)]
uri is invalid, IOException will be caught and below log will appear:
"Couldn't open file on client side, trying server side"
Continue to call setDataSource(String path, Map<String, String> headers)
->mediaserver [MediaPlayerService::Client::setDataSource]
setDataSource(httpService, url, headers) calls openContentProviderFile
->system_server (ActivityManagerService) [openContentUri]
Increase externalProcessNoHandleCount for media provider.
Call [openFile] to media provider.
->android.process.media [check permission for openFile]
enforceReadPermissionInner
->system_server [checkComponentPermission]
Use mediaserver's uid to check READ_EXTERNAL_STORAGE
-> not granted due to it is pure native process, not a known package.
Throw security exception then the flow of openContentUri is broke.
And externalProcessNoHandleCount is unable to decrease.
Application sample code:
String invalidId = "54321";
Uri externalUri = MediaStore.Files.getContentUri("external");
Uri uri = Uri.withAppendedPath(externalUri, invalidId);
mediaPlayer.setDataSource(mContext, uri);
Solution: Move removeContentProviderExternalUnchecked to finally block.
Change-Id: I75eec1f9631e9c6bb18449946d707d51ac21e8a7
* commit 'e9f8d1ddbdfe6bf9d4b4a9cb1fca8703febff742':
Feature request: Increasing advertise data size on non-connectable adv. When the advertisement is non-connectable, give back the bytes to the advertiser where the adv flags would have been. This increases the non-connectable advertisement's advertise data from 24 to 27 bytes.
automerge: fa90087
* commit 'fa900872742252fd0b56760a3390cea38166adb9':
Feature request: Increasing advertise data size on non-connectable adv. When the advertisement is non-connectable, give back the bytes to the advertiser where the adv flags would have been. This increases the non-connectable advertisement's advertise data from 24 to 27 bytes.
* commit '2a46722f96480aed028785e955cbb8cb506df0b2':
Feature request: Increasing advertise data size on non-connectable adv. When the advertisement is non-connectable, give back the bytes to the advertiser where the adv flags would have been. This increases the non-connectable advertisement's advertise data from 24 to 27 bytes.
In practice, recognize that the current transport state may not yet
incorporate a valid restore data stream object, so don't go making
assumptions that it's usable / closeable / etc.
Bug 18379004
Change-Id: I221e04b5b83438e37455e025d67f412d3abb8c50
non-connectable adv.
When the advertisement is non-connectable, give back the
bytes to the advertiser where the adv flags would have been.
This increases the non-connectable advertisement's advertise
data from 24 to 27 bytes.
Bug:18359570
Change-Id: Ia3cc48dca50cc3c51095ee92a489f143f6d350b1
This fixes a deadlock where WindowManagerService can call into
KeyguardService.setOccluded() while holding a lock. As soon as keyguard
receives the call, it immediately needs to check permission and calls
back into the system service which is waiting for the lock to be
released. Boom!
The fix does a quick check of the calling UID and allows the call
if coming from the System UID, thus bypassing the need for a
binder call to checkPermission().
Fixes bug 18362246
Change-Id: Iab4be8a885f330fb2a62ee7e3579966e1447f8b0
It seems we were sort of trying to do this by forcing the AsyncTask
static initializer to run at certain times but it was not sufficiently
reliable. In particular, this resulted in occasional system
server crashes.
Bug: 18192406
Change-Id: Ief73210c60e7680fbed6df74e3e58809b7ec7e4d
adding the following two system properties to control remote
display rotation and device orientation lock:
"persist.demo.rotationlock"=true|false
"persist.demo.remoterotation"=landscape|portrait
Bug: 18317603
Change-Id: Id5fe115f895c6a0e72563036b9a98ff3b5037763
Change AndroidRuntime::startVM to give the new standalone
preloaded-classes file to the runtime for compilation of images.
Bug: 18305157
Change-Id: I32a13357893222b25fbce60bf2367c23fb36ab22
We're still seeing rare cases where a device struggles to create a
new user, probably because of a subtle bug in the FUSE daemon. To
work around this, only allow user IDs reuse after reboot.
Bug: 8302014
Change-Id: Id7f9fb539c6d6d1ff3d47d941af1d9e6b93eca03