summaryrefslogtreecommitdiff
path: root/libunwindstack/tests/MemoryFileTest.cpp
diff options
context:
space:
mode:
authorAnton Hansson <hansson@google.com>2019-05-31 13:22:34 +0100
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-05-31 20:37:52 +0000
commit35966f18abe3d4ceee35acd76dc9732635d5083f (patch)
treeb4061f0a1c3e4977cc825230b77d8345cc71d550 /libunwindstack/tests/MemoryFileTest.cpp
parent4fad0889b92b83a4a5ca4c11e47eb555b93607e9 (diff)
Close /dev/fuse FD before calling onClosed
This works around a deadlock when a bridge that is about to be closed is reused for a new call to openFile. The call to open() ends up holding the vold lock, waiting for appfuse to respond. The appfuse event loop calls onClosed(), which ends up calling vold.unmountAppFuse(), which cannot get the lock. Closing this file descriptor causes any current calls to open() on its mount path to fail with either ECONNABORTED or ENOTCONN, allowing the event loop to make progress, call onClosed() and unmount the path. Note that the failed call to open() will result in a retry, which will create a new appfuse bridge. This is not ideal but not a new problem -- the common case here is that that each call to openProxyFileDescriptor creates a new bridge. This should ideally be improved. Bug: 132344997 Test: flick through info of photos with location info attached Exempt-From-Owner-Approval: verbal approval of approach Change-Id: I878e5cf86f18c5233f8505f52eb9db076bd72d01 (cherry picked from commit c9e873f2747108cc6f010791c86569367d0bef44)
Diffstat (limited to 'libunwindstack/tests/MemoryFileTest.cpp')
0 files changed, 0 insertions, 0 deletions