Symptom: No activity was started for startActivity, low repro rate.
Root Cause: Starting activity on a process which was killed by ActivityManagerService.killUnneededProcessLocked() and before receiving AppDeathRecipient of it.
Solution: Choose the flow of starting a new process if ProcessRecord.killedByAm is true.
Change-Id: Ida2639b0fb4631222fc92d65aadc9fd2da637b45
This complements https://android-review.googlesource.com/#/c/103231/
where the instruction set was mapped just for comptilation. The same
should have been done for move,remove and getSize.
The list of dex code ISAs is alo de-duped.
Bug: 16185267
Change-Id: I8fe453a800812e382e8f41b5f7922997aa9c18a9
In the presence of a native bridge it is more efficient to compile the
dex directly to the native ISA than to use the shared library ISA as a
reference.
This can be achieve by configuring the readonly system properties to map
between the .so ISA and the desired dex code .ISA (e.g.
ro.dalvik.vm.isa.ISA1=ISA2).
Bug: 16185267
Change-Id: I50baa7b37e1465b9adf72d6f6b96f526a08d59c7
There was a JNI error where when you got an OOM and called
report_exception, it would call two NewStringUTF in a row without
checking the return values. This could mean that the first one
threw a new OOME and the second one would cause a JNI error when
it also attempted to throw an OOME with a pending OOME.
Bug: 16843627
Change-Id: Ie4f9f9a5f8b7993cd3655d42a6718c0a5e1199f8
This will allow us to conditionally change the compiler-filter based on other properties.
Bug: 15165413
Change-Id: I1676987c69a3cad4217dc4b56465ef3ae886122a
When switching to a newly created user, the user may face this bug when he opens the RecentTask screen.
A possible bug scenario is described as follows:
A user id of a removed user may be recycled when created a new user.
However, mRecentTasks is not correctly controlled so that old information may still remain and be possibly mapped to wrong user.
This patch prevents this bug by explicitly removing old information in mRecentTasks when removing existing user.
Change-Id: I1874dbd604598a5d740ae1e034981e21214c15c6
Signed-off-by: Eunae Kim <eunae.kim@lge.com>
Sympton:
During testing, skip kill native crash process manually because it will continue to die by default.
Root Cause:
Large process may take some time to do coredump.In auto test, crash process will be killed immediately that results incomplete coredump file.
Solution:
If the tester (IActivityController) will handle app crash event,
Do not kill native crashed process if the rom is debuggable.
Change-Id: Ia360af147d694125d440e5ba2f958c4759a50494
Sympton:
Next activity only adds to history but does not launch/resume then results ANR.
Root Cause:
In a rare timing, some windows are switched at the same time,
it will cause some finishing records on the top temporarily,
then set startIt to false that skip to resume the real top activty.
Solution:
If all activities in a task are finishing, do not use it to check.
The behavior/checking is the same concept as in JellyBean:
// If starting in an existing task, find where that is...
boolean startIt = true;
for (int i = NH-1; i >= 0; i--) {
ActivityRecord p = mHistory.get(i);
if (p.finishing) { // <--
continue;
}
Change-Id: I9d81a7b5182400c52e173da23eee61c74692beee
Also, note that this method never worked. Locale
settings were stored with underscores (like Locale.toString)
but matched against AssetManager.getLocales() which
returned language-tag like output.
bug: 10090157
Change-Id: I36ffea6e39ff7d1907b2787f8fd4545c24d326a8
Symptom: Sometimes HardwareLayer display is corrupted.
Root Cause: In some cases, ViewRootImpl destroys HardwareRenderer without
clearing HardwareLayers in the view hirarchy. If the system trims memory fully
and kill the glContext at the same time, HardwareLayer may corrupt.
Solution: Clear Hardware-Layers before system destroys HardwareRenderer.
Reproduce steps: Modify the cache's trim memory mechanism to make it easier to
trim fully, HardwareLayers implemented in app will easily be corrupted.
Modification of the cache is not required but make it easier to reproduce.
Change-Id: If57c802cdacf8dc37cbbcc199e74f9482834f981
Fixes an issue where the stencil buffer is corrupted
(used in overdraw debugging, path clipping) when used in
conjunction with a HW accelerated WebView.
bug:15023700
bug:16465551
Change-Id: If201b503931380f7107a34e9a9a2f877a50f72b1
If an application that has a broadcast receiver is killed
during broadcasting, thread variable of ProcessRecord becomes null
so that IIntentReceiver#performReceive() is called
in BroadcastQueue#performReceiveLocked(). But if binder driver has not
noticed the death of the application yet, it can't throw
DeadObjectException. After that, binder driver notices. But it can't
notify DeadObjectException to the caller because performReceive() is
async call. So broadcasting keeps on waiting for finishing
performReceive() until timeout.
This change checks the death of the application before calling
performReceive() and skips broadcasting to the receiver
if the application has already died.
Change-Id: Ifa02b8b1a7e7b6fd314de90fedff5b7a5326825d
Symptom:
When switch between two home activities, the home process might not be updated to the correct one. In that case, the home activity might be killed easily.
Root Cause:
The home process is updated only when a home activity is newly created or being restarted. ActivityManager did not update the home process when simply resume a home activity.
Solution:
Update home process when home activity resumed
Reproduce Steps:
1. Install a launcher application, such as Apex Launcher
2. Press home key to change to Apex Launcher by "Just once" option
3. Press home key to switch back to original home activity by "Just once" option.
(The home process is still the Apex Launcher's process because ActivityManager does not update the home process when resuming the original home activity.)
Change-Id: I046279ca7ba851a283ee67ea19202890f7b3f343
The failing scenario is
- install v1
- run
- update to v2
- update to v3
- run
last run was failing with initial multidex library versions because
it's still running on v1 extracted secondary dex files.
(cherry picked from commit 05e2a94c8b510131f43a686f5188d4c0f2a5eebd)
Change-Id: Ibb5d16642b127ee4c0baddc4f6ba461c11d25f90
Symptom:
The root activity not always located at index 0 of the task.
For example, the index 1 activity will become the new root
when the original root activity (at index 0) finished.
The new root activity might be finished unexpectedly before
the original root activity actually destroyed.
Solution:
Check frontOfTask to avoid finishing the root activity unexpectedly
Change-Id: I623ab97e9c95c83b3cfe7c9dfc151a291a391ea4