Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8341608

jdeps in JDK 23 crashes when parsing signatures while jdeps in JDK 22 works fine

XMLWordPrintable

    • 23
    • generic
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      Temurin JDK 23+37

      A DESCRIPTION OF THE PROBLEM :
      For my program I use a fat/shaded/uber jar which I then run through an optimizer, Proguard. Then I run jdeps on it to find the used modules. In JDK 22, jdeps could successfully process my jar and return correct results. Now in JDK 23, running jdeps on that same jar crashes. Recompiling the jar with JDK 23 and running jdeps also crashes. It fails to parse some signatures because jdeps switched to using the in preview Classfile API in JDK 23.

      I can confirm that running the jar works fine in both JDK 22 and JDK 23 and I made sure to access and invoke methods from the problematic class, so the class is valid and works, just cannot be parsed by jdeps of JDK 23.

      The problematic class comes from a transitive dependency, so I have extracted it from my fat/shaded/uber jar and I will paste the output of `javap -v "TreeMap$TreeMapBuilder"` here as there is nowhere to attach the class itself on this website. Please contact me if more data is needed. It's of no use to try to find this class online because it's a different class file as a result of the Proguard optimization. Here is the output from javap (JDK 23):

      Classfile /path/to/extracted/TreeMap$TreeMapBuilder.class
        Last modified Jan 1, 1970; size 7183 bytes
        SHA-256 checksum 16cb6947cc5bbfc94f5a964b2ca8c6a0152526b092a32242faec56cb1f6e8f3f
        Compiled from "TreeMap.scala"
      public class scala.collection.immutable.TreeMap$TreeMapBuilder<A extends java.lang.Object, B extends java.lang.Object> extends scala.collection.immutable.NewRedBlackTree$MapHelper<A, B> implements scala.collection.mutable.Builder<scala.Tuple2<A, B>, scala.collection.immutable.TreeMap<A, B>>
        minor version: 0
        major version: 52
        flags: (0x0021) ACC_PUBLIC, ACC_SUPER
        this_class: #13 // scala/collection/immutable/TreeMap$TreeMapBuilder
        super_class: #10 // scala/collection/immutable/NewRedBlackTree$MapHelper
        interfaces: 1, fields: 2, methods: 17, attributes: 5
      Constant pool:
          #1 = Class #175 // java/lang/Object
          #2 = Class #176 // java/lang/Throwable
          #3 = Class #184 // scala/Tuple2
          #4 = Class #185 // scala/collection/TraversableOnce
          #5 = Class #186 // scala/collection/generic/Growable
          #6 = Class #187 // scala/collection/immutable/HasForeachEntry
          #7 = Class #188 // scala/collection/immutable/NewRedBlackTree
          #8 = Class #189 // scala/collection/immutable/NewRedBlackTree$
          #9 = Class #190 // scala/collection/immutable/NewRedBlackTree$Helper
         #10 = Class #191 // scala/collection/immutable/NewRedBlackTree$MapHelper
         #11 = Class #192 // scala/collection/immutable/NewRedBlackTree$Tree
         #12 = Class #193 // scala/collection/immutable/TreeMap
         #13 = Class #194 // scala/collection/immutable/TreeMap$TreeMapBuilder
         #14 = Class #195 // scala/collection/immutable/TreeMap$TreeMapBuilder$adder$
         #15 = Class #196 // scala/collection/mutable/Builder
         #16 = Class #197 // scala/math/Ordering
         #17 = Fieldref #8.#56 // scala/collection/immutable/NewRedBlackTree$.MODULE$:Lscala/collection/immutable/NewRedBlackTree$;
         #18 = Fieldref #13.#62 // scala/collection/immutable/TreeMap$TreeMapBuilder.adder$module:Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
         #19 = Fieldref #13.#70 // scala/collection/immutable/TreeMap$TreeMapBuilder.scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:Lscala/collection/immutable/NewRedBlackTree$Tree;
         #20 = Methodref #1.#64 // java/lang/Object.equals:(Ljava/lang/Object;)Z
         #21 = Methodref #3.#57 // scala/Tuple2._1:()Ljava/lang/Object;
         #22 = Methodref #3.#58 // scala/Tuple2._2:()Ljava/lang/Object;
         #23 = Methodref #8.#77 // scala/collection/immutable/NewRedBlackTree$.union:(Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)Lscala/collection/immutable/NewRedBlackTree$Tree;
         #24 = Methodref #9.#67 // scala/collection/immutable/NewRedBlackTree$Helper.ordering:()Lscala/math/Ordering;
         #25 = Methodref #10.#55 // scala/collection/immutable/NewRedBlackTree$MapHelper."<init>":(Lscala/math/Ordering;)V
         #26 = Methodref #12.#53 // scala/collection/immutable/TreeMap."<init>":(Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)V
         #27 = Methodref #12.#67 // scala/collection/immutable/TreeMap.ordering:()Lscala/math/Ordering;
         #28 = Methodref #12.#76 // scala/collection/immutable/TreeMap.tree0:()Lscala/collection/immutable/NewRedBlackTree$Tree;
         #29 = Methodref #13.#50 // scala/collection/immutable/TreeMap$TreeMapBuilder.$plus$eq:(Lscala/Tuple2;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
         #30 = Methodref #13.#51 // scala/collection/immutable/TreeMap$TreeMapBuilder.$plus$plus$eq:(Lscala/collection/TraversableOnce;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
         #31 = Methodref #13.#60 // scala/collection/immutable/TreeMap$TreeMapBuilder.adder:()Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
         #32 = Methodref #13.#61 // scala/collection/immutable/TreeMap$TreeMapBuilder.adder$lzycompute$1:()V
         #33 = Methodref #13.#63 // scala/collection/immutable/TreeMap$TreeMapBuilder.beforePublish:(Lscala/collection/immutable/NewRedBlackTree$Tree;)Lscala/collection/immutable/NewRedBlackTree$Tree;
         #34 = Methodref #13.#66 // scala/collection/immutable/TreeMap$TreeMapBuilder.mutableUpd:(Lscala/collection/immutable/NewRedBlackTree$Tree;Ljava/lang/Object;Ljava/lang/Object;)Lscala/collection/immutable/NewRedBlackTree$Tree;
         #35 = Methodref #13.#68 // scala/collection/immutable/TreeMap$TreeMapBuilder.result:()Lscala/collection/immutable/TreeMap;
         #36 = Methodref #13.#69 // scala/collection/immutable/TreeMap$TreeMapBuilder.scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:()Lscala/collection/immutable/NewRedBlackTree$Tree;
         #37 = Methodref #13.#71 // scala/collection/immutable/TreeMap$TreeMapBuilder.scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq:(Lscala/collection/immutable/NewRedBlackTree$Tree;)V
         #38 = Methodref #14.#54 // scala/collection/immutable/TreeMap$TreeMapBuilder$adder$."<init>":(Lscala/collection/immutable/TreeMap$TreeMapBuilder;)V
         #39 = Methodref #14.#59 // scala/collection/immutable/TreeMap$TreeMapBuilder$adder$.addForEach:(Lscala/collection/immutable/HasForeachEntry;)V
         #40 = InterfaceMethodref #5.#48 // scala/collection/generic/Growable.$init$:(Lscala/collection/generic/Growable;)V
         #41 = InterfaceMethodref #5.#52 // scala/collection/generic/Growable.$plus$plus$eq$:(Lscala/collection/generic/Growable;Lscala/collection/TraversableOnce;)Lscala/collection/generic/Growable;
         #42 = InterfaceMethodref #15.#49 // scala/collection/mutable/Builder.$init$:(Lscala/collection/mutable/Builder;)V
         #43 = InterfaceMethodref #15.#65 // scala/collection/mutable/Builder.mapResult$:(Lscala/collection/mutable/Builder;Lscala/Function1;)Lscala/collection/mutable/Builder;
         #44 = InterfaceMethodref #15.#72 // scala/collection/mutable/Builder.sizeHint$:(Lscala/collection/mutable/Builder;I)V
         #45 = InterfaceMethodref #15.#73 // scala/collection/mutable/Builder.sizeHint$:(Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;)V
         #46 = InterfaceMethodref #15.#74 // scala/collection/mutable/Builder.sizeHint$:(Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;I)V
         #47 = InterfaceMethodref #15.#75 // scala/collection/mutable/Builder.sizeHintBounded$:(Lscala/collection/mutable/Builder;ILscala/collection/TraversableLike;)V
         #48 = NameAndType #78:#107 // $init$:(Lscala/collection/generic/Growable;)V
         #49 = NameAndType #78:#117 // $init$:(Lscala/collection/mutable/Builder;)V
         #50 = NameAndType #79:#98 // $plus$eq:(Lscala/Tuple2;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
         #51 = NameAndType #80:#105 // $plus$plus$eq:(Lscala/collection/TraversableOnce;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
         #52 = NameAndType #81:#108 // $plus$plus$eq$:(Lscala/collection/generic/Growable;Lscala/collection/TraversableOnce;)Lscala/collection/generic/Growable;
         #53 = NameAndType #127:#114 // "<init>":(Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)V
         #54 = NameAndType #127:#116 // "<init>":(Lscala/collection/immutable/TreeMap$TreeMapBuilder;)V
         #55 = NameAndType #127:#123 // "<init>":(Lscala/math/Ordering;)V
         #56 = NameAndType #147:#140 // MODULE$:Lscala/collection/immutable/NewRedBlackTree$;
         #57 = NameAndType #158:#82 // _1:()Ljava/lang/Object;
         #58 = NameAndType #159:#82 // _2:()Ljava/lang/Object;
         #59 = NameAndType #160:#109 // addForEach:(Lscala/collection/immutable/HasForeachEntry;)V
         #60 = NameAndType #161:#85 // adder:()Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
         #61 = NameAndType #163:#90 // adder$lzycompute$1:()V
         #62 = NameAndType #164:#143 // adder$module:Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
         #63 = NameAndType #165:#110 // beforePublish:(Lscala/collection/immutable/NewRedBlackTree$Tree;)Lscala/collection/immutable/NewRedBlackTree$Tree;
         #64 = NameAndType #173:#96 // equals:(Ljava/lang/Object;)Z
         #65 = NameAndType #178:#120 // mapResult$:(Lscala/collection/mutable/Builder;Lscala/Function1;)Lscala/collection/mutable/Builder;
         #66 = NameAndType #179:#112 // mutableUpd:(Lscala/collection/immutable/NewRedBlackTree$Tree;Ljava/lang/Object;Ljava/lang/Object;)Lscala/collection/immutable/NewRedBlackTree$Tree;
         #67 = NameAndType #180:#89 // ordering:()Lscala/math/Ordering;
         #68 = NameAndType #181:#87 // result:()Lscala/collection/immutable/TreeMap;
         #69 = NameAndType #182:#83 // scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:()Lscala/collection/immutable/NewRedBlackTree$Tree;
         #70 = NameAndType #182:#141 // scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:Lscala/collection/immutable/NewRedBlackTree$Tree;
         #71 = NameAndType #183:#111 // scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq:(Lscala/collection/immutable/NewRedBlackTree$Tree;)V
         #72 = NameAndType #200:#118 // sizeHint$:(Lscala/collection/mutable/Builder;I)V
         #73 = NameAndType #200:#121 // sizeHint$:(Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;)V
         #74 = NameAndType #200:#122 // sizeHint$:(Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;I)V
         #75 = NameAndType #202:#119 // sizeHintBounded$:(Lscala/collection/mutable/Builder;ILscala/collection/TraversableLike;)V
         #76 = NameAndType #204:#83 // tree0:()Lscala/collection/immutable/NewRedBlackTree$Tree;
         #77 = NameAndType #205:#113 // union:(Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)Lscala/collection/immutable/NewRedBlackTree$Tree;
         #78 = Utf8 $init$
         #79 = Utf8 $plus$eq
         #80 = Utf8 $plus$plus$eq
         #81 = Utf8 $plus$plus$eq$
         #82 = Utf8 ()Ljava/lang/Object;
         #83 = Utf8 ()Lscala/collection/immutable/NewRedBlackTree$Tree;
         #84 = Utf8 ()Lscala/collection/immutable/NewRedBlackTree$Tree<TA;TB;>;
         #85 = Utf8 ()Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
         #86 = Utf8 ()Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>.;
         #87 = Utf8 ()Lscala/collection/immutable/TreeMap;
         #88 = Utf8 ()Lscala/collection/immutable/TreeMap<TA;TB;>;
         #89 = Utf8 ()Lscala/math/Ordering;
         #90 = Utf8 ()V
         #91 = Utf8 (I)V
         #92 = Utf8 (ILscala/collection/TraversableLike;)V
         #93 = Utf8 (ILscala/collection/TraversableLike<**>;)V
         #94 = Utf8 (Ljava/lang/Object;)Lscala/collection/generic/Growable;
         #95 = Utf8 (Ljava/lang/Object;)Lscala/collection/mutable/Builder;
         #96 = Utf8 (Ljava/lang/Object;)Z
         #97 = Utf8 (Lscala/Function1;)Lscala/collection/mutable/Builder;
         #98 = Utf8 (Lscala/Tuple2;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
         #99 = Utf8 (Lscala/Tuple2<TA;TB;>;)Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>;
        #100 = Utf8 (Lscala/collection/TraversableLike;)V
        #101 = Utf8 (Lscala/collection/TraversableLike;I)V
        #102 = Utf8 (Lscala/collection/TraversableLike<**>;)V
        #103 = Utf8 (Lscala/collection/TraversableLike<**>;I)V
        #104 = Utf8 (Lscala/collection/TraversableOnce;)Lscala/collection/generic/Growable;
        #105 = Utf8 (Lscala/collection/TraversableOnce;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
        #106 = Utf8 (Lscala/collection/TraversableOnce<Lscala/Tuple2<TA;TB;>;>;)Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>;
        #107 = Utf8 (Lscala/collection/generic/Growable;)V
        #108 = Utf8 (Lscala/collection/generic/Growable;Lscala/collection/TraversableOnce;)Lscala/collection/generic/Growable;
        #109 = Utf8 (Lscala/collection/immutable/HasForeachEntry;)V
        #110 = Utf8 (Lscala/collection/immutable/NewRedBlackTree$Tree;)Lscala/collection/immutable/NewRedBlackTree$Tree;
        #111 = Utf8 (Lscala/collection/immutable/NewRedBlackTree$Tree;)V
        #112 = Utf8 (Lscala/collection/immutable/NewRedBlackTree$Tree;Ljava/lang/Object;Ljava/lang/Object;)Lscala/collection/immutable/NewRedBlackTree$Tree;
        #113 = Utf8 (Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)Lscala/collection/immutable/NewRedBlackTree$Tree;
        #114 = Utf8 (Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)V
        #115 = Utf8 (Lscala/collection/immutable/NewRedBlackTree$Tree<TA;TB;>;)V
        #116 = Utf8 (Lscala/collection/immutable/TreeMap$TreeMapBuilder;)V
        #117 = Utf8 (Lscala/collection/mutable/Builder;)V
        #118 = Utf8 (Lscala/collection/mutable/Builder;I)V
        #119 = Utf8 (Lscala/collection/mutable/Builder;ILscala/collection/TraversableLike;)V
        #120 = Utf8 (Lscala/collection/mutable/Builder;Lscala/Function1;)Lscala/collection/mutable/Builder;
        #121 = Utf8 (Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;)V
        #122 = Utf8 (Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;I)V
        #123 = Utf8 (Lscala/math/Ordering;)V
        #124 = Utf8 (Lscala/math/Ordering<TA;>;)V
        #125 = Utf8 <A:Ljava/lang/Object;B:Ljava/lang/Object;>Lscala/collection/immutable/NewRedBlackTree$MapHelper<TA;TB;>;Lscala/collection/mutable/Builder<Lscala/Tuple2<TA;TB;>;Lscala/collection/immutable/TreeMap<TA;TB;>;>;
        #126 = Utf8 <NewTo:Ljava/lang/Object;>(Lscala/Function1<Lscala/collection/immutable/TreeMap<TA;TB;>;TNewTo;>;)Lscala/collection/mutable/Builder<Lscala/Tuple2<TA;TB;>;TNewTo;>;
        #127 = Utf8 <init>
        #128 = Utf8 Code
        #129 = Utf8 Helper
        #130 = Utf8 I
        #131 = Utf8 InnerClasses
        #132 = Utf8 LineNumberTable
        #133 = Utf8 Ljava/lang/Object;
        #134 = Utf8 LocalVariableTable
        #135 = Utf8 Lscala/Function1;
        #136 = Utf8 Lscala/Tuple2;
        #137 = Utf8 Lscala/collection/Seq;
        #138 = Utf8 Lscala/collection/TraversableLike;
        #139 = Utf8 Lscala/collection/TraversableOnce;
        #140 = Utf8 Lscala/collection/immutable/NewRedBlackTree$;
        #141 = Utf8 Lscala/collection/immutable/NewRedBlackTree$Tree;
        #142 = Utf8 Lscala/collection/immutable/NewRedBlackTree$Tree<TA;TB;>;
        #143 = Utf8 Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
        #144 = Utf8 Lscala/collection/immutable/TreeMap$TreeMapBuilder;
        #145 = Utf8 Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>.;
        #146 = Utf8 Lscala/math/Ordering;
        #147 = Utf8 MODULE$
        #148 = Utf8 MapHelper
        #149 = Utf8 MethodParameters
        #150 = Utf8 Scala
        #151 = Utf8 ScalaInlineInfo
        #152 = Utf8 Signature
        #153 = Utf8 SourceFile
        #154 = Utf8 StackMapTable
        #155 = Utf8 Tree
        #156 = Utf8 TreeMap.scala
        #157 = Utf8 TreeMapBuilder
        #158 = Utf8 _1
        #159 = Utf8 _2
        #160 = Utf8 addForEach
        #161 = Utf8 adder
        #162 = Utf8 adder$
        #163 = Utf8 adder$lzycompute$1
        #164 = Utf8 adder$module
        #165 = Utf8 beforePublish
        #166 = Utf8 boundingColl
        #167 = Utf8 coll
        #168 = Utf8 delta
        #169 = Utf8 elem
        #170 = Utf8 elem1
        #171 = Utf8 elem2
        #172 = Utf8 elems
        #173 = Utf8 equals
        #174 = Utf8 f
        #175 = Utf8 java/lang/Object
        #176 = Utf8 java/lang/Throwable
        #177 = Utf8 mapResult
        #178 = Utf8 mapResult$
        #179 = Utf8 mutableUpd
        #180 = Utf8 ordering
        #181 = Utf8 result
        #182 = Utf8 scala$collection$immutable$TreeMap$TreeMapBuilder$$tree
        #183 = Utf8 scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq
        #184 = Utf8 scala/Tuple2
        #185 = Utf8 scala/collection/TraversableOnce
        #186 = Utf8 scala/collection/generic/Growable
        #187 = Utf8 scala/collection/immutable/HasForeachEntry
        #188 = Utf8 scala/collection/immutable/NewRedBlackTree
        #189 = Utf8 scala/collection/immutable/NewRedBlackTree$
        #190 = Utf8 scala/collection/immutable/NewRedBlackTree$Helper
        #191 = Utf8 scala/collection/immutable/NewRedBlackTree$MapHelper
        #192 = Utf8 scala/collection/immutable/NewRedBlackTree$Tree
        #193 = Utf8 scala/collection/immutable/TreeMap
        #194 = Utf8 scala/collection/immutable/TreeMap$TreeMapBuilder
        #195 = Utf8 scala/collection/immutable/TreeMap$TreeMapBuilder$adder$
        #196 = Utf8 scala/collection/mutable/Builder
        #197 = Utf8 scala/math/Ordering
        #198 = Utf8 size
        #199 = Utf8 sizeHint
        #200 = Utf8 sizeHint$
        #201 = Utf8 sizeHintBounded
        #202 = Utf8 sizeHintBounded$
        #203 = Utf8 this
        #204 = Utf8 tree0
        #205 = Utf8 union
        #206 = Utf8 x$1
        #207 = Utf8 xs
      {
        public void sizeHint(int);
          descriptor: (I)V
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: iload_1
               2: invokestatic #44 // InterfaceMethod scala/collection/mutable/Builder.sizeHint$:(Lscala/collection/mutable/Builder;I)V
               5: return
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 6 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 6 1 size I
          MethodParameters:
            Name Flags
            size final

        public void sizeHint(scala.collection.TraversableLike<?, ?>);
          descriptor: (Lscala/collection/TraversableLike;)V
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: invokestatic #45 // InterfaceMethod scala/collection/mutable/Builder.sizeHint$:(Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;)V
               5: return
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 6 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 6 1 coll Lscala/collection/TraversableLike;
          Signature: #102 // (Lscala/collection/TraversableLike<**>;)V
          MethodParameters:
            Name Flags
            coll final

        public void sizeHint(scala.collection.TraversableLike<?, ?>, int);
          descriptor: (Lscala/collection/TraversableLike;I)V
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=3, locals=3, args_size=3
               0: aload_0
               1: aload_1
               2: iload_2
               3: invokestatic #46 // InterfaceMethod scala/collection/mutable/Builder.sizeHint$:(Lscala/collection/mutable/Builder;Lscala/collection/TraversableLike;I)V
               6: return
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 7 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 7 1 coll Lscala/collection/TraversableLike;
                  0 7 2 delta I
          Signature: #103 // (Lscala/collection/TraversableLike<**>;I)V
          MethodParameters:
            Name Flags
            coll final
            delta final

        public void sizeHintBounded(int, scala.collection.TraversableLike<?, ?>);
          descriptor: (ILscala/collection/TraversableLike;)V
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=3, locals=3, args_size=3
               0: aload_0
               1: iload_1
               2: aload_2
               3: invokestatic #47 // InterfaceMethod scala/collection/mutable/Builder.sizeHintBounded$:(Lscala/collection/mutable/Builder;ILscala/collection/TraversableLike;)V
               6: return
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 7 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 7 1 size I
                  0 7 2 boundingColl Lscala/collection/TraversableLike;
          Signature: #93 // (ILscala/collection/TraversableLike<**>;)V
          MethodParameters:
            Name Flags
            size final
            boundingColl final

        public <NewTo extends java.lang.Object> scala.collection.mutable.Builder<scala.Tuple2<A, B>, NewTo> mapResult(scala.Function1<scala.collection.immutable.TreeMap<A, B>, NewTo>);
          descriptor: (Lscala/Function1;)Lscala/collection/mutable/Builder;
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: invokestatic #43 // InterfaceMethod scala/collection/mutable/Builder.mapResult$:(Lscala/collection/mutable/Builder;Lscala/Function1;)Lscala/collection/mutable/Builder;
               5: areturn
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 6 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 6 1 f Lscala/Function1;
          Signature: #126 // <NewTo:Ljava/lang/Object;>(Lscala/Function1<Lscala/collection/immutable/TreeMap<TA;TB;>;TNewTo;>;)Lscala/collection/mutable/Builder<Lscala/Tuple2<TA;TB;>;TNewTo;>;
          MethodParameters:
            Name Flags
            f final

        public scala.collection.immutable.NewRedBlackTree$Tree<A, B> scala$collection$immutable$TreeMap$TreeMapBuilder$$tree();
          descriptor: ()Lscala/collection/immutable/NewRedBlackTree$Tree;
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=1, locals=1, args_size=1
               0: aload_0
               1: getfield #19 // Field scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:Lscala/collection/immutable/NewRedBlackTree$Tree;
               4: areturn
            LineNumberTable:
              line 41: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 5 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
          Signature: #84 // ()Lscala/collection/immutable/NewRedBlackTree$Tree<TA;TB;>;

        public void scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq(scala.collection.immutable.NewRedBlackTree$Tree<A, B>);
          descriptor: (Lscala/collection/immutable/NewRedBlackTree$Tree;)V
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: putfield #19 // Field scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:Lscala/collection/immutable/NewRedBlackTree$Tree;
               5: return
            LineNumberTable:
              line 41: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 6 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 6 1 x$1 Lscala/collection/immutable/NewRedBlackTree$Tree;
          Signature: #115 // (Lscala/collection/immutable/NewRedBlackTree$Tree<TA;TB;>;)V
          MethodParameters:
            Name Flags
            x$1 final

        public scala.collection.immutable.TreeMap$TreeMapBuilder<A, B> $plus$eq(scala.Tuple2<A, B>);
          descriptor: (Lscala/Tuple2;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=5, locals=2, args_size=2
               0: aload_0
               1: aload_0
               2: aload_0
               3: invokevirtual #36 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:()Lscala/collection/immutable/NewRedBlackTree$Tree;
               6: aload_1
               7: invokevirtual #21 // Method scala/Tuple2._1:()Ljava/lang/Object;
              10: aload_1
              11: invokevirtual #22 // Method scala/Tuple2._2:()Ljava/lang/Object;
              14: invokevirtual #34 // Method mutableUpd:(Lscala/collection/immutable/NewRedBlackTree$Tree;Ljava/lang/Object;Ljava/lang/Object;)Lscala/collection/immutable/NewRedBlackTree$Tree;
              17: invokevirtual #37 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq:(Lscala/collection/immutable/NewRedBlackTree$Tree;)V
              20: aload_0
              21: areturn
            LineNumberTable:
              line 44: 0
              line 45: 20
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 22 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 22 1 elem Lscala/Tuple2;
          Signature: #99 // (Lscala/Tuple2<TA;TB;>;)Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>;
          MethodParameters:
            Name Flags
            elem final

        public scala.collection.immutable.TreeMap$TreeMapBuilder<A, B> $plus$plus$eq(scala.collection.TraversableOnce<scala.Tuple2<A, B>>);
          descriptor: (Lscala/collection/TraversableOnce;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=5, locals=4, args_size=2
               0: aload_1
               1: instanceof #12 // class scala/collection/immutable/TreeMap
               4: ifeq 87
               7: aload_1
               8: checkcast #12 // class scala/collection/immutable/TreeMap
              11: astore_2
              12: aload_2
              13: invokevirtual #27 // Method scala/collection/immutable/TreeMap.ordering:()Lscala/math/Ordering;
              16: aload_0
              17: invokespecial #24 // Method scala/collection/immutable/NewRedBlackTree$Helper.ordering:()Lscala/math/Ordering;
              20: astore_3
              21: dup
              22: ifnonnull 33
              25: pop
              26: aload_3
              27: ifnull 40
              30: goto 87
              33: aload_3
              34: invokevirtual #20 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
              37: ifeq 87
              40: aload_0
              41: invokevirtual #36 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:()Lscala/collection/immutable/NewRedBlackTree$Tree;
              44: ifnonnull 58
              47: aload_0
              48: aload_2
              49: invokevirtual #28 // Method scala/collection/immutable/TreeMap.tree0:()Lscala/collection/immutable/NewRedBlackTree$Tree;
              52: invokevirtual #37 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq:(Lscala/collection/immutable/NewRedBlackTree$Tree;)V
              55: goto 114
              58: aload_0
              59: getstatic #17 // Field scala/collection/immutable/NewRedBlackTree$.MODULE$:Lscala/collection/immutable/NewRedBlackTree$;
              62: aload_0
              63: aload_0
              64: invokevirtual #36 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:()Lscala/collection/immutable/NewRedBlackTree$Tree;
              67: invokevirtual #33 // Method beforePublish:(Lscala/collection/immutable/NewRedBlackTree$Tree;)Lscala/collection/immutable/NewRedBlackTree$Tree;
              70: aload_2
              71: invokevirtual #28 // Method scala/collection/immutable/TreeMap.tree0:()Lscala/collection/immutable/NewRedBlackTree$Tree;
              74: aload_0
              75: invokespecial #24 // Method scala/collection/immutable/NewRedBlackTree$Helper.ordering:()Lscala/math/Ordering;
              78: invokevirtual #23 // Method scala/collection/immutable/NewRedBlackTree$.union:(Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)Lscala/collection/immutable/NewRedBlackTree$Tree;
              81: invokevirtual #37 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree_$eq:(Lscala/collection/immutable/NewRedBlackTree$Tree;)V
              84: goto 114
              87: aload_1
              88: instanceof #6 // class scala/collection/immutable/HasForeachEntry
              91: ifeq 108
              94: aload_0
              95: invokespecial #31 // Method adder:()Lscala/collection/immutable/TreeMap$TreeMapBuilder$adder$;
              98: aload_1
              99: checkcast #6 // class scala/collection/immutable/HasForeachEntry
             102: invokevirtual #39 // Method scala/collection/immutable/TreeMap$TreeMapBuilder$adder$.addForEach:(Lscala/collection/immutable/HasForeachEntry;)V
             105: goto 114
             108: aload_0
             109: aload_1
             110: invokestatic #41 // InterfaceMethod scala/collection/generic/Growable.$plus$plus$eq$:(Lscala/collection/generic/Growable;Lscala/collection/TraversableOnce;)Lscala/collection/generic/Growable;
             113: pop
             114: aload_0
             115: areturn
            LineNumberTable:
              line 70: 0
              line 71: 40
              line 72: 58
              line 73: 87
              line 75: 94
              line 77: 108
              line 79: 114
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 116 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 116 1 xs Lscala/collection/TraversableOnce;
            StackMapTable: number_of_entries = 6
              frame_type = 255 /* full_frame */
                offset_delta = 33
                locals = [ class scala/collection/immutable/TreeMap$TreeMapBuilder, class scala/collection/TraversableOnce, class scala/collection/immutable/TreeMap, class scala/math/Ordering ]
                stack = [ class scala/math/Ordering ]
              frame_type = 255 /* full_frame */
                offset_delta = 6
                locals = [ class scala/collection/immutable/TreeMap$TreeMapBuilder, top, class scala/collection/immutable/TreeMap ]
                stack = []
              frame_type = 17 /* same */
              frame_type = 255 /* full_frame */
                offset_delta = 28
                locals = [ class scala/collection/immutable/TreeMap$TreeMapBuilder, class scala/collection/TraversableOnce ]
                stack = []
              frame_type = 20 /* same */
              frame_type = 250 /* chop */
                offset_delta = 5
          Signature: #106 // (Lscala/collection/TraversableOnce<Lscala/Tuple2<TA;TB;>;>;)Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>;
          MethodParameters:
            Name Flags
            xs final

        public scala.collection.immutable.TreeMap<A, B> result();
          descriptor: ()Lscala/collection/immutable/TreeMap;
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=4, locals=1, args_size=1
               0: new #12 // class scala/collection/immutable/TreeMap
               3: dup
               4: aload_0
               5: aload_0
               6: invokevirtual #36 // Method scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:()Lscala/collection/immutable/NewRedBlackTree$Tree;
               9: invokevirtual #33 // Method beforePublish:(Lscala/collection/immutable/NewRedBlackTree$Tree;)Lscala/collection/immutable/NewRedBlackTree$Tree;
              12: aload_0
              13: invokespecial #24 // Method scala/collection/immutable/NewRedBlackTree$Helper.ordering:()Lscala/math/Ordering;
              16: invokespecial #26 // Method scala/collection/immutable/TreeMap."<init>":(Lscala/collection/immutable/NewRedBlackTree$Tree;Lscala/math/Ordering;)V
              19: areturn
            LineNumberTable:
              line 86: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 20 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
          Signature: #88 // ()Lscala/collection/immutable/TreeMap<TA;TB;>;

        public java.lang.Object result();
          descriptor: ()Ljava/lang/Object;
          flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
          Code:
            stack=1, locals=1, args_size=1
               0: aload_0
               1: invokevirtual #35 // Method result:()Lscala/collection/immutable/TreeMap;
               4: areturn
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 5 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;

        public scala.collection.generic.Growable $plus$plus$eq(scala.collection.TraversableOnce);
          descriptor: (Lscala/collection/TraversableOnce;)Lscala/collection/generic/Growable;
          flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: invokevirtual #30 // Method $plus$plus$eq:(Lscala/collection/TraversableOnce;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
               5: areturn
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 6 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 6 1 xs Lscala/collection/TraversableOnce;
          MethodParameters:
            Name Flags
            xs final

        public scala.collection.generic.Growable $plus$eq(java.lang.Object);
          descriptor: (Ljava/lang/Object;)Lscala/collection/generic/Growable;
          flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: checkcast #3 // class scala/Tuple2
               5: invokevirtual #29 // Method $plus$eq:(Lscala/Tuple2;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
               8: areturn
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 9 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 9 1 elem Ljava/lang/Object;
          MethodParameters:
            Name Flags
            elem final

        public scala.collection.mutable.Builder $plus$eq(java.lang.Object);
          descriptor: (Ljava/lang/Object;)Lscala/collection/mutable/Builder;
          flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: checkcast #3 // class scala/Tuple2
               5: invokevirtual #29 // Method $plus$eq:(Lscala/Tuple2;)Lscala/collection/immutable/TreeMap$TreeMapBuilder;
               8: areturn
            LineNumberTable:
              line 37: 0
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 9 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 9 1 elem Ljava/lang/Object;
          MethodParameters:
            Name Flags
            elem final

        public scala.collection.immutable.TreeMap$TreeMapBuilder(scala.math.Ordering<A>);
          descriptor: (Lscala/math/Ordering;)V
          flags: (0x0001) ACC_PUBLIC
          Code:
            stack=2, locals=2, args_size=2
               0: aload_0
               1: aload_1
               2: invokespecial #25 // Method scala/collection/immutable/NewRedBlackTree$MapHelper."<init>":(Lscala/math/Ordering;)V
               5: aload_0
               6: invokestatic #40 // InterfaceMethod scala/collection/generic/Growable.$init$:(Lscala/collection/generic/Growable;)V
               9: aload_0
              10: invokestatic #42 // InterfaceMethod scala/collection/mutable/Builder.$init$:(Lscala/collection/mutable/Builder;)V
              13: aload_0
              14: aconst_null
              15: putfield #19 // Field scala$collection$immutable$TreeMap$TreeMapBuilder$$tree:Lscala/collection/immutable/NewRedBlackTree$Tree;
              18: return
            LineNumberTable:
              line 38: 0
              line 41: 13
              line 37: 18
            LocalVariableTable:
              Start Length Slot Name Signature
                  0 19 0 this Lscala/collection/immutable/TreeMap$TreeMapBuilder;
                  0 19 1 ordering Lscala/math/Ordering;
          Signature: #124 // (Lscala/math/Ordering<TA;>;)V
          MethodParameters:
            Name Flags
            ordering final
      }
      InnerClasses:
        public static abstract #129= #9 of #7; // Helper=class scala/collection/immutable/NewRedBlackTree$Helper of class scala/collection/immutable/NewRedBlackTree
        public static #148= #10 of #7; // MapHelper=class scala/collection/immutable/NewRedBlackTree$MapHelper of class scala/collection/immutable/NewRedBlackTree
        public static final #155= #11 of #7; // Tree=class scala/collection/immutable/NewRedBlackTree$Tree of class scala/collection/immutable/NewRedBlackTree
      Signature: #125 // <A:Ljava/lang/Object;B:Ljava/lang/Object;>Lscala/collection/immutable/NewRedBlackTree$MapHelper<TA;TB;>;Lscala/collection/mutable/Builder<Lscala/Tuple2<TA;TB;>;Lscala/collection/immutable/TreeMap<TA;TB;>;>;
      SourceFile: "TreeMap.scala"
        ScalaInlineInfo: length = 0x63 (unknown attribute)
         01 00 00 13 00 46 00 B7 00 00 46 00 BA 00 00 46
         00 47 00 00 46 00 64 00 00 79 00 B4 00 00 79 00
         7A 00 00 AE 00 C0 00 00 53 00 54 01 00 58 00 59
         01 00 AA 00 59 00 00 3D 00 3E 00 00 AB 00 6C 00
         00 AB 00 AC 00 00 1B 00 5C 01 00 60 00 61 01 00
         1E 00 1F 00 00 1E 00 28 00 00 1E 00 2F 00 00 35
         00 36 00
        Scala: length = 0x0 (unknown attribute)

      REGRESSION : Last worked in version 22.0.2

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Used command: jdeps --print-module-deps --ignore-missing-deps my-jar-file.jar

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      jdeps returns the used modules
      ACTUAL -
      Exception in thread "main" com.sun.tools.jdeps.Dependencies$ClassFileError
      at jdk.jdeps/com.sun.tools.jdeps.Dependencies$BasicDependencyFinder$Visitor.scanAttributes(Dependencies.java:632)
      at jdk.jdeps/com.sun.tools.jdeps.Dependencies$ClassDependencyFinder.findDependencies(Dependencies.java:470)
      at jdk.jdeps/com.sun.tools.jdeps.DependencyFinder$Finder.findDependencies(DependencyFinder.java:315)
      at jdk.jdeps/com.sun.tools.jdeps.DependencyFinder.lambda$parse$5(DependencyFinder.java:196)
      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
      at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
      at java.base/java.lang.Thread.run(Thread.java:1575)
      Caused by: java.lang.IllegalArgumentException: Unexpected character ; at position 59, expected an identifier: Lscala/collection/immutable/TreeMap$TreeMapBuilder<TA;TB;>.;
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.error(SignaturesImpl.java:372)
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.unexpectedError(SignaturesImpl.java:366)
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.requireIdentifier(SignaturesImpl.java:234)
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.classTypeSig(SignaturesImpl.java:169)
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.referenceTypeSig(SignaturesImpl.java:136)
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.typeSig(SignaturesImpl.java:130)
      at java.base/jdk.internal.classfile.impl.SignaturesImpl.parseSignature(SignaturesImpl.java:93)
      at java.base/java.lang.classfile.Signature.parseFrom(Signature.java:54)
      at java.base/java.lang.classfile.attribute.SignatureAttribute.asTypeSignature(SignatureAttribute.java:88)
      at jdk.jdeps/com.sun.tools.jdeps.Dependencies$BasicDependencyFinder$Visitor.scanAttributes(Dependencies.java:605)
      ... 9 more

      FREQUENCY : always


            liach Chen Liang
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: