Skip to content

Stack Overflow with invokedynamic.yield turned on #6260

@pcarlisle

Description

@pcarlisle

Since upgrading to 9.2.11.1 we have started to get occasional stack overflow exceptions. I think at this point that turning off invokedynamic.yield has fixed it for us.

Initially the stack traces looked unremarkable and certainly not like they should overflow the stack (as in #6124 ), but if I run java with -XX:+UnlockDiagnosticVMOptions and -XX:+ShowHiddenFrames I get this: https://gist.github.com/pcarlisle/93f0aebcb90335fd38dbe071d22e22a0

It's cut off by the default stack limit of 1024 but is almost entirely just these two lines repeating:

at java.base/java.lang.invoke.DelegatingMethodHandle$Holder.delegate(DelegatingMethodHandle$Holder)
at java.base/java.lang.invoke.LambdaForm$MH/0x00000008418fd040.guard(LambdaForm$MH)

A heap dump taken shortly after one of these exceptions also shows hundreds of megabytes retained in a single YieldSite instance.

It takes some hours or even a couple days for these to occur and we no longer have it running this way in production where it was happening but I can try to track down any more information you might need.

(our own tracking is at https://tickets.puppetlabs.com/browse/SERVER-2793 and is public)

Environment Information

jruby 9.2.11.1
Linux 3.10

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions