Fix mediaserver crash issue

mDeviceCallback is not guarded by a lock, so it may be
cleared twice when another thread calls removeAudioDeviceCallback.

Solution: Guard mDeviceCallback with a lock.

Test: monkey test
Bug: 209707170
Change-Id: I1ff93d058b8f8ff7addb2eb1cd86a1c03ba80777
diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp
index 9f5ac19..aedc051 100644
--- a/media/libaudioclient/AudioTrack.cpp
+++ b/media/libaudioclient/AudioTrack.cpp
@@ -357,7 +357,8 @@
         mAudioTrackThread->requestExitAndWait();
         mAudioTrackThread.clear();
     }
-    // No lock here: worst case we remove a NULL callback which will be a nop
+
+    AutoMutex lock(mLock);
     if (mDeviceCallback != 0 && mOutput != AUDIO_IO_HANDLE_NONE) {
         // This may not stop all of these device callbacks!
         // TODO: Add some sort of protection.