AtomMaterialUI / a-file-icon-idea

Atom Material Icons for JetBrains - Replace File and UI Icons for better visual grepping.
http://www.material-theme.com/docs/configuration/icons-settings/#atom-material-icons-plugin
MIT License
220 stars 27 forks source link

Plugin appears to corrupt Rider UI #310

Closed cove closed 1 year ago

cove commented 2 years ago

Describe the bug Symptoms seem to be general screen updates are broken: clip and paste gets fragmented when dragging, minimizing navigator window doesn't work, drop down menus sometimes aren't drawn until your cursor is over the menu option, switching tabs to a new file doesn't work, memory usage can get really high.

This just started happening on 9/6/22 for me, not sure what changed. Cleared caches, reinstalled etc. Disabled all other plugins and just when I enable this plugin it happens.

To Reproduce

  1. Open a C# project
  2. Typically it shows up on incomplete stub code (i.e. doesn't compile yet), and dragging the clipping region around, or opening closing the nav window while viewing the file.

Expected Behavior

Doesn't corrupt UI.

Environment JetBrains Rider 2022.2.2 Build #RD-222.3962.23, built on August 20, 2022 Runtime version: 17.0.4+7-b469.44 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10 10.0 .NET 6.0.6 GC: G1 Young Generation, G1 Old Generation Memory: 8192M Cores: 16 Registry: ide.balloon.shadow.size=0 ide.new.project.model.index.case.sensitivity=true indexing.enable.entity.provider.based.indexing=false rdclient.asyncActions=false

Non-Bundled Plugins: io.github.stefansjs.flatbuffersplugin (0.3+21) github.cweijan.test-theme (1.6)

Screenshots

rider64_vKc5hQ5C58

welcome[bot] commented 2 years ago

Thanks for opening your first issue here! Be sure to follow the issue template!

mallowigi commented 2 years ago

Did it happen for a specific version? What version do you have? Was it working fine with a precedent version?

cove commented 2 years ago

I have version 72.0.0 installed currently, I've never seen this behavior before it has always worked fine.

After repeated enabling and disabling of the plugin and seeing the behavior corresponding to it being enabled or disabled, I'm now no longer able to reproduce it. hum.

mallowigi commented 2 years ago

Could it be related to the other plugins?

io.github.stefansjs.flatbuffersplugin (0.3+21) github.cweijan.test-theme (1.6)

cove commented 2 years ago

In the screenshot I had all "Downloaded plugins" disabled, except for this one. I think when I pasted the version info those were enabled at the time. I did test with io.github.stefansjs.flatbuffersplugin enabled and disabled and it didn't happen either. I'm confused as to how such a catastrophic UI issue could come and then vanish now. :)

mallowigi commented 2 years ago

There are two reasons I can think of that can be related to your issue:

Also, are you using specific features that can help me pinpoint the issue? Custom Associations? Custom Line Height or Bigger Icons? Custom Colors?

cove commented 2 years ago

Right before it started happening, Rider started using up a huge amount of memory and CPU cycles after simply clicking into a window with stub code. After killing rider and restarting it then this started happening, so I cleared all it's configs and reinstalled it from the ToolsBox (I'm not sure if that cleared out everything but I'd assume so).

Also, are you using specific features that can help me pinpoint the issue?

No custom features afaik

Custom Associations?

Not that I'm aware of.

Custom Line Height or Bigger Icons?

My line wrap is set to 200. Haven't changed the icon sizes.

Custom Colors?

Not that I'm aware of.

I think I found a relevant exception around the time Rider did going into a resource spiral:

