296 Commits

Author SHA1 Message Date
Christopher Tate
6ee412d51d Also dump system process threads halfway through the watchdog interval
This gives us a snapshot of what the system process was doing after 30 seconds
of apparent inactivity as well as after 1 minute, to help distinguishing actual
deadlocks from too-slow progress, livelock, etc.

Change-Id: I19758861d1b25f298e88788e8f1c7ec7bf828823
2010-05-28 12:23:16 -07:00
Jeff Hamilton
acf8474b68 Don't enforce broadcast timeouts for PRE_BOOT_COMPLETED broadcasts.
They're designed to handle one time upgrade code, which may
take a significant amount of time. Third party code cannot
receive this broadcast so the timing should be able to be
kept under control.

Bug: 2713849
Change-Id: I3733b6530198bebd9b8c2ba6f9f27a7999336b8d
2010-05-26 14:02:56 -05:00
Dianne Hackborn
6f86c0e64b Fix issue #2676378: Activity Manager Crash on FRF40
D'oh!

Change-Id: If1b43ff5f230f9bf0de0887deb1b25dcf6aa6e66
2010-05-11 14:20:52 -07:00
Dianne Hackborn
906497c574 Hopefully fix issue #2662536: Why is launcher being killed?
It looks like there was a subtle bug where Process.setOomAdj() could
return false just because the given process doesn't exist, even though
it is documented to only return false if OOM killing is not supported
at all.  This would cause the activity manager to fall into its code
path of trying to clean up processes itself, which it does a much
poorer problem at.  I am thinking we may be seeing this problem more
now that the activity manager is killing background processes itself
when there are too many of them.

In addition, this change cleans up and reduces some of the logging
around killing processes.

Finally, try to improve process LRU management a bit by taking
into account process dependencies.  Any dependent processes are
pulled up in the LRU list with the processes that is actually
moving.  Also, we bring a process up if someone accesses its content
provider.

Change-Id: I34ea161f839679345578ffe681e8d9c5d26ab948
2010-05-10 17:19:58 -07:00
Dianne Hackborn
4416c3d6e4 Fix issue #2643754: Launcher is caching widget layouts for too long
With the .apk file names now changing during an update, we need
to make sure to flush all caches related to a package when the
package is removed.  Otherwise we can continue to use the old
package, since its old file may still exist if we try to load it
too soon.

Change-Id: I15f08dffca3feac999dbca4f24bef12a30ca0a66
2010-05-04 17:22:49 -07:00
Dianne Hackborn
149427cd90 Fix issue #2621809: Kill! Kill! Kill!
Stop! Stop! Stop!  Spamming the log.

Change-Id: I13f432b49d8c85165873566d58e2fb2714b1263e
2010-04-23 14:20:03 -07:00
Dianne Hackborn
8633e68ebd Fix issue #2619247: Music sometimes stops playing when navigation talks
When a service transitions from foreground to background, we now push it
to the top of the LRU list.  Also fix the activity manager to take care
of killing processes if we go beyond a reasonable number of background
process to keep around.

Change-Id: Ic9f44c02af7a111ee6f1d06142386b301948bafe
2010-04-22 16:11:18 -07:00
Brad Fitzpatrick
b213d103d3 Reduce lock contention, removing unnecessary synchronization.
The value returned is purely a function of what's passed in, all
following final members.

BUG=2606839

Change-Id: I506fb9b1f3be965576c2b3317a30ff1f990ccda3
2010-04-19 11:58:52 -07:00
Brad Fitzpatrick
01fad4a526 Ease contention on the mProcessStatsThread mutex in updateCpuStats.
BUG=2606839

Change-Id: I444af0bb4a7b0be7ebf9ee5887805f2f09a426d0
2010-04-19 10:47:40 -07:00
Dianne Hackborn
b67fa45c26 Fix issue #258640: Automatic propagation of FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
Make sure, if an activity is started with clear task when reset, if that
activity is finished in the middle of a stack that the behavior is retained
by propagating it to the next activity.

Change-Id: Ie31b8f968558b0e64e0ef7efa55950a722c6afa5
2010-04-14 18:01:43 -07:00
Dianne Hackborn
399cccb857 Fix issue #593153: Broadcast time out when sending...
...ordered broadcast for ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE

Turns out this was because the broadcast receiver for ContextImpl was
not correctly being created, so when it received an ordered broadcast
it would not tell the activity manager when it was done.

This is now fixed, along with a ton of superficial changes to debug
output to help track this down and a little cleanup of dealing with
error cases in dispatching broadcasts.  Also a fix for a NPE when
dumping the broadcast state.

