Description
There are random crashes from Resolver when users class contains Generics. It happens because TypeResolver::findAnyConcreteInheritorIncludingOrDefaultUnsafe can return non user's class type, for example, any class from soot.
To Reproduce
It's impossible to reproduce always because there are some hacks to reduce number of situations like that. I detect it while testing on IDEA plugin class StandardMutableValueGraphTest from guava.
Expected behavior
TypeResolver returns only classes that are available to user.
Actual behavior
TypeResolver::findAnyConcreteInheritorIncludingOrDefaultUnsafe can return non user's class type.
Visual proofs (screenshots, logs, images)
java.lang.ClassNotFoundException: soot.IntType
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at org.utbot.engine.Resolver.constructModel(Resolver.kt:513)
at org.utbot.engine.Resolver.resolveObject(Resolver.kt:465)
at org.utbot.engine.Resolver.resolveReferenceValue(Resolver.kt:424)
at org.utbot.engine.Resolver.resolveModel(Resolver.kt:395)
at org.utbot.engine.Resolver.collectMockBehaviour(Resolver.kt:601)
at org.utbot.engine.Resolver.resolveMock(Resolver.kt:341)
at org.utbot.engine.Resolver.resolveReferenceValue(Resolver.kt:416)
at org.utbot.engine.Resolver.resolveModel(Resolver.kt:395)
at org.utbot.engine.Resolver.internalResolveModel(Resolver.kt:233)
at org.utbot.engine.Resolver.resolveModels$utbot_framework(Resolver.kt:204)
at org.utbot.engine.UtBotSymbolicEngine$traverseImpl$1.invokeSuspend(UtBotSymbolicEngine.kt:471)
Description
There are random crashes from Resolver when users class contains Generics. It happens because TypeResolver::findAnyConcreteInheritorIncludingOrDefaultUnsafe can return non user's class type, for example, any class from soot.
To Reproduce
It's impossible to reproduce always because there are some hacks to reduce number of situations like that. I detect it while testing on IDEA plugin class StandardMutableValueGraphTest from guava.
Expected behavior
TypeResolver returns only classes that are available to user.
Actual behavior
TypeResolver::findAnyConcreteInheritorIncludingOrDefaultUnsafe can return non user's class type.
Visual proofs (screenshots, logs, images)