C++ bindings are pretty well guarded against thread/sequence-unsafe usage, but Java bindings are not. It is e.g. not that difficult to unintentionally bind an interface request to two separate bindings endpoints on different threads.
This will manifest in one of the bindings throwing a cryptic error about FAILED_PRECONDITION on a pipe read, as both will be notified of the available message before racing to read it. Since this is a very specific set of conditions we can easily detect it and log a more meaningful error.
Comment 1 by roc...@chromium.org
, Jan 18 2018