Finally, a little fiddling with package manager to get rid of a lot
of the noise when removing and re-adding packages on the SD card.

Change-Id: I961c14836dc613d3ea8122b6e910ef866e7fcb25
2010-04-14 09:54:21 -07:00
Dianne Hackborn
53d9264de4 Fix issue #2555171: Switching to app immediately after unmounting...
...SD card causes reboot.

Add option to not include temporarily unavailable recent tasks,
for the recent tasks UI to not display them.

Change-Id: I1495ca217b4292fd56f537459b44c0624262c292
2010-04-13 17:35:22 -07:00
Dianne Hackborn
472ad8716e Fix issue #2528537: android.os.DeadObjectException
Nice.

Change-Id: I6142b12b5770b508ff4a43361da6f5e52bed2de9
2010-04-07 17:31:48 -07:00
Dianne Hackborn
f83c555d8a Fix issue #2561067: Screen Display half faded...
Also a little tweak to the activity manager to behave better when
an application crash, to hopefully mostly avoid situations where
you get into a crash loop.

Change-Id: I627cc1da3a0f16a180957f02bfbe5c81ecd31758
2010-03-31 22:47:10 -07:00
Dianne Hackborn
e252246655 Fix issue #2547337: switching night modes
Dumb.

Change-Id: Iaa72eaac54422f7fd95cf1050f6b7b6da55af0c3
2010-03-29 21:13:31 -07:00
Dianne Hackborn
ad5499dd20 Hopefully get rid of some ANRs.
Don't hold the activity manager lock the entire time we are processing an ANR,
which often causes us to cause a second ANR as someone else calls into the
activity manager and gets blocked.

Change-Id: Ife4db82b12d6f4378ac2705bd6f60beb1244a1e6
2010-03-29 21:07:23 -07:00
Dianne Hackborn
d49258fed4 Fix issue #2544466: Car Home brightness icon comes and goes while phone is in car dock in FRE83
There was a really dumb bug that was causing us to not always apply
the new configuration.  As a result of fixing this, there were new
glithes in the transition between car and regular mode, so further
work here to fix that.  And since I was actually working during the
night and seeing night mode, I noticed how obnoxiously bright the
status bar is compared to the car home at night, so it now nicely
dims itself when we switch to the night config.  Oh and in doing
that I also found and fixed a bug in dispatching config changes to
a window (where they wouldn't get dispatched if the window didn't
resize).

FINALLY...  tweak the wallpaper enter/exit animations a bit to
make them a little smoother.

Change-Id: I4e062093cbcfbc919307799a794846db2920216f
2010-03-26 12:52:53 -07:00
Suchi Amalapurapu
f7f5dda5e5 Add new activity manager method to get list of running applications installed on sdcard.
Use new method in UsbStorageActivity.
Fix moving dex files.
moveDex should be suffixed with LI since it uses Installer

Change-Id: Id5ef0254578e84b9aae2c2ac44f722eb5a0fda1c
2010-03-23 16:56:08 -07:00
Dianne Hackborn
2ccda4dc8d Improve switching to car mode, retain night mode option.
Fiddle with how we go into car mode to try to ensure we get a clean
transition.  Also have the system take care of remembering the night
mode setting so it will stay at what you want.

Change-Id: Icb94fdd961c7a192f7707ec71544485a1ea12455
2010-03-22 21:49:15 -07:00
Suchi Amalapurapu
e99bb5f10b Add new method call back in MountService.
PackageManager invokes this call back when its done handling
the media status update.
Add new uid check for updateExternalMediaStatus
Change killPids method in ActivityManager.
Remove mountsd command in Pm.java We cannot arbitrarily enable/disable
packages in PackageManager now.

Change-Id: I28dcba4afd2b4486f68abdaa1628a31b66544c91
2010-03-22 10:49:49 -07:00
Christopher Tate
4cee725b1f Use atomic++ rather than lock/++/unlock in the input dispatch code path
Decouples the input dispatch thread from the battery-stats object lock regime,
to avoid the possibility of ever blocking the input dispatch thread on its
behalf.  The stats object is widely used and can sometimes be locked for a
very long time (on the order of seconds) during certain extensive dump
operations.

This change does not alter the data format of the battery stats' externalized
representations.

Fixes bug #2530346

