-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
When implementing Loggable on a class, if that class also has a list of references to loggables in a cycle, such as static references to itself, the recursion does not terminate until a stack overflow causes a crash. Example output from crash:
Error at java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1375): Unhandled exception: java.lang.StackOverflowError
at java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1375)
at java.base/java.lang.StringConcatHelper.newArray(StringConcatHelper.java:494)
at java.base/java.lang.StringConcatHelper.newArrayWithSuffix(StringConcatHelper.java:475)
at edu.wpi.first.util.ErrorMessages.requireNonNullParam(ErrorMessages.java:27)
at edu.wpi.first.wpilibj.shuffleboard.ShuffleboardLayout.<init>(ShuffleboardLayout.java:24)
at edu.wpi.first.wpilibj.shuffleboard.ContainerHelper.getLayout(ContainerHelper.java:45)
at edu.wpi.first.wpilibj.shuffleboard.ShuffleboardLayout.getLayout(ShuffleboardLayout.java:34)
at edu.wpi.first.wpilibj.shuffleboard.ShuffleboardContainer.getLayout(ShuffleboardContainer.java:49)
at io.github.oblarg.oblog.WrappedShuffleboardLayout.getLayout(WrappedShuffleboardLayout.java:21)
at io.github.oblarg.oblog.Logger.logLoggable(Logger.java:1342)
at io.github.oblarg.oblog.Logger.lambda$logLoggable$68(Logger.java:1396)
at io.github.oblarg.oblog.Logger.logLoggable(Logger.java:1461)
at io.github.oblarg.oblog.Logger.lambda$logLoggable$68(Logger.java:1396)
at io.github.oblarg.oblog.Logger.logLoggable(Logger.java:1461)
at io.github.oblarg.oblog.Logger.lambda$logLoggable$68(Logger.java:1396)
at io.github.oblarg.oblog.Logger.logLoggable(Logger.java:1461)
at io.github.oblarg.oblog.Logger.lambda$logLoggable$68(Logger.java:1396)
at io.github.oblarg.oblog.Logger.logLoggable(Logger.java:1461)
at io.github.oblarg.oblog.Logger.lambda$logLoggable$68(Logger.java:1396)
...truncated...For example
public class MyClass implements Loggable {
private List<MyClass> references;
private static List <MyClass> staticReferences
}This is the specific class that fails once brought to 2023 and add Loggable
Metadata
Metadata
Assignees
Labels
No labels