Arend icon indicating copy to clipboard operation
Arend copied to clipboard

NPE in Arend serialization

Open knisht opened this issue 4 years ago • 3 comments

Content=java.lang.NullPointerException
    at org.arend.module.serialization.ExpressionSerialization.writeBindingRef(ExpressionSerialization.java:63)
    at org.arend.module.serialization.ExpressionSerialization.visitReference(ExpressionSerialization.java:351)
    at org.arend.module.serialization.ExpressionSerialization.visitReference(ExpressionSerialization.java:31)
    at org.arend.core.expr.ReferenceExpression.accept(ReferenceExpression.java:34)
    at org.arend.module.serialization.ExpressionSerialization.visitApp(ExpressionSerialization.java:269)
    at org.arend.module.serialization.ExpressionSerialization.visitApp(ExpressionSerialization.java:31)
    at org.arend.core.expr.AppExpression.accept(AppExpression.java:72)
    at org.arend.module.serialization.ExpressionSerialization.visitApp(ExpressionSerialization.java:268)
    at org.arend.module.serialization.ExpressionSerialization.visitApp(ExpressionSerialization.java:31)
    at org.arend.core.expr.AppExpression.accept(AppExpression.java:72)
    at org.arend.module.serialization.ExpressionSerialization.writeExpr(ExpressionSerialization.java:161)
    at org.arend.module.serialization.ExpressionSerialization.writeType(ExpressionSerialization.java:51)
    at org.arend.module.serialization.ExpressionSerialization.writeParameter(ExpressionSerialization.java:134)
    at org.arend.module.serialization.ExpressionSerialization.writePattern(ExpressionSerialization.java:168)
    at org.arend.module.serialization.ExpressionSerialization.writeElimClause(ExpressionSerialization.java:194)
    at org.arend.module.serialization.ExpressionSerialization.writeElimBody(ExpressionSerialization.java:259)
    at org.arend.module.serialization.ExpressionSerialization.visitCase(ExpressionSerialization.java:499)
    at org.arend.module.serialization.ExpressionSerialization.visitCase(ExpressionSerialization.java:31)
    at org.arend.core.expr.CaseExpression.accept(CaseExpression.java:80)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:370)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:31)
    at org.arend.core.expr.LamExpression.accept(LamExpression.java:46)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:370)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:31)
    at org.arend.core.expr.LamExpression.accept(LamExpression.java:46)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:370)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:31)
    at org.arend.core.expr.LamExpression.accept(LamExpression.java:46)
    at org.arend.module.serialization.ExpressionSerialization.writeExpr(ExpressionSerialization.java:161)
    at org.arend.module.serialization.ExpressionSerialization.writeClassCall(ExpressionSerialization.java:324)
    at org.arend.module.serialization.ExpressionSerialization.visitNew(ExpressionSerialization.java:442)
    at org.arend.module.serialization.ExpressionSerialization.visitNew(ExpressionSerialization.java:31)
    at org.arend.core.expr.NewExpression.accept(NewExpression.java:72)
    at org.arend.module.serialization.ExpressionSerialization.writeExpr(ExpressionSerialization.java:161)
    at org.arend.module.serialization.ExpressionSerialization.writeClassCall(ExpressionSerialization.java:324)
    at org.arend.module.serialization.ExpressionSerialization.visitNew(ExpressionSerialization.java:442)
    at org.arend.module.serialization.ExpressionSerialization.visitNew(ExpressionSerialization.java:31)
    at org.arend.core.expr.NewExpression.accept(NewExpression.java:72)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:370)
    at org.arend.module.serialization.ExpressionSerialization.visitLam(ExpressionSerialization.java:31)
    at org.arend.core.expr.LamExpression.accept(LamExpression.java:46)
    at org.arend.module.serialization.ExpressionSerialization.writeExpr(ExpressionSerialization.java:161)
    at org.arend.module.serialization.ExpressionSerialization.writeClassCall(ExpressionSerialization.java:324)
    at org.arend.module.serialization.ExpressionSerialization.visitClassCall(ExpressionSerialization.java:345)
    at org.arend.module.serialization.ExpressionSerialization.visitClassCall(ExpressionSerialization.java:31)
    at org.arend.core.expr.ClassCallExpression.accept(ClassCallExpression.java:318)
    at org.arend.module.serialization.ExpressionSerialization.writeExpr(ExpressionSerialization.java:161)
    at org.arend.module.serialization.DefinitionSerialization.writeFunctionDefinition(DefinitionSerialization.java:282)
    at org.arend.module.serialization.DefinitionSerialization.writeDefinition(DefinitionSerialization.java:50)
    at org.arend.module.serialization.ModuleSerialization.writeGroup(ModuleSerialization.java:90)
    at org.arend.module.serialization.ModuleSerialization.writeGroup(ModuleSerialization.java:102)
    at org.arend.module.serialization.ModuleSerialization.writeModule(ModuleSerialization.java:38)
    at org.arend.source.StreamBinarySource.persist(StreamBinarySource.java:168)
    at org.arend.library.SourceLibrary.persistModule(SourceLibrary.java:355)
    at org.arend.typechecking.BinaryFileSaver$saveFile$$inlined$runReadAction$1.compute(actions.kt:79)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:880)
    at org.arend.typechecking.BinaryFileSaver.saveFile(BinaryFileSaver.kt:75)
    at org.arend.typechecking.BinaryFileSaver.saveAll(BinaryFileSaver.kt:69)
    at org.arend.typechecking.BinaryFileSaver$2.projectClosing(BinaryFileSaver.kt:43)
    at com.intellij.openapi.project.impl.ProjectManagerImpl$1.projectClosing(ProjectManagerImpl.java:128)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:541)
    at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:139)
    at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:465)
    at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:426)
    at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:415)
    at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:397)
    at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:237)
    at com.sun.proxy.$Proxy64.projectClosing(Unknown Source)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectClosing(ProjectManagerImpl.java:726)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.closeProject(ProjectManagerImpl.java:680)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.closeAndDisposeAllProjects(ProjectManagerImpl.java:611)
    at com.intellij.openapi.application.impl.ApplicationImpl.disposeSelf(ApplicationImpl.java:190)
    at com.intellij.openapi.application.impl.ApplicationImpl.doExit(ApplicationImpl.java:621)
    at com.intellij.openapi.application.impl.ApplicationImpl.exit(ApplicationImpl.java:589)
    at com.intellij.openapi.application.impl.ApplicationImpl.exit(ApplicationImpl.java:578)
    at com.intellij.openapi.application.ex.ApplicationEx.exit(ApplicationEx.java:85)
    at com.intellij.openapi.wm.impl.CloseProjectWindowHelper.quitApp(CloseProjectWindowHelper.kt:57)
    at com.intellij.openapi.wm.impl.CloseProjectWindowHelper.windowClosing(CloseProjectWindowHelper.kt:35)
    at com.intellij.openapi.wm.impl.ProjectFrameHelper$2.windowClosing(ProjectFrameHelper.java:231)
    at java.desktop/java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:357)
    at java.desktop/java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:357)
    at java.desktop/java.awt.Window.processWindowEvent(Window.java:2079)
    at java.desktop/javax.swing.JFrame.processWindowEvent(JFrame.java:298)
    at java.desktop/java.awt.Window.processEvent(Window.java:2038)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:847)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:741)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 

Arend was built at ab80bda4d59cff4b2a41cef37c5243784630cef5

knisht avatar Jul 19 '20 01:07 knisht

I hope we can use intellij's code instrumentation to get better error messages....

ice1000 avatar Jul 19 '20 07:07 ice1000

You could make exceptions be more noticeable. Errors in other IDEA plugins are shown in red popup window, but these exceptions were discovered when I was inspecting my idea.log.

Ok, here's a full line with error message, but I am not sure if it clarifies anything. 2020-07-19 00:02:32,126 [76871775] INFO - tion.impl.ui.NotificationsUtil - Too large notification Notification{id='1595106152123.1094531128', myGroupId='Arend Error Messages', myType=ERROR, myTitle='[ERROR] An exception happened during persisting of module: Category.Limits.Product', mySubtitle='null', myContent='java.lang.NullPointerException

knisht avatar Jul 19 '20 10:07 knisht

It's hard to tell what's causing this problem, but a few days ago I found and fixed a bug related to patterns. I think it might cause this exception, but I cannot tell for sure.

valis avatar Jul 22 '20 23:07 valis