Change-Id: Iee288be3bf4936641b532dceecb8f6de8f552bf0
2010-03-19 15:28:43 -07:00
Dianne Hackborn
1afd1c90eb Maybe fix issue #2457218: Corrupt batterystats.bin file preventing phone boot - LIBtt68127
No steps to repro, but makes the code more robust by using the standard
JournaledFile class and doing sanity checks on the input it reads.

This required moving the JournaledFile class in to the framework (and
we really should get rid of either it or AtomicFile, but they have
different recovery semantics so that is tough).  Also went through and
cleaned up the file management in various places.

Change-Id: Ieb7268d8435e77dff66b6e67bb63b62e5dea572e
2010-03-19 13:59:07 -07:00
Dianne Hackborn
d4310ac944 Rework permissions to be retained when an app is temporarily uninstalled.
This allows us to keep the assigned permissions when apps are temporarily
removed due to the SD card being unmounted, and also if you use the
facility to uninstall an app but keep its data.

Also fixes issue #2515189: Potential permission spoofing attack in
Android (external bug 7166)

Change-Id: I2a120ec938552028c989f9e0e890c32773957738
2010-03-18 02:02:17 -07:00
Dianne Hackborn
5c83a5f2cc resolved conflicts for merge of 2ecce34f to master
Change-Id: Ic4e38199beaf8c16f9d28ac5296e8aaa61788b36
2010-03-12 16:46:46 -08:00
Dianne Hackborn
061d58a101 Fix problem with starting a translucent activity in onCreate().
Fixes issue #2437252: Starting activity by means of startActivityForResult
causes 5 seconds delay if "android:windowIsTranslucent" is true

The optimization to avoid showing an activity window when a new
activity is being started was a little too aggressive.  Now it
avoids doing this if there is not actually a fullscreen activity
on top to cover it.

Change-Id: I630e37a1f1d3b874b5a25572cbf887cebc2e3e91
2010-03-12 15:41:24 -08:00
Dan Egnor
a455d19486 Record some logcat output with crashes, ANRs, etc..
Shelling out to logcat from the system server makes me queasy,
so this is turned off by default -- it must be enabled individually
for each error type (system_app_anr, etc) via a secure settings
value (which I plan to poke into from gservices for internal use).

Even when enabled, it happens in a side thread, unless the system
server is about to die anyway (system server restart).

Change-Id: Id6d88bcd78d3625f0364a5fe9c771046601a5a14
2010-03-12 13:01:45 -08:00
Mike Lockwood
b62f959430 Fix problems with new PowerManager.reboot() implementation.
ShutdownThread.reboot() does return so we need to block after calling it
to prevent PowerManager.reboot() from returning.

Since PowerManager.reboot() can now take significantly longer than before,
we now ignore ANRs during shutdown.

Change-Id: Ibceeb265ae382567215f6a399108d8be3a7bbc95
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-12 12:35:24 -05:00
Josh Bartel
2ecce34f2f Synchronize access to *Locked() functions
Several places were calling *Locked() functions without properly
synchronizing.

Change-Id: Ie39b6592da8bb5f4a5a1e738c45f228256116ec4
2010-03-11 08:30:16 -06:00
Dianne Hackborn
b8b11a0b1d Further improvements to window management!
Fix issue #2493497: Stuck in the Emergency dialer - Home/Back keys doesn't work
This was another case of not updating the window focus when needed, this time
when the lock screen was hidden.

Also re-arrange the layout/animate flow to address issues where you would see
a flicker of whatever was behind the lock screen when showing a new activity that
hides the lock screen.  This was because we were deciding to hide the lock screen
during the layout phase, which meant we had to do it without considering whether
it had drawn.  So we could hide the lock screen before the window is shown for the
first time after being drawn.  Now we can do this in the policy during animate, so
we can wait until the window is drawn and actually being shown.

The flow in perform layout is thus significantly changed, where the layout and
animate loops are both under the same repeating loop.  The actual flow from this
should be the same, but it now allows the policy to request a new layout after
the animation loop is done.  This actually cleans up a number of things in this
code as the complexity has increased.

Finally this includes a change to the ui mode manager when switching modes, to do
the resource configuration switch at a different time.  This makes transitions
between modes much cleaner (though not yet perfect).

Change-Id: I5d9e75c1e79df1106108dd522f8ffed6058ef82b
2010-03-10 16:47:57 -08:00
Josh Bartel
7f2087435e Rename functions which ought to be named *Locked()
Several functions operate on variables to which access needs to be
synchronized.  However, it happens that the functions in question
are only ever called from places which have already synchronized.
Therefore, nothing is really wrong, but the functions ought to
have 'Locked' appended to their names, to indicate that it is the
caller's responsibility to synchronize before calling them.

