Commit Graph

46579 Commits

Author SHA1 Message Date
Johannes Carlsson
db1597a989 Fix shutdown sequence to avoid SIGSEGV when running am command
When the app_process is shutting down the main thread will close the
binder fd while pool threads are executing an ioctl (in
IPCThreadState::stopProcess called by AppRuntime::onStarted in
app_main.c).

The binder driver will then return all pending calls in ioctl
without any error and with a command. One of the threads gets a
BR_SPAWN_LOOPER which will create a new thread (the other thread
gets a BR_NOOP). This new thread then calls
vm->AttachCurrentThread. Usually this results in a log entry with
"AndroidRuntime: NOTE: attach of thread 'Binder Thread #3' failed",
but sometimes it also causes a SIGSEGV. This depends on the timing
between the new thread an the main thread that calls DestroyJavaVM
(in AndroidRuntime::start).

If IPCThreadState.cpp is compiled with "#define LOG_NDEBUG 0" the
pool thread will loop and hit the
ALOG_ASSERT(mProcess->mDriverFD >= 0) in
IPCThreadState::talkWithDriver.

Crashes like this has been seen when running the am command and
other commands that use the app_process.

This fix makes sure that any command that is received when the driver
fd is closed are ignored and IPCThreadState::talkWithDriver instead
returns an error which will cause the pool thread to exit and detach
itself from the vm. A check to avoid calling ioctl to a fd with -1
was also added in IPCThreadState::threadDestructor.

Another solution might be to change the binder driver so that it
returns an error when the fd is closed (or atleast not a
BR_SPAWN_LOOPER command). It might also be possible to call exit(0)
which is done when System.exit(0) is called from java.

Change-Id: I3d1f0ff64896c44be2a5994b3a90f7a06d27f429
2012-06-25 13:58:47 -07:00
The Android Open Source Project
589cdbed55 Reconcile with jb-release
Change-Id: Ic18750e72ccec1b5aad558da8959c9c4031b27f8
2012-06-22 08:17:16 -07:00
The Android Automerger
f455c9a267 merge in jb-release history after reset to jb-dev 2012-06-21 07:02:53 -07:00
Mathias Agopian
8aaf3e47a5 am a67e418e: Exit boot animation cleanly.
* commit 'a67e418e1fda219f6cc0a7e420bcf5cc4f9fe710':
  Exit boot animation cleanly.
2012-06-20 13:37:09 -07:00
Mathias Agopian
a67e418e1f Exit boot animation cleanly.
The desc.txt file can now mark parts as 'must finish cleanly' by using
'c' as the part line prefix rather than 'p'.  If so indicated, if the
bootanimation is asked to quit it will do so only after waiting to
finish that part.

I considered either making init.c service killing smarter or promoting
bootanim to be a bindable service with a requestExit method.  However,
these changes are probably too big/risky given our ship date.  So
I used a property as a mailbox between SurfaceFlinger and bootanim.

Bug: 6679877
Change-Id: Id7dca22caa50b450fff25ca94f7242d971034f41
2012-06-19 17:32:00 -07:00
The Android Open Source Project
fb05c7c34b Reconcile with jb-release
Change-Id: I6a74f5247794a5dddd6fbb75b2edbaba06674ab7
2012-06-19 06:13:43 -07:00
Jeff Brown
bbdad8193e am 7c24b1d4: Merge "SF could get stuck waiting for vsync when turning the screen off" into jb-dev
* commit '7c24b1d4da5e13329d2105cb2f8285715d920787':
  SF could get stuck waiting for vsync when turning the screen off
2012-06-18 10:32:32 -07:00
The Android Automerger
9e39e5353c merge in jb-release history after reset to jb-dev 2012-06-16 07:03:06 -07:00
Mathias Agopian
1ffdccc46e SF could get stuck waiting for vsync when turning the screen off
When turning the screen off we could have 2 waiters on the
vsync condition: The main vsync waiter as well as one in
onScreenReleased(). We were only signaling the condition though,
so it it would be possible to wake onScreenReleased() without waking
the main vsync thread which would then be stuck in .wait().

We fix this by just using broadcast() when receiving a vsync event.

We also add a broadcast() to signal when the state of
mUseSoftwareVSync changes.  This is important particularly for
the transition from hardware to software vsync because the main
vsync waiter might have observed mUseSoftwareVSync == false
and decided to block indefinitely pending a hardware vsync
signal that will never arrive.

Removed a potentially deadlocking wait for a signal in
onScreenReleased().  The function was trying to wait for the last
vsync event from the hardware to be delivered to clients but there
was no guarantee that another thread would signal it to wake up
again afterwards.  (As far as I can tell, the only other other
thread that might wake it up at this point would be a client
application issuing a vsync request.)  We don't really need to wait
here anyhow.  It's enough to set the mUseSoftwareVSync flag,
wake up the thread loop and go.  If there was a pending vsync
timestamp from the hardware, then the thread loop will grab
it and use it then start software vsync on the next iteration.

Bug: 6672102
Change-Id: I7c6abc23bb021d1dfc94f101bd3ce18e3a81a73e
2012-06-15 16:17:06 -07:00
Jeff Brown
7c24b1d4da Merge "SF could get stuck waiting for vsync when turning the screen off" into jb-dev 2012-06-15 15:30:35 -07:00
Mathias Agopian
7d88647473 SF could get stuck waiting for vsync when turning the screen off
When turning the screen off we could have 2 waiters on the
vsync condition: The main vsync waiter as well as one in
onScreenReleased(). We were only signaling the condition though,
so it it would be possible to wake onScreenReleased() without waking
the main vsync thread which would then be stuck in .wait().

We fix this by just using broadcast() when receiving a vsync event.

We also add a broadcast() to signal when the state of
mUseSoftwareVSync changes.  This is important particularly for
the transition from hardware to software vsync because the main
vsync waiter might have observed mUseSoftwareVSync == false
and decided to block indefinitely pending a hardware vsync
signal that will never arrive.

Removed a potentially deadlocking wait for a signal in
onScreenReleased().  The function was trying to wait for the last
vsync event from the hardware to be delivered to clients but there
was no guarantee that another thread would signal it to wake up
again afterwards.  (As far as I can tell, the only other other
thread that might wake it up at this point would be a client
application issuing a vsync request.)  We don't really need to wait
here anyhow.  It's enough to set the mUseSoftwareVSync flag,
wake up the thread loop and go.  If there was a pending vsync
timestamp from the hardware, then the thread loop will grab
it and use it then start software vsync on the next iteration.

Bug: 6672102
Change-Id: I7c6abc23bb021d1dfc94f101bd3ce18e3a81a73e
2012-06-15 14:59:31 -07:00
Jeff Brown
0512af11f4 am 16272efb: Add ASSIST keycode.
* commit '16272efb7af0692266fecdc53b2c6d995bf397b7':
  Add ASSIST keycode.
2012-06-15 11:57:37 -07:00
Jeff Brown
16272efb7a Add ASSIST keycode.
Bug: 6594275
Change-Id: I032b055207d16bfff93ee8a350c0dc52b9102926
2012-06-15 11:46:11 -07:00
Mathias Agopian
1d2eb663ef am 2d15fcab: Merge "reduce PB size from 2MB to 512KB" into jb-dev
* commit '2d15fcab3e3588cfddb6c7b180faecd3eccce2e5':
  reduce PB size from 2MB to 512KB
2012-06-12 12:42:38 -07:00
The Android Automerger
23a39ef144 merge in jb-release history after reset to jb-dev 2012-06-12 11:23:05 -07:00
Mathias Agopian
2d15fcab3e Merge "reduce PB size from 2MB to 512KB" into jb-dev 2012-06-11 14:43:37 -07:00
The Android Open Source Project
7c94f9d8e0 Reconcile with jb-release
Change-Id: Iac1c88f2833e67e52af2bc22a17fa93d30cb44cc
2012-06-11 09:22:35 -07:00
The Android Automerger
7f92bf2bf9 merge in jb-release history after reset to jb-dev 2012-06-11 07:02:56 -07:00
Jeff Brown
4f0dfaa7c3 am 9be7caf3: Merge "Include stack traces for certain native processes in bugreport." into jb-dev
* commit '9be7caf380b0e2fb29b8813fb8762c2ae417ce95':
  Include stack traces for certain native processes in bugreport.
2012-06-08 15:30:38 -07:00
Jeff Brown
9be7caf380 Merge "Include stack traces for certain native processes in bugreport." into jb-dev 2012-06-08 14:38:30 -07:00
Dianne Hackborn
66506eaacb am 49b97e20: I am having second thoughts about 512m for the large heap size.
* commit '49b97e20f17af0ba98cdece2b7b93ab0a2199af4':
  I am having second thoughts about 512m for the large heap size.
2012-06-08 14:22:06 -07:00
Dianne Hackborn
49b97e20f1 I am having second thoughts about 512m for the large heap size.
Let's go with 384 megs, half way between the large heap size on
Xoom and 512.

Change-Id: I4a7f2e5a8b2920b49fa53777725e24811145f5f2
2012-06-08 13:02:09 -07:00
Jeff Brown
bf7f49238d Include stack traces for certain native processes in bugreport.
Bug: 6615693
Change-Id: I64c3b3ce0bba62d9c332a795f7d979fb753dc27b
2012-06-08 11:45:00 -07:00
Magnus Strandberg
1ba24574b2 Aligning native Parcel implementation to Java.
The Java implementation of writing the RPC response header
calculates the length of the header including the 4 bytes
specifying the header length but the native implementation
excludes the 4 bytes specifying the length from the header
length.
The native implementation has been aligned to the Java impl.

Change-Id: I325bf272a63152d8fded4cf4e51a906b5a9bfe19
2012-06-08 08:29:01 -07:00
The Android Automerger
a38f794b0d merge in jb-release history after reset to jb-dev 2012-06-08 08:20:32 -07:00
Mathias Agopian
b2c1cfbe95 am 0cd545f1: sometimes we would incorrectly scale the content of a surface
* commit '0cd545f14261d829513e0d6e8fa5e4e4f3372b3d':
  sometimes we would incorrectly scale the content of a surface
2012-06-07 17:16:52 -07:00
Mathias Agopian
0cd545f142 sometimes we would incorrectly scale the content of a surface
this would happen when a resize was pending (ie: we have received
and processed a resize transaction but have not received a buffer
with the right size) and a new transaction came in that didn't
involve a resize, for instance a translate-only transaction.

in this case, we would incorrectly update the drawing state
with the pending size, eventhough we still don't have a buffer
for it.

the solution is quite simple, we never allow the size to propagate
from current to drawing state during the regular transaction processing
(unless we are in fixed-size mode -- meaning we don't need to have
a matching size buffer), this propagation happens later once we
receive the buffer.

Bug: 6624163
Change-Id: I11a97e4b88a7f3a0571ddcfe99c86cb04ce01a4d
2012-06-07 17:12:20 -07:00
The Android Open Source Project
d77493907e Reconcile with jb-release
Change-Id: I73f561b3fb9c76aa30ff7de8eab378a1ba5963cc
2012-06-07 07:51:00 -07:00
The Android Automerger
ce786fca55 merge in jb-release history after reset to jb-dev 2012-06-07 07:03:01 -07:00
Jamie Gennis
ec07c8e957 am ba43e0a1: Merge "SurfaceFlinger: remove all GLES scissor calls." into jb-dev
* commit 'ba43e0a1faee9629ca2d0beb53dd6c44bb9bfd05':
  SurfaceFlinger: remove all GLES scissor calls.
2012-06-06 15:47:29 -07:00
Jamie Gennis
ba43e0a1fa Merge "SurfaceFlinger: remove all GLES scissor calls." into jb-dev 2012-06-06 15:45:10 -07:00
Dianne Hackborn
a586c9b18a am be502a02: Add new Dalvik memory limit definition.
* commit 'be502a02c8e0ea232e7339ed60b1754c929ecec1':
  Add new Dalvik memory limit definition.
2012-06-06 10:51:15 -07:00
Mathias Agopian
d75f84d641 reduce PB size from 2MB to 512KB
this allows us to enable h/w acceleration on low-end
devices while keeping memory usage down.

