OSDN Git Service

CameraService: Disconnect: Release mutex while waiting for joins.
authorEino-Ville Talvala <etalvala@google.com>
Wed, 22 Oct 2014 21:21:12 +0000 (14:21 -0700)
committerEino-Ville Talvala <etalvala@google.com>
Wed, 22 Oct 2014 21:21:12 +0000 (14:21 -0700)
commit661c21da5592ca48256747ec220efb2e599eeb72
tree75a5f011edf8a5773b689abcc836a99a3e10744d
parent168799c32ce3f9196ae7928986a7ba3770c74b14
CameraService: Disconnect: Release mutex while waiting for joins.

The threads shutting down may have callpaths that require taking the
binder interface mutex, so waiting to join them with that mutex held
can lead to deadlocks.

A specific instance is StreamingProcessor calling dataCallbackTimestamp,
which can immediately lead to a Camera2Client::releaseRecordingFrame call,
which requires the binder interface mutex. If this call happens right when
shutdown is occurring, and Camera2Client::disconnect is holding the mutex,
deadlock ensues.

Bug: 17997578
Change-Id: I71253cd5542b5920ad205976d315110ca0043d94
services/camera/libcameraservice/api1/Camera2Client.cpp