Callbacks may be dropped and it's relatively difficult to discover where and when this happens |
|||||||
Issue descriptionHaving stack traces about these cases happening in the wild would really help debug issues. In Web Bluetooth we have some issues opened in which Web Bluetooth randomly stops working. After some investigation I figured out that at least the reproducible instance was because of a callback being dropped and our service being destroyed because the pipe closed. I suspect that other reports are for similar reasons but the lack of reproduction steps or any type of logging is making it really hard to debug. We would be happy with a LOG(WARNING) or a LOG(ERROR) given that our users are used to submitting logs.
,
Jul 1 2016
I don't think a LOG(WARNING) or LOG(ERROR) is the best approach here. It might be suitable for issues hit in developer-focused feature implementations but many more features will have the potential to hit this and we can't rely on log submissions. Given that it's not crash-worthy (IMHO) maybe it would make sense to use base::DumpWithoutCrashing() to log these occurrences. This would get us crash reports with full stacks from exactly where a callback was dropped.
,
Jul 1 2016
SGTM
,
May 29 2017
,
May 29 2018
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Oct 17
,
Nov 14
DumpWithoutCrashing is actually pretty strongly discouraged now. I think I'll just make this a CHECK failure, as it should be considered a programmer error in the same vein as a memory leak. I'm terrified of just how many bugs are going to get assigned to me once I land this, but I think it might be better than having random silent failures. :}
,
Nov 14
Actually, nevermind. It turns out that checking the callback status must be done asynchronously, and generating code to do this on every interface has a non-negligible impact on binary size, so we only generate it with DCHECK on. I think we have to be OK with this as-is. At least now we have Albatross feeding reports from DCHECK builds in the wild. |
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by ortuno@chromium.org
, Jul 1 2016