)]}'
{
  "commit": "1871a919447dd7be5d8d225d218ab09af49d49d2",
  "tree": "507da08b9797554ab966fd93456b65018ea7cc78",
  "parents": [
    "037f3e42f29c1bbeaeb8421d9252fedb0397f09c"
  ],
  "author": {
    "name": "Noah Richards",
    "email": "noahric@chromium.org",
    "time": "Mon Aug 14 17:08:33 2017"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Tue Aug 15 16:48:06 2017"
  },
  "message": "Check keepAlive before calling nativeDataIsRecording.\n\nWe\u0027re encountering a bug where audioRecord.read() can hang for long\nenough that stopRecording() fails to join the recording thread (in two\nseconds) and returns. In that case, JNI methods get unregistered and\nwhen the recording thread calls nativeDataIsRecorded, it crashes when\nit can\u0027t find the native method to call.\n\nThis version still isn\u0027t 100% safe, as the threading sequence still\ntechnically allows for an ordering where (for some reason) the thread\nfails to join after the final keepAlive check and long enough for all\nthe JNI methods to get unregistered, but that seems very unlikely.\n\nBUG\u003db/64174142\n\nChange-Id: Ie7432a70d0e53bace0885edf35e24bd3f6585399\nReviewed-on: https://chromium-review.googlesource.com/613501\nReviewed-by: Henrik Andreasson \u003chenrika@webrtc.org\u003e\nCommit-Queue: Noah Richards \u003cnoahric@chromium.org\u003e\nCr-Commit-Position: refs/heads/master@{#19358}",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "16abd08b21730c02042ed221d25ed045a9fb129f",
      "old_mode": 33188,
      "old_path": "webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
      "new_id": "66c1483851ba38ec9da98c64e54cb136a4c3b04e",
      "new_mode": 33188,
      "new_path": "webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java"
    }
  ]
}
