Naxesss / MapsetVerifier

A modding tool for osu!
93 stars 8 forks source link

Arch Linux: The display compositor is frequently crashing. Goodbye. #30

Open Granshmeyr opened 1 year ago

Granshmeyr commented 1 year ago

OS: Arch Linux

App not opening whether installed from AUR or running executable from tar.gz.

Running mapsetverifier:

[grindle@CRAPPY-DESKTOP mapsetverifier-1.8.2]$ ./mapsetverifier 
Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
[6318:0908/191300.075107:FATAL:gpu_data_manager_impl_private.cc(892)] The display compositor is frequently crashing. Goodbye.
Trace/breakpoint trap (core dumped)
[grindle@CRAPPY-DESKTOP mapsetverifier-1.8.2]$

Running mapsetverifier --no-sandbox gets the app to open, but backend seems to not work as beatmaps get stuck infinitely loading.

Running MapsetVerifierBackend:

[grindle@CRAPPY-DESKTOP linux-x64]$ ./MapsetVerifierBackend
Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
   at System.Environment.FailFast(System.String)
   at System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode()
   at System.Globalization.GlobalizationMode..cctor()
   at System.Globalization.CultureData.CreateCultureWithInvariantData()
   at System.Globalization.CultureData.get_Invariant()
   at System.Globalization.CultureInfo..cctor()
   at System.Globalization.CultureInfo.get_InvariantCulture()
   at MapsetVerifierBackend.Program.Main(System.String[])
Aborted (core dumped)
[grindle@CRAPPY-DESKTOP linux-x64]$ 

Running export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1; ./MapsetVerifierBackend:

[grindle@CRAPPY-DESKTOP linux-x64]$ export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1; ./MapsetVerifierBackend
Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly '/mnt/Storage Box/Executables/mapsetverifier-1.8.2/resources/app/api/linux-x64/resources/app/checks/MapsetChecks.dll'. The system cannot find the file specified.

File name: '/mnt/Storage Box/Executables/mapsetverifier-1.8.2/resources/app/api/linux-x64/resources/app/checks/MapsetChecks.dll'
   at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly)
   at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath)
   at System.Reflection.Assembly.LoadFile(String path)
   at MapsetVerifierFramework.Checker.LoadCheckDLL(String aCheckPath) in D:\VSPROJECTS\Visual Studio 2017\Projects\MapsetVerifierFramework\Checker.cs:line 120
   at MapsetVerifierBackend.Program.Main(String[] args) in D:\VSPROJECTS\Visual Studio 2017\Projects\MapsetVerifierBackend\Program.cs:line 33

Aborted (core dumped)
[grindle@CRAPPY-DESKTOP linux-x64]$

Running export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1; ./mapsetverifier yields the same error as running without the export.

Finally, the app can be successfully launched as normal with export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1; ./mapsetverifier --no-sandbox, allowing beatmaps to be loaded and checked as normal.

EDIT: Actually, I just rebooted my computer and the above command is still required but all functionality works now and the errors below don't apply.

However, this method yields two errors which don't seem to affect Checks functionality i.e. Backend error, click here for details.:

Unhandled exception.
System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use. ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use ---> System.Net.Sockets.SocketException (98): Address already in use at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync() at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0`1.<g__OnBind

Additionally, it seems Snapshots functionality won't work with this as it yields an error i.e. Unable to find the specified file.:

at Interop.Sys.GetCwdHelper(Byte* ptr, Int32 bufferSize) at Interop.Sys.GetCwd() at System.IO.Path.GetFullPath(String path) at System.IO.File.GetCreationTimeUtc(String path) at MapsetSnapshotter.Snapshotter.SnapshotBeatmapSet(BeatmapSet aBeatmapSet) in D:\VSPROJECTS\Visual Studio 2017\Projects\MapsetSnapshotter\Snapshotter.cs:line 57 at MapsetVerifierBackend.Server.Worker.RequestSnapshots(String aBeatmapSetPath) in D:\VSPROJECTS\Visual Studio 2017\Projects\MapsetVerifierBackend\Server\Worker.cs:line 137
Kyuunex commented 1 year ago

works on my machine.

are you in an Xorg or Wayland session? if Wayland, is Xwayland enabled? (mapset verifier is on an ancient version of electron, so it probably does not work under wayland)

Also, MapsetVerifierBackend hardcodes the relative path to resources/app/checks/MapsetChecks.dll so it should be launched in the same directory the electron binary is.

Granshmeyr commented 1 year ago

I'm on Xorg. For fun I tried the executable on my Debian sid install after upgrade and it throws the same error as title w/o the fontconfig warning.

Kyuunex commented 1 year ago

I'm not sure why you get the "The display compositor is frequently crashing." error, but the best thing to do is to just use the AUR package, then edit /usr/bin/mapsetverifier and on last line, add --no-sandbox. (I could add that into the AUR package itself but I am unsure why this error happens and how common it is.)

Also, the Failed to bind to address error you get, could be because you managed to have multiple instances of the backend running at the same time? One launched by the electron app as a child process and one you managed to manually launch.

As for the problem with snapshots, you can try making sure the $HOME/.local/share/Mapset Verifier Externals/snapshots/ folder exists and is writable by the current user.

AeroBliss commented 3 months ago

--no-sandbox worked