icsharpcode / AvaloniaILSpy

Avalonia-based .NET Decompiler (port of ILSpy)
1.5k stars 169 forks source link

Hovering results in crash on Linux #112

Closed sikenbey closed 2 years ago

sikenbey commented 2 years ago

I use a non-systemd distribution and ILSpy crashes when you hover over a name/button (class/method/variable name on Decompiler tab or Open file button). Stack trace attached below.

Sorry, we crashed
System.NullReferenceException: Object reference not set to an instance of an object.
   at Avalonia.X11.X11Window.SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) in /_/src/Avalonia.X11/X11Window.cs:line 1160
   at Avalonia.Controls.TopLevel.<>c.<.cctor>b__16_0(TopLevel tl, AvaloniaPropertyChangedEventArgs e) in /_/src/Avalonia.Controls/TopLevel.cs:line 101
   at Avalonia.AvaloniaObjectExtensions.<>c__DisplayClass23_0`1.<AddClassHandler>b__0(AvaloniaPropertyChangedEventArgs e) in /_/src/Avalonia.Base/AvaloniaObjectExtensions.cs:line 579
   at System.Reactive.AnonymousObserver`1.OnNextCore(T value) in /_/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs:line 67
   at System.Reactive.ObserverBase`1.OnNext(T value) in /_/Rx.NET/Source/src/System.Reactive/ObserverBase.cs:line 34
   at System.Reactive.Subjects.Subject`1.OnNext(T value) in /_/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs:line 145
   at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaPropertyChangedEventArgs`1 change) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 756
   at Avalonia.AvaloniaObject.Avalonia.PropertyStore.IValueSink.ValueChanged[T](AvaloniaPropertyChangedEventArgs`1 change) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 531
   at Avalonia.PropertyStore.ConstantValueEntry`1.RaiseValueChanged(IValueSink sink, IAvaloniaObject owner, AvaloniaProperty property, Optional`1 oldValue, Optional`1 newValue) in /_/src/Avalonia.Base/PropertyStore/ConstantValueEntry.cs:line 75
   at Avalonia.ValueStore.BatchUpdate.End() in /_/src/Avalonia.Base/ValueStore.cs:line 454
   at Avalonia.ValueStore.EndBatchUpdate() in /_/src/Avalonia.Base/ValueStore.cs:line 50
   at Avalonia.AvaloniaObject.EndBatchUpdate() in /_/src/Avalonia.Base/AvaloniaObject.cs:line 475
   at Avalonia.StyledElement.DetachStyles() in /_/src/Avalonia.Styling/StyledElement.cs:line 764
   at Avalonia.StyledElement.OnDetachedFromLogicalTreeCore(LogicalTreeAttachmentEventArgs e) in /_/src/Avalonia.Styling/StyledElement.cs:line 694
   at Avalonia.StyledElement.Avalonia.LogicalTree.ILogical.NotifyDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e) in /_/src/Avalonia.Styling/StyledElement.cs:line 389
   at Avalonia.Controls.TopLevel.HandleClosed() in /_/src/Avalonia.Controls/TopLevel.cs:line 368
   at Avalonia.Controls.WindowBase.HandleClosed() in /_/src/Avalonia.Controls/WindowBase.cs:line 202
   at Avalonia.X11.X11Window.Cleanup() in /_/src/Avalonia.X11/X11Window.cs:line 813
   at Avalonia.X11.X11Window.Dispose() in /_/src/Avalonia.X11/X11Window.cs:line 783
   at Avalonia.Controls.Primitives.PopupRoot.Dispose() in /_/src/Avalonia.Controls/Primitives/PopupRoot.cs:line 77
   at Avalonia.Controls.ToolTip.Close() in /_/src/Avalonia.Controls/ToolTip.cs:line 290
   at Avalonia.Controls.ToolTip.IsOpenChanged(AvaloniaPropertyChangedEventArgs e) in /_/src/Avalonia.Controls/ToolTip.cs:line 237
   at System.Reactive.AnonymousObserver`1.OnNextCore(T value) in /_/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs:line 67
   at System.Reactive.ObserverBase`1.OnNext(T value) in /_/Rx.NET/Source/src/System.Reactive/ObserverBase.cs:line 34
   at System.Reactive.Subjects.Subject`1.OnNext(T value) in /_/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs:line 145
   at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaPropertyChangedEventArgs`1 change) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 756
   at Avalonia.AvaloniaObject.Avalonia.PropertyStore.IValueSink.ValueChanged[T](AvaloniaPropertyChangedEventArgs`1 change) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 531
   at Avalonia.ValueStore.NotifyValueChanged[T](AvaloniaProperty`1 property, Optional`1 oldValue, BindingValue`1 newValue, BindingPriority priority) in /_/src/Avalonia.Base/ValueStore.cs:line 355
   at Avalonia.ValueStore.SetExisting[T](Object slot, StyledPropertyBase`1 property, T value, BindingPriority priority) in /_/src/Avalonia.Base/ValueStore.cs:line 284
   at Avalonia.ValueStore.SetValue[T](StyledPropertyBase`1 property, T value, BindingPriority priority) in /_/src/Avalonia.Base/ValueStore.cs:line 107
   at Avalonia.AvaloniaObject.SetValue[T](StyledPropertyBase`1 property, T value, BindingPriority priority) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 367
   at Avalonia.Controls.ToolTip.SetIsOpen(Control element, Boolean value) in /_/src/Avalonia.Controls/ToolTip.cs:line 121
   at Avalonia.Controls.ToolTipService.Close(Control control) in /_/src/Avalonia.Controls/ToolTipService.cs:line 138
   at Avalonia.Controls.ToolTipService.ControlPointerLeave(Object sender, PointerEventArgs e) in /_/src/Avalonia.Controls/ToolTipService.cs:line 107
   at Avalonia.Interactivity.Interactive.<AddHandler>g__InvokeAdapter|4_0[TEventArgs](Delegate baseHandler, Object sender, RoutedEventArgs args) in /_/src/Avalonia.Interactivity/Interactive.cs:line 62
   at Avalonia.Interactivity.Interactive.<>c__4`1.<AddHandler>b__4_1(Delegate baseHandler, Object sender, RoutedEventArgs args) in /_/src/Avalonia.Interactivity/Interactive.cs:line 68
   at Avalonia.Interactivity.EventRoute.RaiseEventImpl(RoutedEventArgs e) in /_/src/Avalonia.Interactivity/EventRoute.cs:line 152
   at Avalonia.Interactivity.EventRoute.RaiseEvent(IInteractive source, RoutedEventArgs e) in /_/src/Avalonia.Interactivity/EventRoute.cs:line 86
   at Avalonia.Interactivity.Interactive.RaiseEvent(RoutedEventArgs e) in /_/src/Avalonia.Interactivity/Interactive.cs:line 123
   at Avalonia.Input.MouseDevice.SetPointerOver(IPointerDevice device, UInt64 timestamp, IInputRoot root, IInputElement element, PointerPointProperties properties, KeyModifiers inputModifiers) in /_/src/Avalonia.Input/MouseDevice.cs:line 466
   at Avalonia.Input.MouseDevice.SetPointerOver(IPointerDevice device, UInt64 timestamp, IInputRoot root, Point p, PointerPointProperties properties, KeyModifiers inputModifiers) in /_/src/Avalonia.Input/MouseDevice.cs:line 421
   at Avalonia.Input.MouseDevice.MouseMove(IMouseDevice device, UInt64 timestamp, IInputRoot root, Point p, PointerPointProperties properties, KeyModifiers inputModifiers) in /_/src/Avalonia.Input/MouseDevice.cs:line 275
   at Avalonia.Input.MouseDevice.ProcessRawEvent(RawPointerEventArgs e) in /_/src/Avalonia.Input/MouseDevice.cs:line 178
   at Avalonia.Input.MouseDevice.ProcessRawEvent(RawInputEventArgs e) in /_/src/Avalonia.Input/MouseDevice.cs:line 88
   at Avalonia.Input.InputManager.ProcessInput(RawInputEventArgs e) in /_/src/Avalonia.Input/InputManager.cs:line 35
   at Avalonia.Controls.TopLevel.HandleInput(RawInputEventArgs e) in /_/src/Avalonia.Controls/TopLevel.cs:line 499
   at Avalonia.X11.X11Window.<ScheduleInput>b__121_0() in /_/src/Avalonia.X11/X11Window.cs:line 740
   at Avalonia.Threading.JobRunner.Job.Avalonia.Threading.JobRunner.IJob.Run() in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 166
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 37
   at Avalonia.X11.X11PlatformThreading.HandleX11(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 169
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 245
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.cs:line 65
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 132
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 187
   at ICSharpCode.ILSpy.Program.Main(String[] args) in /home/runner/work/AvaloniaILSpy/AvaloniaILSpy/ILSpy/Program.cs:line 22
AngryAnt commented 2 years ago

I am working on a packaging of ILSpy for NixOS and on 21.11 (stable) - which very much is a systemd-based distribution - I am running into the same issue. Any tooltip/hint rendering results in the above unhandled exception.

Using the release binary for 7.1-rc as building from source gets... interesting :)

riQQ commented 2 years ago

Likely duplicate of #96

AngryAnt commented 2 years ago

Likely duplicate of #96

Confirmed. Issue no longer reproduces for me on the just-released v7.2-rc. Thank you for the quick turnaround time.

AngryAnt commented 2 years ago

@jeffreye FYI the package is available here: https://search.nixos.org/packages?channel=unstable&show=avalonia-ilspy&from=0&size=50&sort=relevance&type=packages&query=ILSpy