I suspect the right solution is to fix the approach taken in Mesa to detecting Mir:
All the above modules should be loaded with RTLD_LOCAL. As far as I can tell they are so they shouldn't interact.
However, Mir's mesa.so.X client platform module reloads itself with RTLD_GLOBAL so that Mesa can find a Mir entry point. (Yes, this is an ugly hack.)
That is likely what causes symbols to be resolved from the wrong protobuf library and the problems seen here.
I suspect the right solution is to fix the approach taken in Mesa to detecting Mir:
All the above modules should be loaded with RTLD_LOCAL. As far as I can tell they are so they shouldn't interact.
However, Mir's mesa.so.X client platform module reloads itself with RTLD_GLOBAL so that Mesa can find a Mir entry point. (Yes, this is an ugly hack.)
That is likely what causes symbols to be resolved from the wrong protobuf library and the problems seen here.