Camera: Track provider instances
In some very rare corner cases where the binder death notification gets delayed and races against the new provider 'onRegistration' callback, camera service can temporarily hold two camera providers with the same name. Depending on scheduling, if 'onRegistration' executes first, it will get rejected as the provider name already exists. The subsequent binder death notification callback will remove all camera devices. To avoid this, track all camera providers with a combination of the provider name and unique instance id. If we receive a registration callback with provider name that already exists, defer the initialization sequence until the previous instance gets released correctly. Bug: 164019313 Test: cameraservice_test --gtest_filter=CameraProviderManagerTest.BinderDeathRegistrationRaceTest, Camera CTS, Partner testing Change-Id: I207a12da1fb09b1c45dae8697049f1fec34627d3
Loading
Please register or sign in to comment