carina-studio / ULogViewer

Cross-Platform Universal Log Viewer.
https://carina-studio.github.io/ULogViewer/
MIT License
409 stars 40 forks source link

Unhandled Exception on Application Start - Ubuntu 20.04 LTS #12

Closed ZeroAviation closed 2 years ago

ZeroAviation commented 2 years ago

1) Pulled latest release (ULogViewer-1.0.4.319-linux-x64.zip) 2) Changed ULogViewer to executable (a+rwx) 3) Attempted to run the application (./ULogViewer)

Following exception occurred

2022-04-10 12:24:59.7276 27965 1 DEBUG App: Created
2022-04-10 12:24:59.7860 27965 1 DEBUG App: Linux distribution: Ubuntu
2022-04-10 12:24:59.9562 27965 1 WARN App: Try connect to multi-instances server
2022-04-10 12:25:00.4567 27965 1 WARN App: Unable to connect to multi-instances server
2022-04-10 12:25:00.4707 27965 1 WARN App: Multi-instances server stream created
2022-04-10 12:25:00.4751 27965 1 WARN App: Start waiting for multi-instances client
2022-04-10 12:25:00.5467 27965 1 DEBUG App: Start loading persistent state
2022-04-10 12:25:00.5670 27965 1 DEBUG App: Complete loading persistent state
2022-04-10 12:25:00.5683 27965 1 WARN App: Privacy Policy is not agreed yet
2022-04-10 12:25:00.5683 27965 1 WARN App: User Agreement is not agreed yet
2022-04-10 12:25:00.5683 27965 1 DEBUG App: Start loading settings
2022-04-10 12:25:00.5715 27965 1 DEBUG App: Complete loading settings
2022-04-10 12:25:00.5715 27965 1 DEBUG App: No need to output log to localhost
2022-04-10 12:25:01.7918 27965 1 INFO App: Start checking update
2022-04-10 12:25:01.7918 27965 1 DEBUG JsonPackageResolver: Change state from Initializing to Started
2022-04-10 12:25:01.8007 27965 1 ERROR App: Unhandled application exception System.NullReferenceException: Object reference not set to an instance of an object. at CarinaStudio.AppSuite.Controls.SplashWindowImpl.OnOpened(EventArgs e) at Avalonia.Controls.Window.ShowCore(Window parent) in //src/Avalonia.Controls/Window.cs:line 702 at Avalonia.Controls.Window.Show() in //src/Avalonia.Controls/Window.cs:line 626 at CarinaStudio.AppSuite.AppSuiteApplication.OnPrepareStartingAsync() at CarinaStudio.ULogViewer.App.OnPrepareStartingAsync() in C:\Studio\ULogViewer\ULogViewer\App.axaml.cs:line 317 at CarinaStudio.AppSuite.AppSuiteApplication.<>cDisplayClass165_0.<b4>d.MoveNext() --- End of stack trace from previous location --- at System.Threading.Tasks.Task.<>c.b128_0(Object ) at Avalonia.Threading.AvaloniaSynchronizationContext.<>cDisplayClass5_0.b_0() in //src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs:line 33 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.CheckSignaled() in //src/Avalonia.X11/X11PlatformThreading.cs:line 164 at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in //src/Avalonia.X11/X11PlatformThreading.cs:line 244 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 120 at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 209 at CarinaStudio.ULogViewer.App.Main(String[] args) in C:\Studio\ULogViewer\ULogViewer\App.axaml.cs:line 95

carina-studio commented 2 years ago

@ZeroAviation Is it 100% reproducible? I have tried the following ways to run ULogViewer on my Ubuntu 20.04.3 LTS but cannot reproduce the error:

  1. By pre-built package 1-1. Download ULogViewer-1.0.4.319-linux-x64.zip. 1-2. Make ULogViewer executable (by GUI). 1-3. Run ./ULogViewer.
  2. By building from source code 2-1. Checkout 1.0 branch and pull the latest code. 2-2. Change to ULogViewer sub-folder. 2-3. Run dotnet restore. 2-4. Run dotnet run.
ZeroAviation commented 2 years ago

@carina-studio Yes, I am able to reproduce it on this machine without issue. This is a fresh Linux install witth dev tools (Rider, visual studio, docker, etc)

I attempted to build/run from source and got the following

(see screen grab here for better formatting: https://www.dropbox.com/s/06jgam9clcuk72h/Screenshot%20from%202022-04-11%2012-16-54.png?dl=0)

zeroaviation@mattXPS:~/playground$ mkdir ulv

zeroaviation@mattXPS:~/playground$ cd ulv

zeroaviation@mattXPS:~/playground/ulv$ git clone https://github.com/carina-studio/ULogViewer.git

Cloning into 'ULogViewer'... remote: Enumerating objects: 7928, done. remote: Counting objects: 100% (906/906), done. remote: Compressing objects: 100% (240/240), done. remote: Total 7928 (delta 789), reused 749 (delta 665), pack-reused 7022 Receiving objects: 100% (7928/7928), 16.66 MiB | 5.60 MiB/s, done. Resolving deltas: 100% (6307/6307), done.

zeroaviation@mattXPS:~/playground/ulv$ cd ULogViewer

zeroaviation@mattXPS:~/playground/ulv/ULogViewer$ dotnet restore

Determining projects to restore... /usr/share/dotnet/sdk/6.0.201/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5): error NETSDK1100: Windows is required to build Windows desktop applications. [/home/zeroaviation/playground/ulv/ULogViewer/ULogViewer.Tests/ULogViewer.Tests.csproj]

zeroaviation@mattXPS:~/playground/ulv/ULogViewer$ ls BuildMacOSPackages.sh docs NotarizeMacOSPackages.sh PackageManifest.json README.md ULogViewer.sln BuildPackages.bat LICENSE PackageInfo.json PackageManifest-Preview.json ULogViewer ULogViewer.Tests

hamster620 commented 2 years ago

@ZeroAviation You need to run dotnet restore in ULogViewer/ULogViewer folder instead of the root ULogViewer folder because ULogViewer.Tests project cannot run on non-Windows platform.

ZeroAviation commented 2 years ago

Changing to the correct folder, the restore is successful however, running the application "dotnet run" renders the same exception as originally.

Any suggestions on how to debug this issue?

hamster620 commented 2 years ago

@ZeroAviation The error occurred belongs to class in another project: https://github.com/carina-studio/AppSuiteBase/blob/1.0/Core/Controls/SplashWindowImpl.axaml.cs

You can clone the source code and run Tests project to check whether the same error happens or not. I think the NRE is caused by Null value returned by Screens.ScreenFromVisual(): code

hamster620 commented 2 years ago

Fixed by https://github.com/carina-studio/AppSuiteBase/commit/01110042b570c647556cdf7d8817a3504cfbcdf7 and released with AppSuite 1.0.2.417.

hamster620 commented 2 years ago

Released with 1.0.6.422.