Bug: 6557760
Change-Id: I8af2de3038dc2579360b8b73aa452cb7a0e506a9
2012-06-05 21:44:43 -07:00
Jamie Gennis
a4c5b19dd7 SurfaceFlinger: remove all GLES scissor calls.
Bug: 6576505
Change-Id: I494b7627f2e271a234706bf49a9490f8ac56c77a
2012-06-05 19:14:44 -07:00
Dianne Hackborn
be502a02c8 Add new Dalvik memory limit definition.
This is for a 7in hdpi/tvdpi tablet with 1G of RAM.

That sounds kind-of familiar.  I don't know.  Have I seen
such a thing before?  Maybe.

Bug: 6576049
Change-Id: Iabc245692d5106feec9199eb2b5a3d06e27a9b83
2012-06-05 18:23:11 -07:00
The Android Automerger
76b77c9312 merge in jb-release history after reset to jb-dev 2012-06-05 06:59:22 -07:00
Mathias Agopian
4929e821ff am 4824d40a: sometimes SF would not process a surface resize
* commit '4824d40a35333182c2eb3593511b9bcbecd0a943':
  sometimes SF would not process a surface resize
2012-06-04 18:35:48 -07:00
Mathias Agopian
4824d40a35 sometimes SF would not process a surface resize
this would happen when a window started with size A, was
resized to B and immediately resized to A. In this situation
the erquested and active size would be the same, and SF
would think a transaction wasn't needed.

we fix this by always comparing the requested sizes.

Also, make sure to set mRefreshPending once we're sure
we have succesfully called updateTexImage().

Bug: 6580962
Change-Id: I2c48b4df7f05fd35c9e1d2dd82095b0f3d5a0b6a
2012-06-04 18:16:30 -07:00
The Android Automerger
89237345c9 merge in jb-release history after reset to jb-dev 2012-06-03 06:03:18 -07:00
Jeff Brown
d5085da3c0 am 4467bba7: Merge "Support looper callbacks based on smart pointers." into jb-dev
* commit '4467bba73a91161da01d5d969cf7ba3e2309d989':
  Support looper callbacks based on smart pointers.
2012-05-31 18:41:16 -07:00
Jeff Brown
805867612c am dad23789: Merge "Delete unused poll() code." into jb-dev
* commit 'dad2378911a244607afa3899928c429b340031cb':
  Delete unused poll() code.
2012-05-31 18:41:16 -07:00
Jeff Brown
dce1547d65 am 9e2e781a: Merge "Remove unused statistics code." into jb-dev
* commit '9e2e781acaead54d0fb095d55a1c44b32563248f':
  Remove unused statistics code.
2012-05-31 18:41:14 -07:00
Jeff Brown
4467bba73a Merge "Support looper callbacks based on smart pointers." into jb-dev 2012-05-31 18:39:13 -07:00
Jeff Brown
dad2378911 Merge "Delete unused poll() code." into jb-dev 2012-05-31 18:39:06 -07:00
Jeff Brown
9e2e781aca Merge "Remove unused statistics code." into jb-dev 2012-05-31 18:39:02 -07:00
Jeff Brown
af567f73ac Support looper callbacks based on smart pointers.
Bug: 6559630
Change-Id: I5a667f219f431838638acefbc9fa6afa610971bd
2012-05-31 17:16:21 -07:00
Jeff Brown
588d5c8280 Delete unused poll() code.
We don't need this code anymore and it is just in the way.

Bug: 6559630
Change-Id: I1dc9decf85d5ea1feab159c2985da6c20baffdd5
2012-05-30 19:21:12 -07:00
Jeff Brown
1ea51bf519 Remove unused statistics code.
Bug: 6559630
Change-Id: Iacdf4bb4c1c125c09305cbd8cb443c7c80cfc010
2012-05-30 19:17:47 -07:00
The Android Open Source Project
0fda2cce44 Reconcile with jb-release
Change-Id: If0a430615dadb425b82aa27204e6c670f06ee099
2012-05-30 10:15:16 -07:00
The Android Automerger
8c09d0d80d merge in jb-release history after reset to jb-dev 2012-05-30 07:03:19 -07:00