Menu

#742 NPE calling proguard 6.1.0beta2

v6.0
closed-fixed
None
Medium
2019-09-14
2019-02-08
brunocarle
No

Hello,

When running proguard 6.1.0beta2, I get a NPE .

java.lang.NullPointerException
at proguard.shrink.ShortestUsageMarker.isUsed(ShortestUsageMarker.java:147)
at proguard.shrink.ClassShrinker.shrinkConstantIndexArray(ClassShrinker.java:468)
at proguard.shrink.ClassShrinker.visitNestMembersAttribute(ClassShrinker.java:215)
at proguard.classfile.attribute.NestMembersAttribute.accept(NestMembersAttribute.java:64)
at proguard.classfile.ProgramClass.attributesAccept(ProgramClass.java:619)
at proguard.shrink.ClassShrinker.visitProgramClass(ClassShrinker.java:113)
at proguard.classfile.visitor.MultiClassVisitor.visitProgramClass(MultiClassVisitor.java:67)
at proguard.shrink.UsedClassFilter.visitProgramClass(UsedClassFilter.java:62)
at proguard.classfile.ProgramClass.accept(ProgramClass.java:430)
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:125)
at proguard.shrink.Shrinker.execute(Shrinker.java:158)
at proguard.ProGuard.shrink(ProGuard.java:392)
at proguard.ProGuard.execute(ProGuard.java:146)
at proguard.ProGuard.main(ProGuard.java:586)

I am not able to find out which of my classes causes the behavior.
What i see in debugger is that ClassShrinker.visitNestMembersAttribute() is called with a clazz parameter having constantPool[0] set to null . It then causes a NPE in ShortestUsageMarker.isUsed().

To work around I just added a check for null in ShortestUsageMarker line 147:
protected boolean isUsed(VisitorAccepter visitorAccepter)
{

  • Object visitorInfo = visitorAccepter.getVisitorInfo();
  • Object visitorInfo = visitorAccepter==null?null:visitorAccepter.getVisitorInfo();

Discussion

  • Helmuth Melcher

    Helmuth Melcher - 2019-02-25

    Seeing that same NPE with 6.1.0beta2, the build works fine with -dontshrink enabled.

     
  • Eric Lafortune

    Eric Lafortune - 2019-03-29

    Thanks for your report. This turns out to be a duplicate of bug #740 (which also contains a patch).

     
  • brunocarle

    brunocarle - 2019-05-22

    seems to be fixed in 6.1.0, thanks

     
  • Eric Lafortune

    Eric Lafortune - 2019-09-14
    • status: open --> closed-fixed
    • assigned_to: Eric Lafortune
     

Log in to post a comment.

MongoDB Logo MongoDB