一个奇怪的问题困扰了我许久,就是在fvwm3下,运用dotnet构建的范例Avalonia应用,总是会报错:
Unhandled exception. System.OverflowException: Arithmetic operation resulted in an overflow.
at System.IntPtr.ToInt32()
at Avalonia.X11.Screens.X11Screens.X11Screen.UpdateWorkArea()
at Avalonia.X11.Screens.X11Screens.X11Screen.Refresh(MonitorInfo newInfo)
at Avalonia.X11.Screens.X11Screens.ScreenChanged(X11Screen screen)
at Avalonia.Platform.ScreensBase2.ScreenAdded(TScreen screen) at Avalonia.Platform.ScreensBase2.EnsureScreens()
at Avalonia.Platform.ScreensBase2.get_AllScreens() at Avalonia.X11.X11Window..ctor(AvaloniaX11Platform platform, IWindowImpl popupParent, X11WindowMode mode, Boolean overrideRedirect) at Avalonia.X11.X11Window..ctor(AvaloniaX11Platform platform, IWindowImpl popupParent, Boolean overrideRedirect) at Avalonia.X11.AvaloniaX11Platform.CreateWindow() at Avalonia.Controls.Platform.PlatformManager.CreateWindow() at Avalonia.Controls.Window..ctor() at MyApp.MainWindow..ctor() in /home/yibo/MyApp/MainWindow.axaml.cs:line 7 at MyApp.App.OnFrameworkInitializationCompleted() in /home/yibo/MyApp/App.axaml.cs:line 18 at Avalonia.AppBuilder.SetupUnsafe() at Avalonia.AppBuilder.Setup() at Avalonia.AppBuilder.SetupWithLifetime(IApplicationLifetime lifetime) at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, Action1 lifetimeBuilder)
at MyApp.Program.Main(String[] args) in /home/yibo/MyApp/Program.cs:line 12
[1] 13044 IOT instruction ./MyApp
另一个成熟的AvaloniaVisualBasic6也是会报错的,和上面的一样,下面的是AvaloniaILSpy的报错.
Sorry, we crashed
System.OverflowException: Arithmetic operation resulted in an overflow.
at Avalonia.X11.X11Screens.UpdateWorkArea(X11Info info, X11Screen[] screens) in /_/src/Avalonia.X11/X11Screens.cs:line 23
at Avalonia.X11.X11Screens.Randr15ScreensImpl.get_Screens() in /_/src/Avalonia.X11/X11Screens.cs:line 158
at Avalonia.X11.X11Screens.get_AllScreens() in /_/src/Avalonia.X11/X11Screens.cs:line 206
at Avalonia.X11.X11Window..ctor(AvaloniaX11Platform platform, IWindowImpl popupParent) in /_/src/Avalonia.X11/X11Window.cs:line 108
at Avalonia.X11.AvaloniaX11Platform.CreateWindow() in /_/src/Avalonia.X11/X11Platform.cs:line 130
at Avalonia.Controls.Platform.PlatformManager.CreateWindow() in /_/src/Avalonia.Controls/Platform/PlatformManager.cs:line 45
at Avalonia.Controls.Window..ctor() in /_/src/Avalonia.Controls/Window.cs:line 231
at ICSharpCode.ILSpy.Controls.PlatformDependentWindow..ctor() in /home/runner/work/AvaloniaILSpy/AvaloniaILSpy/ILSpy.Core/Controls/PlatformDependentWindow.cs:line 14
at ICSharpCode.ILSpy.MainWindow..ctor() in /home/runner/work/AvaloniaILSpy/AvaloniaILSpy/ILSpy.Core/MainWindow.xaml.cs:line 117
at ICSharpCode.ILSpy.App.OnFrameworkInitializationCompleted() in /home/runner/work/AvaloniaILSpy/AvaloniaILSpy/ILSpy.Core/App.xaml.cs:line 133
at Avalonia.Controls.AppBuilderBase`1.Setup() in /_/src/Avalonia.Controls/AppBuilderBase.cs:line 312
at Avalonia.Controls.AppBuilderBase`1.SetupWithLifetime(IApplicationLifetime lifetime) in /_/src/Avalonia.Controls/AppBuilderBase.cs:line 179
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 208
at ICSharpCode.ILSpy.Program.Main(String[] args) in /home/runner/work/AvaloniaILSpy/AvaloniaILSpy/ILSpy/Program.cs:line 22
奇怪的是:在fvwm3下切换一下桌面(GotoDesk)在新的桌面下,就能正常运行了,切换回最开始的桌面,程序也能正常运行.
想知道这里的原因,感觉是avalonia的实现和fvwm3的代码不太对付,可是为什么切换一下桌面就能正常运行啦?