2022-09-06 11:22:45,416 [  53382] SEVERE - #c.i.u.s.SvgCacheManager - JetBrains Rider 2022.2.2  Build #RD-222.3962.23
2022-09-06 11:22:45,416 [  53382] SEVERE - #c.i.u.s.SvgCacheManager - JDK: 17.0.4; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2022-09-06 11:22:45,416 [  53382] SEVERE - #c.i.u.s.SvgCacheManager - OS: Windows 10
2022-09-06 11:22:45,417 [  53383] SEVERE - #c.i.u.s.SvgCacheManager - Cannot remove invalid entry
org.jetbrains.mvstore.MVStoreException: Map icons@1.5(id=5) is closed
    at org.jetbrains.mvstore.MVMap.beforeWrite(MVMap.java:839)
    at org.jetbrains.mvstore.MVMap.operate(MVMap.java:1571)
    at org.jetbrains.mvstore.MVMap.remove(MVMap.java:453)
    at com.intellij.ui.svg.SvgCacheManager.loadFromCache(SvgCacheManager.kt:114)
    at com.intellij.util.SVGLoader.loadFromClassResource(SVGLoader.kt:117)
    at com.intellij.util.ImageLoader.loadByDescriptorWithoutCache(ImageLoader.java:264)
    at com.intellij.util.ImageLoader.loadByDescriptor(ImageLoader.java:223)
    at com.intellij.util.ImageLoader.loadImage(ImageLoader.java:154)
    at com.intellij.openapi.ui.ImageDataByPathLoader.loadImage(ImageDataByPathLoader.kt:89)
    at com.intellij.openapi.util.IconLoader$CachedImageIcon.loadImage(IconLoader.java:979)
    at com.intellij.openapi.util.IconLoader$ScaledIconCache.getOrScaleIcon(IconLoader.java:1048)
    at com.intellij.openapi.util.IconLoader$CachedImageIcon.getRealIcon(IconLoader.java:866)
    at com.intellij.openapi.util.IconLoader$CachedImageIcon.getIconWidth(IconLoader.java:794)
    at com.intellij.codeInsight.hints.presentation.ScaledIconPresentation.getWidth(ScaledIconPresentation.kt:32)
    at com.intellij.codeInsight.hints.presentation.InsetPresentation.getWidth(InsetPresentation.kt:23)
    at com.intellij.codeInsight.hints.presentation.StaticDelegatePresentation.getWidth(StaticDelegatePresentation.kt:15)
    at com.intellij.codeInsight.hints.presentation.InsetPresentation.getWidth(InsetPresentation.kt:23)
    at com.intellij.codeInsight.hints.presentation.StaticDelegatePresentation.getWidth(StaticDelegatePresentation.kt:15)
    at com.intellij.codeInsight.hints.presentation.StaticDelegatePresentation.getWidth(StaticDelegatePresentation.kt:15)
    at com.intellij.codeInsight.hints.presentation.DynamicInsetPresentation.getWidth(DynamicInsetPresentation.kt:27)
    at com.intellij.codeInsight.hints.presentation.StaticDelegatePresentation.getWidth(StaticDelegatePresentation.kt:15)
    at com.intellij.codeInsight.hints.presentation.StaticDelegatePresentation.getWidth(StaticDelegatePresentation.kt:15)
    at com.intellij.codeInsight.hints.presentation.RecursivelyUpdatingRootPresentation.getWidth(RecursivelyUpdatingRootPresentation.kt:56)
    at com.intellij.codeInsight.hints.LinearOrderInlayRenderer$calcWidthInPixels$1.compute(LinearOrderInlayRenderer.kt:99)
    at com.intellij.codeInsight.hints.LinearOrderInlayRenderer$calcWidthInPixels$1.compute(LinearOrderInlayRenderer.kt:23)
    at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:143)
    at com.intellij.codeInsight.hints.LinearOrderInlayRenderer.calcWidthInPixels(LinearOrderInlayRenderer.kt:98)
    at com.intellij.openapi.editor.impl.InlineInlayImpl.doUpdate(InlineInlayImpl.java:71)
    at com.intellij.openapi.editor.impl.InlayImpl.<init>(InlayImpl.java:35)
    at com.intellij.openapi.editor.impl.InlineInlayImpl.<init>(InlineInlayImpl.java:26)
    at com.intellij.openapi.editor.impl.InlayModelImpl.addInlineElement(InlayModelImpl.java:149)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter.M(FrontendInlayModelAdapter.kt:62)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter.v(FrontendInlayModelAdapter.kt:51)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter.access$addInlay(FrontendInlayModelAdapter.kt:31)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter$afterBulkAdd$1.invoke(FrontendInlayModelAdapter.kt:112)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter$afterBulkAdd$1.invoke(FrontendInlayModelAdapter.kt:31)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter$sam$java_lang_Runnable$0.run(FrontendInlayModelAdapter.kt)
    at com.intellij.openapi.editor.impl.InlayModelImpl.execute(InlayModelImpl.java:510)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter.M(FrontendInlayModelAdapter.kt:222)
    at com.jetbrains.rdclient.daemon.highlighters.inlays.FrontendInlayModelAdapter.afterBulkAdd(FrontendInlayModelAdapter.kt:110)
    at com.jetbrains.rdclient.daemon.FrontendMarkupAdapterImpl.bulkAddHighlighters(FrontendMarkupAdapterImpl.kt:88)
    at com.jetbrains.rdclient.daemon.FrontendMarkupContributor$flushHighlighters$1.invoke(FrontendMarkupContributor.kt:69)
    at com.jetbrains.rdclient.daemon.FrontendMarkupContributor$flushHighlighters$1.invoke(FrontendMarkupContributor.kt:15)
    at com.jetbrains.rdclient.daemon.FrontendMarkupContributor.M(FrontendMarkupContributor.kt:180)
    at com.jetbrains.rdclient.daemon.FrontendMarkupContributor.flushHighlighters(FrontendMarkupContributor.kt:29)
    at com.jetbrains.rdclient.daemon.FrontendMarkupContributorKt$bind$4.invoke(FrontendMarkupContributor.kt:201)
    at com.jetbrains.rdclient.daemon.FrontendMarkupContributorKt$bind$4.invoke(FrontendMarkupContributor.kt)
    at com.jetbrains.rd.util.reactive.BoolPropertyExKt$whenFalse$1.invoke(BoolPropertyEx.kt:19)
    at com.jetbrains.rd.util.reactive.BoolPropertyExKt$whenFalse$1.invoke(BoolPropertyEx.kt)
    at com.jetbrains.rd.util.reactive.IPropertyBase$view$$inlined$let$lambda$1.invoke(Interfaces.kt:78)
    at com.jetbrains.rd.util.reactive.IPropertyBase$view$$inlined$let$lambda$1.invoke(Interfaces.kt:62)
    at com.jetbrains.rd.util.reactive.CompositePropertyView$change$1$advise$1.invoke(PropertyCombinators.kt:26)
    at com.jetbrains.rd.util.reactive.CompositePropertyView$change$1$advise$2.invoke(PropertyCombinators.kt:29)
    at com.jetbrains.rd.util.reactive.CompositePropertyView$change$1$advise$2.invoke(PropertyCombinators.kt:18)
    at com.jetbrains.rd.util.reactive.PropertyCombinatorsKt$map$1$change$1$advise$1.invoke(PropertyCombinators.kt:162)
    at com.jetbrains.rd.util.reactive.PropertyCombinatorsKt$map$1$change$1$advise$1.invoke(PropertyCombinators.kt:155)
    at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:32)
    at com.jetbrains.rd.util.reactive.Property.setValue(Property.kt:20)
    at com.jetbrains.rd.util.reactive.Property.set(Property.kt:13)
    at com.jetbrains.rd.util.reactive.ViewableExKt$createIsEmpty$1.invoke(ViewableEx.kt:8)
    at com.jetbrains.rd.util.reactive.ViewableExKt$createIsEmpty$1.invoke(ViewableEx.kt)
    at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:32)
    at com.jetbrains.rd.util.reactive.ViewableSet.remove(ViewableSet.kt:43)
    at com.jetbrains.rd.util.CollectionExKt$addUnique$1$1.invoke(CollectionEx.kt:10)
    at com.jetbrains.rd.util.CollectionExKt$addUnique$1$1.invoke(CollectionEx.kt)
    at com.jetbrains.rd.util.lifetime.LifetimeDefinition.destruct(RLifetime.kt:427)
    at com.jetbrains.rd.util.lifetime.LifetimeDefinition.terminate(RLifetime.kt:408)
    at com.jetbrains.rd.util.lifetime.LifetimeDefinition.destruct(RLifetime.kt:431)
    at com.jetbrains.rd.util.lifetime.LifetimeDefinition.terminate(RLifetime.kt:408)
    at com.jetbrains.rd.util.lifetime.SequentialLifetimes.setCurrentLifetime(SequentialLifetimes.kt:51)
    at com.jetbrains.rd.util.lifetime.SequentialLifetimes.setCurrentLifetime$default(SequentialLifetimes.kt:43)
    at com.jetbrains.rd.util.lifetime.SequentialLifetimes.next(SequentialLifetimes.kt:16)
    at com.jetbrains.rd.util.reactive.IPropertyBase$view$$inlined$let$lambda$1.invoke(Interfaces.kt:78)
    at com.jetbrains.rd.util.reactive.IPropertyBase$view$$inlined$let$lambda$1.invoke(Interfaces.kt:62)
    at com.jetbrains.rd.util.reactive.CompositeOptPropertyView$change$1$advise$1.invoke(PropertyCombinators.kt:56)
    at com.jetbrains.rd.util.reactive.CompositeOptPropertyView$change$1$advise$2.invoke(PropertyCombinators.kt:61)
    at com.jetbrains.rd.util.reactive.CompositeOptPropertyView$change$1$advise$2.invoke(PropertyCombinators.kt:49)
    at com.jetbrains.rd.util.reactive.PropertyCombinatorsKt$map$2$change$1$advise$1.invoke(PropertyCombinators.kt:185)
    at com.jetbrains.rd.util.reactive.PropertyCombinatorsKt$map$2$change$1$advise$1.invoke(PropertyCombinators.kt:178)
    at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:32)
    at com.jetbrains.rd.util.reactive.OptProperty.set(Property.kt:40)
    at com.jetbrains.rd.framework.impl.RdPropertyBase.onWireReceived(RdProperty.kt:76)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:12)
    at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12)
    at com.jetbrains.rdclient.protocol.RdDispatcher.flushAll(RdDispatcher.kt:97)
    at com.jetbrains.rdclient.protocol.RdDispatcher.access$flushAll(RdDispatcher.kt:18)
    at com.jetbrains.rdclient.protocol.RdDispatcher$flushAllRunnable$1.run(RdDispatcher.kt:23)
    at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
    at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
    at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881)
    at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:513)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:75)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:118)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:42)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:918)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:766)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:450)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:791)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:449)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:624)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:447)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:493)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: org.jetbrains.mvstore.MVStoreException: java.lang.AssertionError
    at org.jetbrains.mvstore.MVStore.serializeAndStore(MVStore.java:1610)
    at org.jetbrains.mvstore.MVStore.lambda$storeNow$5(MVStore.java:1534)
    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:833)
Caused by: java.lang.AssertionError
    at org.jetbrains.mvstore.MVStore.createChunk(MVStore.java:1629)
    at org.jetbrains.mvstore.MVStore.serializeAndStore(MVStore.java:1595)
    ... 4 more
mallowigi commented 2 years ago

I know of this error, it happens to me every now and then, I need to figure out if there is a way to fix this. It seems like icons fail to be cached and create this error. But it didn't break the UI like in your screenvid.

cove commented 2 years ago

Ah cool, yeah looks like my logs seem to be full of these exceptions.

mallowigi commented 2 years ago

Any updates ?

cove commented 2 years ago

Oh sorry, I don't know what else to check. It no longer happens, unless you have some ideas?

mallowigi commented 2 years ago

As I said previously, the aforementioned error might occur but so far I haven't seen it doing what you displayed in the gif. Unfortunately I have no idea how to reproduce such a use case.

cove commented 2 years ago

Yeah likewise no clue either, should we close this issue in the mean time?

mallowigi commented 2 years ago

Leave this open. If it happens again, send me the logs here. If it doesn't after a few weeks, I'll close it.