Commit Graph

424 Commits

Author SHA1 Message Date
Jeff Brown
22ba86cfaf am ca25d2c3: am 4d94a766: Fixed some timeout and lock reentrance issues with broadcasts.
Merge commit 'ca25d2c31dc20f69597be8f34d6da9167d53b4d0'

* commit 'ca25d2c31dc20f69597be8f34d6da9167d53b4d0':
  Fixed some timeout and lock reentrance issues with broadcasts.
2010-09-24 16:14:08 -07:00
Jeff Brown
ca25d2c31d am 4d94a766: Fixed some timeout and lock reentrance issues with broadcasts.
Merge commit '4d94a766c3f7cf32dd3f5d543048fa801ad22813' into gingerbread-plus-aosp

* commit '4d94a766c3f7cf32dd3f5d543048fa801ad22813':
  Fixed some timeout and lock reentrance issues with broadcasts.
2010-09-24 16:07:24 -07:00
Jeff Brown
4d94a766c3 Fixed some timeout and lock reentrance issues with broadcasts.
When starting a broadcast, the ActivityManagerService posts a delayed
BROADCAST_TIMEOUT_MSG to handle timeouts.  If a premature timeout occurs,
we post a new BROADCAST_TIMEOUT_MSG to extend the timeout time for the
current receiver.  However, if the current receiver does timeout, the
message is consumed and no replacement is ever posted.

To fix the dropped timeouts, we track whether we have a pending broadcast
timeout message and setup a new one when we begin working on the next receiver.

As a last resort, performNextBroadcast contains code to detect whether
a broadcast appears to be hung (timeout handling failed).  If so, it
calls broadcastTimeout to cause it to timeout immediately.
However, performNextBroadcast is holding on to the ActivityManagerService
lock while doing this but broadcastTimout expected to be called
while the lock was not held since after updating the broadcast record state,
it calls appNotResponding.

To fix the unintentended lock reentrance, changed broadcastTimeout to
assume the lock is already held (and the callers ensure this) then
added code to perform the ANR asynchronously.

Renamed a few methods to add "Locked" suffixes where appropriate and added
a few comments for tricky areas uncovered during review.

Change-Id: I3cb5b06d6b6a4a338f32c0998db721f6acf3b082
2010-09-24 16:00:25 -07:00
Joe Onorato
77cf6f29f9 am 982c07e9: am cbb7b05e: Merge "Crash apps when they provide bad notifications instead of crashing the system process." into gingerbread
Merge commit '982c07e908c4cb66db224ccfd0810bf8bd449835'

* commit '982c07e908c4cb66db224ccfd0810bf8bd449835':
  Crash apps when they provide bad notifications instead of crashing the system process.
2010-09-23 21:40:24 -07:00
Dianne Hackborn
846df9f517 resolved conflicts for merge of 8952a448 to master
Change-Id: I9c752a5d10ae8d8e5ead1243b6abd4795204fc0b
2010-09-23 20:33:19 -07:00
Joe Onorato
982c07e908 am cbb7b05e: Merge "Crash apps when they provide bad notifications instead of crashing the system process." into gingerbread
Merge commit 'cbb7b05e35368b104c27089f5f16640680f567c2' into gingerbread-plus-aosp

* commit 'cbb7b05e35368b104c27089f5f16640680f567c2':
  Crash apps when they provide bad notifications instead of crashing the system process.
2010-09-23 16:55:22 -07:00
Joe Onorato
cbb7b05e35 Merge "Crash apps when they provide bad notifications instead of crashing the system process." into gingerbread 2010-09-23 16:52:28 -07:00
Joe Onorato
eaa0718780 Crash apps when they provide bad notifications instead of crashing the system process.
Bug: 2958415
Change-Id: I9cbef340fb20a64eca8493950b814399c26ce197
2010-09-23 16:49:20 -07:00
Dianne Hackborn
8952a4488e am 287952c3: Fix issue #3022508: Crash during media scan
Merge commit '287952c35e148811c106bc0f5036eabf20f71562' into gingerbread-plus-aosp

* commit '287952c35e148811c106bc0f5036eabf20f71562':
  Fix issue #3022508: Crash during media scan
2010-09-23 16:04:23 -07:00
Dianne Hackborn
287952c35e Fix issue #3022508: Crash during media scan
Don't kill processes for excessive wake lock use, even if they
are in the background, as long as they have running services.

Also fix some problems with this, such as not noting the kill
in battery stats.

And add killing of processes for cpu usage as well, along with
some optimizations to computing CPU usage.

And fix BatteryWaster to be better behaving for testing these
cases.

Add new "monitor" command to am to watch as the activity manager
does stuff (so we can catch things at the point of ANR).

Finally some miscellaneous debug output for the stuff here, as
well as in progress debugging of an ANR.

Change-Id: Ib32f55ca50fb7486b4be4eb5e695f8f60c882cd1
2010-09-23 15:59:28 -07:00
Dianne Hackborn
eecb5b9873 am 2983e038: am 045398e6: Merge "Fix a deadlock I ran into." into gingerbread
Merge commit '2983e038d189a257f1e5abb9c120bd1feb253773'

* commit '2983e038d189a257f1e5abb9c120bd1feb253773':
  Fix a deadlock I ran into.
2010-09-23 14:20:48 -07:00
Dianne Hackborn
2983e038d1 am 045398e6: Merge "Fix a deadlock I ran into." into gingerbread
Merge commit '045398e6243fa4e83fb6435df4e8ffc6a7487a70' into gingerbread-plus-aosp

* commit '045398e6243fa4e83fb6435df4e8ffc6a7487a70':
  Fix a deadlock I ran into.
2010-09-23 14:17:54 -07:00
Dianne Hackborn
0674069aa4 Fix a deadlock I ran into.
Activity manager was calling into the backup service (and other
things) with its lock held.

Change-Id: Id55093e09cc5fe81b73b85968184816d956e0ae8
2010-09-22 22:46:21 -07:00
Dianne Hackborn
625ac271f8 Work on fragments in layouts.
- Change semantics if IDs associated with these fragments, to
  work correctly when placed in a container.  If the container
  has an ID or you have supplied a tag, the fragment's ID is
  optional.

- To do this, there is a new LayoutInflater API that allows code
  creating views to access the parent container that view will
  be in.

- Fix issues with state management around these fragments.  Now
  correctly retains state when switching to a layout that doesn't
  include the fragment.

Also:

- Add new simple list layouts for items that want to show an
  activated state.
- Add new Activity.dump() that can be invoked with adb shell
  dumpsys; the default implementation dumps fragment state.

Change-Id: I192f35e3ea8c53fbd26cf909095f2a994abfc1b6
2010-09-21 22:08:50 -07:00
Dianne Hackborn
5e6ec0aeea am e665698f: am 6f33b65f: Merge "Fix issue #2999757: "Application Redirected" dialogue showing up erratically" into gingerbread
Merge commit 'e665698ffe539bdb99122dcf83e19844ebea92b8'

* commit 'e665698ffe539bdb99122dcf83e19844ebea92b8':
  Fix issue #2999757: "Application Redirected" dialogue showing up erratically
2010-09-21 10:44:13 -07:00
Dianne Hackborn
1bbef40e40 am 2d19a676: am 51aaab3d: Merge "Fix #2999258: ANR in Settings after every reboot" into gingerbread
Merge commit '2d19a676860bf773c984315fe03d9568913f9314'

* commit '2d19a676860bf773c984315fe03d9568913f9314':
  Fix #2999258: ANR in Settings after every reboot
2010-09-21 10:43:36 -07:00
Dianne Hackborn
e665698ffe am 6f33b65f: Merge "Fix issue #2999757: "Application Redirected" dialogue showing up erratically" into gingerbread
Merge commit '6f33b65f8033cf8644eb4ba727421b90bd4c0ae9' into gingerbread-plus-aosp

* commit '6f33b65f8033cf8644eb4ba727421b90bd4c0ae9':
  Fix issue #2999757: "Application Redirected" dialogue showing up erratically
2010-09-21 00:27:06 -07:00
Dianne Hackborn
034093a4ae Fix issue #2999757: "Application Redirected" dialogue showing up erratically
Give up on this for now.

Change-Id: Ic66a36d468f8bcb313d9bde2809124cdfd74adb3
2010-09-20 22:24:38 -07:00
Dianne Hackborn
2d19a67686 am 51aaab3d: Merge "Fix #2999258: ANR in Settings after every reboot" into gingerbread
Merge commit '51aaab3d6ba01263c3e1d81ca0567e0ad5cddb2d' into gingerbread-plus-aosp

* commit '51aaab3d6ba01263c3e1d81ca0567e0ad5cddb2d':
  Fix #2999258: ANR in Settings after every reboot
2010-09-20 22:22:54 -07:00
Dianne Hackborn
8891fdc1da Fix #2999258: ANR in Settings after every reboot
The main problem here was in the error recovery when we are waiting
for a process to start but it has failed for some reason.  The code
was just setting mPendingBroadcast to null, but this would cause
an eventual ANR because the state was not set back to IDLE so we
would continue waiting for the broadcast without trying to restart
its process.

Now we set it to idle.  We also need to reset the "nextReceiver"
index, so there is a new mPendingBroadcastRecvIndex variable holding
what it should be set back to.

While digging into this, I found a number of other lesser problems:

- There is a race when booting the system where we set mSystemReady
to true before restarting the upgrade processes.  This could allow
a broadcast to happen between those two and its process to immediately
be removed.  To fix this, there is a new mProcessesReady that is set
once we are truly ready to start launching processes.

- There were various places where we were calling sendBroadcastLocked()
without the flag to send only to receivers...  if this is called before
mProcessesReady is set, then we would end up sticking any process for
the broadcast on the holding list to not get launched until later
(and hang up all broadcasts as they want for it).  Now we always make
sure to set this appropriately.

- sendBroadcastInPackage() was not doing all of the validation that
sendBroadcast() does.

And of course a bunch of new debugging logs that were done in the
course of tracking this down.

Change-Id: I6134bbd94fdb73db8b693507b29499eae012d543
2010-09-20 20:52:51 -07:00
Dianne Hackborn
48a781a0a5 am 4b187e80: am 8e1b84e7: Merge "Some battery improvements:" into gingerbread
Merge commit '4b187e804fdfdbc825e17646e82e0218e316a339'

* commit '4b187e804fdfdbc825e17646e82e0218e316a339':
  Some battery improvements:
2010-09-20 19:33:06 -07:00
Dianne Hackborn
4b187e804f am 8e1b84e7: Merge "Some battery improvements:" into gingerbread
Merge commit '8e1b84e7654ddeeb77a03f5eca10c6669b1cb42b' into gingerbread-plus-aosp

* commit '8e1b84e7654ddeeb77a03f5eca10c6669b1cb42b':
  Some battery improvements:
2010-09-20 16:34:45 -07:00
Dianne Hackborn
ce2ef766ca Some battery improvements:
- New API for iterating over history that will allow a better implementation
  in the future.
- Now do writes asynchronously.

Also improve the documentation for Activity.onRetainNonInstanceState().

Change-Id: Idf67f2796a8868eb62f288bcbb2bad29876c8554
2010-09-20 16:25:01 -07:00
Dianne Hackborn
03f3cb083d resolved conflicts for merge of 1f377298 to master
Change-Id: I0d92abae3a86792b47777f795143acc0489adfe4
2010-09-17 23:12:26 -07:00
Dianne Hackborn
1f377298e2 am 58e0eefe: Improve power tracking of WIFI use.
Merge commit '58e0eefeb5e2e270e2b04369bbf29fc22abda8d5' into gingerbread-plus-aosp

* commit '58e0eefeb5e2e270e2b04369bbf29fc22abda8d5':
  Improve power tracking of WIFI use.
2010-09-17 15:20:10 -07:00
Dianne Hackborn
58e0eefeb5 Improve power tracking of WIFI use.
We now distribute "wifi started" time across all apps that are
holding WIFI locks that cause it to be started.  But only when
WIFI would not normally be running.  Also have a mechanism to
distribute other WIFI work that has happened across those processes
based on their use.

Also fixed a bug where we were not retaining the CPU speed step
stats across boots...!

Change-Id: I00e3153b98429166273750512cc37e7975211ab9
2010-09-17 15:14:57 -07:00
Steve Howard
e28d80a80a am d2de99e3: am 536ee090: Merge "Fix name shadowing bug with revoking URI permissions." into gingerbread
Merge commit 'd2de99e377408dc28dca5e4c61a816879595fbf3'

* commit 'd2de99e377408dc28dca5e4c61a816879595fbf3':
  Fix name shadowing bug with revoking URI permissions.
2010-09-15 16:32:30 -07:00
Steve Howard
d2de99e377 am 536ee090: Merge "Fix name shadowing bug with revoking URI permissions." into gingerbread
Merge commit '536ee090ef75add0f7244c1c22be83fe03a66010' into gingerbread-plus-aosp

* commit '536ee090ef75add0f7244c1c22be83fe03a66010':
  Fix name shadowing bug with revoking URI permissions.
2010-09-14 17:48:30 -07:00
Steve Howard
536ee090ef Merge "Fix name shadowing bug with revoking URI permissions." into gingerbread 2010-09-14 17:46:22 -07:00
Steve Howard
0de8ddb0cf Fix name shadowing bug with revoking URI permissions.
Change-Id: Ibfcb0dc73c6b1a111dbb8d56e6f0b78084f5e4e6
2010-09-14 16:29:26 -07:00
Dianne Hackborn
f86369ad0a am 527c0283: am a0eb56ac: Merge "Work on issue #2991868: A toast pops up informing users..." into gingerbread
Merge commit '527c02838bed1188b9211752b4cf2fc0c03e8202'

* commit '527c02838bed1188b9211752b4cf2fc0c03e8202':
  Work on issue #2991868: A toast pops up informing users...
2010-09-13 18:58:20 -07:00
Dianne Hackborn
527c02838b am a0eb56ac: Merge "Work on issue #2991868: A toast pops up informing users..." into gingerbread
Merge commit 'a0eb56ac59751ab7fb060980e14edcacca439635' into gingerbread-plus-aosp

* commit 'a0eb56ac59751ab7fb060980e14edcacca439635':
  Work on issue #2991868: A toast pops up informing users...
2010-09-13 17:17:19 -07:00
Dianne Hackborn
8c5755aab5 Work on issue #2991868: A toast pops up informing users...
...that Market took over the screen after signing into a Google account

Don't warn the user about a new activity coming up on an activity that
is finishing.

Change-Id: I573073139d42a485473d0c8a7df450c1a23c35c3
2010-09-13 16:58:59 -07:00
Dianne Hackborn
e746f03c6c resolved conflicts for merge of 53686433 to master
Change-Id: I27004dc464f5771d3205ae5757c6eccc5b16854d
2010-09-13 16:56:10 -07:00
Dianne Hackborn
53686433a9 am 7e9f4eb2: Track client requests through location manager.
Merge commit '7e9f4eb2608148436cef36c9969bf8a599b39e72' into gingerbread-plus-aosp

* commit '7e9f4eb2608148436cef36c9969bf8a599b39e72':
  Track client requests through location manager.
2010-09-13 14:34:22 -07:00
Dianne Hackborn
7e9f4eb260 Track client requests through location manager.
This fixes a problem where applications could ask the location
manager to do very heavy-weight things (like...  say... update
location every minute), which would get accounted against the
system instead of the application because ultimately it is the
system making the heavy calls (wake locks, etc).

To solve this, we introduce a new class WorkSource representing
the source of some work.  Wake locks and Wifi locks allow you
to set the source to use (but only if you are system code and thus
can get the permission to do so), which is what will be reported
to the battery stats until the actual caller.

For the initial implementation, the location manager keeps track
of all clients requesting periodic updates, and tells its providers
about them as a WorkSource param when setting their min update time.
The network location provider uses this to set the source on the
wake and wifi locks it acquires, when doing work because of the
update period.

This should also be used elsewhere, such as in the GPS provider,
but this is a good start.

Change-Id: I2b6ffafad9e90ecf15d7c502e2db675fd52ae3cf
2010-09-13 14:20:48 -07:00
Brad Fitzpatrick
0b29554188 am 37fc8cc7: am b724d251: Merge "Enable strictmode logging in system_server & add a lock." into gingerbread
Merge commit '37fc8cc7b87133eddacaeab60cabefaf4a7b9bdd'

* commit '37fc8cc7b87133eddacaeab60cabefaf4a7b9bdd':
  Enable strictmode logging in system_server & add a lock.
2010-09-10 15:07:20 -07:00
Brad Fitzpatrick
37fc8cc7b8 am b724d251: Merge "Enable strictmode logging in system_server & add a lock." into gingerbread
Merge commit 'b724d2519a900744a477bd57df6a2f8703c87e72' into gingerbread-plus-aosp

* commit 'b724d2519a900744a477bd57df6a2f8703c87e72':
  Enable strictmode logging in system_server & add a lock.
