Context:
[chromium-dev] Not able to launch chromium browser
[blink-dev] Chromium on Xenial - protobuf version mismatch
My understanding of the situation is the following.
In component build, we end up with some .so that exposes protobuf symbols from third_party/protobuf (that we build from sources).
At runtime, however, we end up indirectly depending on libmirprotobuf.so.3 (a system package), apparently due to GTK 3.
Now we get into the state where both our .so(s) and libmirprotobuf.so.3 exposes some protobuf symbol. Depending on the loading order (IIRC symbol resolution starts from the root executable and continues the search in BFS) our symbols might win (whoever wins is irrelevant really)
So we end up with two code paths expecting different versions of protobuf (this is wai) but using the same library (this is bad)
This should be a problem only for component builds, as in static builds we don't expose protobuf symbols.
Not sure what the right fix would be here, this is a quite tricky problem.
On possibility might be using dlmopen with LM_ID_NEWLM to create a new loader namespace. Although haven't thought to this enough to be confident this would work without causing more problems.
Comment 1 by primiano@chromium.org
, Mar 17 2017Status: Duplicate (was: Unconfirmed)