VerifyError when using the record pattern
David Holmes
david.holmes at oracle.com
Mon Dec 1 21:42:30 UTC 2025
On 1/12/2025 4:31 am, Anton Rameykov wrote:
> Good day to All! I'm asking for help. I think I found a bug.
Yes you have, but this mailing list is not for filing bug reports. I
will file an issue for this in the bug system and let you know the
ticket number.
Cheers,
David
> ```
> Exception in thread "main" java.lang.VerifyError: Inconsistent stackmap
> frames at branch target 206
> Exception Details:
> Location:
> org/arcane418/StatusService.statusScan(Ljava/util/concurrent/
> atomic/AtomicBoolean;Ljava/util/concurrent/CompletableFuture;)V @206:
> aload_3
> Reason:
> Type top (current frame, locals[5]) is not assignable to 'org/
> arcane418/Status$InternalError' (stack map, locals[5])
> Current Frame:
> bci: @130
> flags: { }
> locals: { 'org/arcane418/StatusService', 'java/util/concurrent/
> atomic/AtomicBoolean', 'java/util/concurrent/CompletableFuture', 'org/
> arcane418/Status', integer }
> stack: { integer }
> Stackmap Frame:
> bci: @206
> flags: { }
> locals: { 'org/arcane418/StatusService', 'java/util/concurrent/
> atomic/AtomicBoolean', 'java/util/concurrent/CompletableFuture', 'org/
> arcane418/Status', integer, 'org/arcane418/Status$InternalError' }
> stack: { }
> Bytecode:
> 0000000: 2bb6 0024 9900 0c2c b200 2ab6 0030 57b1
> 0000010: 1400 36b8 0038 b800 3ea7 0011 4e2b 04b6
> 0000020: 0046 2cb2 002a b600 3057 2ab4 0010 b600
> 0000030: 4a3a 0519 05c1 0050 9900 3219 05c0 0050
> 0000040: 4e2d b600 523a 0619 063a 042a b400 0abb
> 0000050: 0056 59bb 0058 5919 04b7 005a 125d b700
> 0000060: 5fb9 0062 0200 57a7 ff99 2ab4 0010 b600
> 0000070: 4a59 b800 6757 4e03 3604 2d15 04ba 006d
> 0000080: 0000 aa00 0000 001a 0000 0000 0000 0002
> 0000090: 0000 0024 0000 004c 0000 0055 bb00 7159
> 00000a0: 0101 b700 73bf 2dc0 0050 3a05 2ab4 000a
> 00000b0: bb00 5659 bb00 5859 1905 b600 52b7 005a
> 00000c0: 1276 b700 5fb9 0062 0200 57a7 ff35 2dc0
> 00000d0: 0078 3a06 a700 262d c000 7a3a 072a b400
> 00000e0: 0abb 0056 59bb 007c 59b7 007e 1276 b700
> 00000f0: 5fb9 0062 0200 57a7 ff09 a7ff 064e bb00
> 0000100: 7159 2db6 0081 2db7 0073 bf
> Exception Handler Table:
> bci [16, 25] => handler: 28
> bci [66, 69] => handler: 253
> Stackmap Table:
> same_frame(@0)
> same_frame(@16)
> same_locals_1_stack_item_frame(@28,Object[#68])
> same_frame(@42)
> same_frame(@106)
> append_frame(@122,Object[#159],Integer)
> same_frame(@156)
> same_frame(@166)
> append_frame(@206,Object[#80])
> same_frame(@215)
> chop_frame(@250,3)
> same_locals_1_stack_item_frame(@253,Object[#127])
>
> at org.arcane418.Main.main(Main.java:10)
>
> ```
> I have prepared a draft to reproduce it: `https://github.com/Arcane561/
> compiler-error` <https://github.com/Arcane561/compiler-error`>
>
> Application Entry point Main.java.
>
> Please pay attention to the statusScan method in StatusService. If you
> remove the record pattern and replace it with the type pattern
> (instanceof Status.InternalError err) then no error occurs. Also, if you
> remove the switch, the error disappears.
>
> openjdk 25.0.1 2025-09-16
> OpenJDK Runtime Environment (build 25.0.1)
> OpenJDK 64-Bit Server VM (build 25.0.1, mixed mode, sharing)
More information about the jdk-dev
mailing list