Skip to content

Assertion error in query lists where "disable model checking" is false #1351

@kbirken

Description

@kbirken

Query lists editor cells can be configured to execute model checking (by setting disable model checking to false). This is the default and there are many use cases of query lists, e.g. in mbeddr.doc embed model content as image elements.

The optimization done with PR #916 introduced a problem in this context: Due to the commented line in class ComputationModePreservingNonTypesystemChecker (which is basically a copy of NonTypesystemChecker.getErrors() except this one line) an assertion fails in MPS typesystem code (assertion dump see end of this description, recorded with MPS 2024.1).

Here are my code changes to find this ComputationModePreservingNonTypesystemChecker.

Image

In the current code, the Throwable for the assertion is not catched and thus bubbles out of this method. It is shown in the querylist node as an unspecific message java.lang.AssertionError. See the foillowing example of this in com.mbeddr.doc (node URL).

Image

I don't know the actual reason for PR #916, but it seems this should be either reverted or solved in a different way.

java.lang.AssertionError
	at jetbrains.mps.newTypesystem.context.component.NonTypeSystemComponent.applyNonTypesystemRulesToNode(NonTypeSystemComponent.java:327)
	at jetbrains.mps.newTypesystem.context.component.NonTypeSystemComponent.applyRulesToRoot(NonTypeSystemComponent.java:316)
	at jetbrains.mps.newTypesystem.context.component.NonTypeSystemComponent.lambda$applyNonTypeSystemRulesToRoot$1(NonTypeSystemComponent.java:301)
	at jetbrains.mps.languageScope.LanguageScope.compute(LanguageScope.java:69)
	at jetbrains.mps.languageScope.LanguageScopeExecutor.execWithModelScope(LanguageScopeExecutor.java:74)
	at jetbrains.mps.newTypesystem.context.component.NonTypeSystemComponent.applyNonTypeSystemRulesToRoot(NonTypeSystemComponent.java:301)
	at jetbrains.mps.newTypesystem.context.typechecking.IncrementalTypechecking.applyNonTypesystemRulesToRoot(IncrementalTypechecking.java:227)
	at jetbrains.mps.newTypesystem.context.typechecking.BaseTypechecking.applyNonTypesystemRulesToRoot(BaseTypechecking.java:142)
	at jetbrains.mps.newTypesystem.context.typechecking.BaseTypechecking.applyNonTypesystemRulesToRoot(BaseTypechecking.java:135)
	at c.m.m.e.querylist.runtime//com.mbeddr.mpsutil.editor.querylist.runtime.plugin.ComputationModePreservingNonTypesystemChecker.lambda$getErrors$1(ComputationModePreservingNonTypesystemChecker.java:55)
	at jetbrains.mps.typechecking.backend.TypecheckingSessionHandler.computeIsolated(TypecheckingSessionHandler.java:102)
	at c.m.m.e.querylist.runtime//com.mbeddr.mpsutil.editor.querylist.runtime.plugin.ComputationModePreservingNonTypesystemChecker.getErrors(ComputationModePreservingNonTypesystemChecker.java:30)
	at jetbrains.mps.typesystemEngine.checker.NonTypesystemChecker.check(NonTypesystemChecker.java:73)
	at jetbrains.mps.typesystemEngine.checker.NonTypesystemChecker.check(NonTypesystemChecker.java:28)
	at jetbrains.mps.checkers.IChecker$AbstractRootChecker$1.check(IChecker.java:153)
	at jetbrains.mps.checkers.IChecker$AbstractRootChecker$1.check(IChecker.java:136)
	at jetbrains.mps.checkers.IteratingChecker.check(IteratingChecker.java:92)
	at jetbrains.mps.checkers.IChecker$AbstractRootChecker$2.check(IChecker.java:182)
	at jetbrains.mps.checkers.IChecker$AbstractRootChecker$2.check(IChecker.java:168)
	at jetbrains.mps.checkers.AggregatingChecker$2.lambda$run$0(AggregatingChecker.java:73)
	at jetbrains.mps.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:91)
	at jetbrains.mps.smodel.ModelAccessBase.runReadAction(ModelAccessBase.java:66)
	at jetbrains.mps.smodel.ModelAccessHelper.runReadAction(ModelAccessHelper.java:49)
	at jetbrains.mps.checkers.AggregatingChecker$2.run(AggregatingChecker.java:72)
	at jetbrains.mps.progress.DefaultTaskScheduler$DirectExecutor.execute(DefaultTaskScheduler.java:74)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$execute$2(DefaultTaskScheduler.java:51)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleTask$0(DefaultTaskScheduler.java:27)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleAllSequential$1(DefaultTaskScheduler.java:35)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.progress.DefaultTaskScheduler.runAndWait(DefaultTaskScheduler.java:59)
	at jetbrains.mps.progress.DefaultTaskScheduler.lambda$scheduleTask$0(DefaultTaskScheduler.java:27)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at jetbrains.mps.checkers.ModelCheckerBuilder$1.check(ModelCheckerBuilder.java:151)
	at jetbrains.mps.checkers.ModelCheckerBuilder$1.check(ModelCheckerBuilder.java:144)
	at c.m.m.e.querylist.runtime//com.mbeddr.mpsutil.editor.querylist.runtime.plugin.QueryListChecker.checkForNodeMessages(QueryListChecker.java:143)
	at c.m.m.e.querylist.runtime//com.mbeddr.mpsutil.editor.querylist.runtime.plugin.QueryListChecker.checkModels(QueryListChecker.java:124)
	at c.m.m.e.querylist.runtime//com.mbeddr.mpsutil.editor.querylist.runtime.plugin.QueryListChecker.update(QueryListChecker.java:79)
	at jetbrains.mps.nodeEditor.checking.EditorChecker.update(EditorChecker.java:70)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession$HighlighterReadAction.perform(HighlighterUpdateSession.java:317)
	at jetbrains.mps.nodeEditor.highlighter.EditorCheckerWrapper.withChecker(EditorCheckerWrapper.java:69)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession$HighlighterReadAction.execute(HighlighterUpdateSession.java:311)
	at jetbrains.mps.smodel.CancellableReadAction.run(CancellableReadAction.java:86)
	at jetbrains.mps.smodel.ActionDispatcher.dispatch(ActionDispatcher.java:98)
	at jetbrains.mps.smodel.ActionDispatcher.lambda$wrap$0(ActionDispatcher.java:135)
	at jetbrains.mps.smodel.LockRunnable.run(LockRunnable.java:60)
	at jetbrains.mps.smodel.PlatformCancelBlock.run(PlatformCancelBlock.java:22)
	at com.intellij.openapi.application.impl.RwLockHolder.runReadAction(RwLockHolder.kt:254)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:840)
	at jetbrains.mps.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:95)
	at jetbrains.mps.smodel.ModelAccessBase.runReadAction(ModelAccessBase.java:66)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession.updateEditor(HighlighterUpdateSession.java:218)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession.updateEditorComponent(HighlighterUpdateSession.java:185)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession.lambda$doUpdate$0(HighlighterUpdateSession.java:100)
	at jetbrains.mps.typechecking.backend.TypecheckingSessionHandler.runWithSession(TypecheckingSessionHandler.java:76)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession.doUpdate(HighlighterUpdateSession.java:98)
	at jetbrains.mps.nodeEditor.highlighter.HighlighterUpdateSession.update(HighlighterUpdateSession.java:257)
	at jetbrains.mps.nodeEditor.Highlighter$ScheduleHighlighterUpdate.update(Highlighter.java:490)
	at jetbrains.mps.nodeEditor.Highlighter$ScheduleHighlighterUpdate.lambda$run$0(Highlighter.java:471)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions