)]}' { "commit": "ff84d86d9c57bf154e9329ac29f6cb0448be5e8e", "tree": "984a4339f72105031b62b3323c50cf03688bd637", "parents": [ "b7c63ab83ae2b991ff8350bc0aa6427588629287" ], "author": { "name": "Markus Handell", "email": "handellm@webrtc.org", "time": "Tue May 26 16:22:24 2020" }, "committer": { "name": "Commit Bot", "email": "commit-bot@chromium.org", "time": "Tue May 26 18:10:00 2020" }, "message": "P2PTransportChannel::OnCandidateResolved: fix resolver leak.\n\nThis change fixes a problem where the eventual destruction of a\ncompleted resolver sometimes doesn\u0027t happen. This is because the\ndestruction is posted to the network thread, and if it\u0027s destroyed\nbefore the closure is executed, the resolver is leaked.\n\nThe fix is in three parts:\n1. The resolver-\u003eDestroy call is performed on closure destruction\n to make sure it will always run.\n2. The closure is executed with task queue. This because the\n RTC_DCHECK on thread:140 fires with the invoker_.\n3. It\u0027s not possible to guarantee the context Destroy is called on due\n to TaskQueue semantics. Therefore SignalThread::Destroy was changed\n to accept any calling context and only requiring it\u0027s the last\n public call to the object.\n\nFor unknown reasons, this leak doesn\u0027t trigger the leak checker, see\nreferred bugs for further investigation.\n\nBug: webrtc:7723, webrtc:11605, chromium:905542\nChange-Id: I2681ff1d2416ccbc564974a65ac84781a9ed7aee\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/176125\nCommit-Queue: Markus Handell \u003chandellm@webrtc.org\u003e\nReviewed-by: Tommi \u003ctommi@webrtc.org\u003e\nCr-Commit-Position: refs/heads/master@{#31359}\n", "tree_diff": [ { "type": "modify", "old_id": "ae49deb264d2436ae1cd1f89b836cde8d691314c", "old_mode": 33188, "old_path": "p2p/BUILD.gn", "new_id": "e9c01cde3d02eeea73e2da5d8aa659ccf86d2519", "new_mode": 33188, "new_path": "p2p/BUILD.gn" }, { "type": "modify", "old_id": "73d12c774154e89750d162918f76c4a74f474e94", "old_mode": 33188, "old_path": "p2p/base/p2p_transport_channel.cc", "new_id": "90d3e14d1c6cd8258a2767b8cf611f2ccdf4ddb1", "new_mode": 33188, "new_path": "p2p/base/p2p_transport_channel.cc" }, { "type": "modify", "old_id": "f0d5d66db153ef3fa83947b189597ad2555d75c3", "old_mode": 33188, "old_path": "p2p/base/p2p_transport_channel_unittest.cc", "new_id": "a3cf9370e2f9365d5a77c8577baf6355c8451c5b", "new_mode": 33188, "new_path": "p2p/base/p2p_transport_channel_unittest.cc" }, { "type": "modify", "old_id": "e100fbe179ed4c47c77110d105f83275de27e070", "old_mode": 33188, "old_path": "rtc_base/signal_thread.cc", "new_id": "8f0d597f03a4ae8150034b79cf59e1f28867707c", "new_mode": 33188, "new_path": "rtc_base/signal_thread.cc" }, { "type": "modify", "old_id": "d9e8ade9b0e21fa0c739bde402b874d5eeff92ae", "old_mode": 33188, "old_path": "rtc_base/signal_thread.h", "new_id": "9229ca1abbdbe922f2db819a8366678ac2c82cdf", "new_mode": 33188, "new_path": "rtc_base/signal_thread.h" } ] }