The scenario is as follows. There are two JAR files: A.jar and B.jar, obfuscated one after another with the obfuscation mapping of A applied to B (via applymapping).
A declares an functional interface Foo with a single method bar.
B declares a class where variable of type Foo is assigned a lambda.
At runtime we received an exception about an undeclared abstract method error ('bar'). This was a bit weird because 'bar' was renamed to something different in A and we had mapping file to prove it.
The problem was difficult to figure out because for certain interfaces in A everything worked perfectly well in B. Turns out the outcome actually depends on whether A has ANY invokedynamic (lambda) of Foo inside any of its classes -- if so, Proguard will keep method name intact and not obfuscate it. This is confirmed by looking at Obfuscator.java:
// We also keep the names of the abstract methods of functional // interfaces referenced from bootstrap method arguments (additional // interfaces with LambdaMetafactory.altMetafactory). // The functional method names have to match the names in the // dynamic method invocations with LambdaMetafactory.
I spent a good few hours trying to figure it out. Can't offer a solution or even an idea on how to solve it (or work around it), but it's definitely a trappy thing and caught us by surprise.
This issue is describing the same problem:
https://sourceforge.net/p/proguard/bugs/620/