Change-Id: I44e7dc0dff6da9436677cb10908dce41ffeba195
2010-03-10 17:27:48 -06:00
Christopher Tate
4528186e0d Refactor android.backup => android.app.backup
Change-Id: I0b21316ff890d7f3c7d4b82837bb60670724c2e8
2010-03-05 16:27:15 -08:00
Dan Egnor
9bdc94b7a4 Improve watchdog diagnostics.
Capture stack traces from the system process using the same
mechanism as ANRs (which will initialize traces.txt, etc).
Also record the watchdog reset in the dropbox for uploading.

Bug: 2475557
2010-03-04 17:31:27 -08:00
Dianne Hackborn
20cb56e26e Fix some bugs.
Bug #2376231: Apps lose window focus (and back key causes ANR) if the
lock screen is dismissed while the phone is in landscape mode

This is another case where we weren't recomputing the focused window
after changing the visibility policy.

bug #2479958: Investigate source of "Resources don't contain package
for resource number 0x7f0a0000"

Um, okay, so it turns out there were bugs all over the place where
we would load an XML resource from a another application, but not
use the Resources for that application to retrieve its resources...!
I think the only reason any of this stuff was working at all was
because it typically only cared about retrieving the resource
identifiers of the items (it would look up the values later).

Bug #2401082: Passion ERE26 monkey crash - InputMethodManagerService

Add some null checks.
2010-03-04 11:52:14 -08:00
Joe Onorato
5d3bea6229 fix the build 2010-03-01 13:44:29 -08:00
Joe Onorato
8a9b22056b Switch the services library to using the new Slog 2010-03-01 13:06:50 -08:00
Dianne Hackborn
28a8c2bc14 resolved conflicts for merge of 4dcd2ee8 to master 2010-03-01 11:30:02 -08:00
The Android Open Source Project
4dcd2ee8ca merge from open-source master 2010-03-01 09:30:21 -08:00
Magnus Edlund
7bb2581e6f Fix problem with restarting an application process that recently has died.
There exists a race condition when starting a process that recently has died.
If the ActivityManager receives the death notification for the died process
after the new process has been started but before an application thread has
been attached to the new process will the newly created process be removed
during the cleanup of the died process. If this happens when sending a broadcast
could it result in an ANR.

This is solved by doing the clean up before starting a new process that uses
the same process record.
2010-03-01 09:12:07 -08:00
Dianne Hackborn
8f7f35e0cc Add new -W option to Am to wait for the start to complete. 2010-02-26 16:34:33 -08:00
Dianne Hackborn
c3b91fd26a Fix crash in PendingIntentRecord debug output.
Add null checks to a few places to avoid crashes when dumping
debug data.

Also add some sanity checks for accessing content providers in
the activity manager.
2010-02-24 13:12:52 -08:00
Dianne Hackborn
9e0f5d9a63 Fix some random bugs.
2185256: After open &close of device keyboard shortcut does not added to Home desktop.

ActivityThread was losing the last saved state when restarting or launching into
a paused state.

2366174: defaults not cleared when they should be

PackageManagerService now removes any preferred activity records for a package
when it is uninstalled.

2154556: Battery stats can have an unbounded number of wake locks

We now start combining wake locks into one shared record when we hit a
maximum limit (currently 20).

2442519: Foreground services can have no notification by providing a bogus one.

If the notification manager rejects our notification, the service is forced to
no longer be in the foreground.

2442383: Finalization issues in com.android.server.am.PendingIntentRecord.java

Cleaned up finalization to call super class and avoid the big activity manager
lock (we still need to use the locks inside of the message system, but these
are much less likely to be a problem).

2284190: Cannot call a phone number using adb

We weren't getting the calling uid/pid in startActivity() if the caller did not
supply an application record.
2010-02-22 20:45:58 -08:00
Dianne Hackborn
21f1bd17b2 Fix issue #2438980: Implement package watcher for voice recognizer service setting
I am getting tired of writing package monitor code, realized this is missing in
a number of places, and at this point it has gotten complicated enough that I
don't think anyone actually does it 100% right so:

Introducing PackageMonitor.

Yes there are no Java docs.  I am still playing around with just what this
thing is to figure out what makes sense and how people will use it.  It is
being used to fix this bug for monitoring voice recognizers (integrating the
code from the settings provider for setting an initial value), to replace
the existing code for monitoring input methods (and fix the bug where we
wouldn't remove an input method from the enabled list when it got
uninstalled), to now monitor live wallpaper package changes (now allowing
us to avoid reverting back to the default live wallpaper when the current
one is updated!), and to monitor device admin changes.