2010-09-10 14:08:58 -07:00
Brad Fitzpatrick
1e02d36b0f Enable strictmode logging in system_server & add a lock.
We weren't logging strictmode violation in the system_server process
in non-user builds (only system apps), even though the rest of the
strictmode logging supports it.

Also add a missing lock in ActivityManagerService.

Change-Id: If2af96a7e4fdde604a647b836097f0029ef1334b
2010-09-10 09:19:50 -07:00
Dianne Hackborn
203e9529c5 resolved conflicts for merge of 62d005ec to master
Change-Id: I552d7adffe70a2bd94113ffb70cdc3e625fca0bd
2010-09-09 23:06:27 -07:00
Dianne Hackborn
62d005ec94 am a7d868d4: Merge "Add toast when an app intercepts the launch of another app." into gingerbread
Merge commit 'a7d868d4f99dfaf85e13498210aecf1ad8efd859' into gingerbread-plus-aosp

* commit 'a7d868d4f99dfaf85e13498210aecf1ad8efd859':
  Add toast when an app intercepts the launch of another app.
2010-09-09 21:34:44 -07:00
Dianne Hackborn
0dad364adb Add toast when an app intercepts the launch of another app.
The activity manager looks for cases where one app launches immediately
after another.  If this happens, a brief toast is shown telling the user
when app is actually running and what was originally starting.

Change-Id: If94cf5bd393dd0bc0f09789dae044fde1386c481
2010-09-09 21:25:35 -07:00
Dianne Hackborn
467e8e1332 am 5fdacb8a: am ee455f5a: Merge "People holding partial wake locks now get blamed for CPU usage." into gingerbread
Merge commit '5fdacb8a2818136218afdea4308ad1b10049a201'

* commit '5fdacb8a2818136218afdea4308ad1b10049a201':
  People holding partial wake locks now get blamed for CPU usage.
2010-09-08 14:38:20 -07:00
Dianne Hackborn
5fdacb8a28 am ee455f5a: Merge "People holding partial wake locks now get blamed for CPU usage." into gingerbread
Merge commit 'ee455f5a9572bc0d23c3328f6c22da91dc109a50' into gingerbread-plus-aosp

* commit 'ee455f5a9572bc0d23c3328f6c22da91dc109a50':
  People holding partial wake locks now get blamed for CPU usage.
2010-09-08 14:34:41 -07:00
Dianne Hackborn
0d903a84d0 People holding partial wake locks now get blamed for CPU usage.
For the duration of the wake lock, 50% of all CPU usage is now
accounted against the app(s) holding partial wake locks, evenly
distributed between them.  This is only while the device is on
battery and screen off.

Change-Id: I3e5c978b792b6ef17bf8540705bfe8343dadd464
2010-09-08 12:41:24 -07:00
Dianne Hackborn
004abb1223 resolved conflicts for merge of 3d7d3690 to master
Change-Id: I1d1d7a448b3ae8a86600addfa75f2448a98327bf
2010-09-03 14:07:25 -07:00
Dianne Hackborn
3d7d3690de am e25b4bc7: Merge "These are not ready to be exposed. Also rename them to be better." into gingerbread
Merge commit 'e25b4bc76fef584b38ce4e72f919fba119bdfa99' into gingerbread-plus-aosp

* commit 'e25b4bc76fef584b38ce4e72f919fba119bdfa99':
  These are not ready to be exposed.  Also rename them to be better.
2010-09-03 13:26:30 -07:00
Dianne Hackborn
482566ed5c These are not ready to be exposed. Also rename them to be better.
Change-Id: I7c234144497084b7769f8c46761b7d74d1c583d5
2010-09-03 12:51:28 -07:00
Dianne Hackborn
a5034b5d80 am 75823339: am a1c69e08: Fix a small bug when granting permissions through activity results.
Merge commit '75823339cd03e5b25b576cd7a2b5941254017c4a'

* commit '75823339cd03e5b25b576cd7a2b5941254017c4a':
  Fix a small bug when granting permissions through activity results.
2010-09-01 23:20:18 -07:00
Dianne Hackborn
75823339cd am a1c69e08: Fix a small bug when granting permissions through activity results.
Merge commit 'a1c69e084b5242ad4e4a1ef2fe8d99ba259b5af4' into gingerbread-plus-aosp

* commit 'a1c69e084b5242ad4e4a1ef2fe8d99ba259b5af4':
  Fix a small bug when granting permissions through activity results.
2010-09-01 23:17:20 -07:00