Also includes a fix so you can't uninstall an .apk that is currently enabled
as a device admin.

Also includes a fix where the default time zone was not initialized early
enough which should fix issue #2455507 (Observed Google services frame work crash).

In addition, this finally introduces a mechanism to determine if the
"force stop" button should be enabled, with convenience in PackageMonitor
for system services to handle it.  All services have been updated to support
this.  There is also new infrastructure for reporting battery usage as an
applicatin error report.
2010-02-22 11:27:52 -08:00
Dianne Hackborn
e36d6e277e Work on issue #2263557: PMF3000 showing hybrid of portrait and landscape modes
This is a bunch of reworking of how configuration changes are handled:

- When orientation is changing (for whatever reason), the window manager no
  longer tries to pre-emptively compute a new configuration.  Instead, it
  just determines  change is happening and tells the window manager.
- The activity manager is now responsible for giving the window manager the
  final configuration it is using.  This is both so it knows whem the
  activity manager is done with its configuration updates, and so the window
  manager can use the "real" configuration.
- When an orientation or other configuration change is happening, freeze the
  screen and keep it frozen until the activity manager has given us the
  final configuration.
- The window manager can now send new configurations to its clients during
  its layout pass, as part of a resize, if it has determined that it has
  changed.  This allows for a new View.onConfigurationChanged() API for any
  view to easily find out when the configuration has changed.
- ViewRoot now also works with the activity thread to make sure the process's
  current resources are updated to the new configuration when it receives one
  from a window.  This ensures that at the time onConfigurationChanged() and
  other view callbacks are happening, the correct configuration is in force.
- There is now a sequence number associated with Configuration, which
  ActivityThread uses to avoid using stale configurations.  This is needed now
  that it can receive configurations asynchronously from both the window
  manager and activity manager.
- The hack for keeping the locale has been removed, and underlying problem
  fixed by having Configuration initialize its locale to "unknown" instead of
  a valid default value.
2010-02-18 15:47:34 -08:00
Joe Onorato
6a6588b4ac am 6371a2d3: am ee3bbefd: Merge "Don\'t crash the system process when apps give us a bad foreground service notification." into eclair
Merge commit '6371a2d31f30b473e91be9cced64a2527c086af1'

* commit '6371a2d31f30b473e91be9cced64a2527c086af1':
  Don't crash the system process when apps give us a bad foreground service notification.
2010-02-18 11:02:48 -08:00
Joe Onorato
6371a2d31f am ee3bbefd: Merge "Don\'t crash the system process when apps give us a bad foreground service notification." into eclair
Merge commit 'ee3bbefd34fd5330ebbc59175a328197ab7526af' into eclair-plus-aosp

* commit 'ee3bbefd34fd5330ebbc59175a328197ab7526af':
  Don't crash the system process when apps give us a bad foreground service notification.
2010-02-18 04:52:46 -08:00
Joe Onorato
34fcf97103 Don't crash the system process when apps give us a bad foreground service notification. 2010-02-18 07:45:17 -05:00
Eric Rowe
6f4f619369 Fix formatting of ANRs.
Fix for cases where an extra newline would be added and/or a newline at the end of a line would be ommited.
2010-02-17 18:29:04 -08:00
Ben Cheng
6c0afff7f0 Detect system-wide safe mode and configure the VM accordingly.
For the system server process, do the disableJitCompilation/startJitCompilation
callbacks depending on whether the system is in safe mode or not.

In addition, if the system is found to be in safe mode, a flag will be set in
the Zygote class which will be used to launch subsequent apps in VM safe mode.

Bug: 2267590
2010-02-16 15:12:55 -08:00
Kenny Root
3619b9abd8 Fix dumpsys activity service <name>
Refactoring of the dumpsys framework introduced a comparison that
always made the action dump all the services.

Change-Id: I1f3ac2bd903e39e2a6e8632e8cbb23a982dfe0c6
2010-02-16 11:06:38 -08:00
Dianne Hackborn
5ce7d28a07 Small oom_adj tweaks.
Include a proper name for processes that are in the background
with running services that have been running for a long time (instead
of showing them as bg-empty).

Batch together multiple processes into the same background bin when
there are significantly more processes than bins.  Arguably this
should be smarter and base the binning on the number of background/empty
processes instead of the total count, but this should be good
enough for now.
2010-02-16 10:54:49 -08:00