Jeric-X / SyncClipboard

跨平台剪贴板同步方案 / Cross-Platform Cipboard Syncing Solution
MIT License
1.24k stars 52 forks source link

GNOME 46.2启动报错 #86

Closed mrbaiwei closed 1 month ago

mrbaiwei commented 2 months ago

错误描述 | Describe the bug

[2024/06/05 11:56:14][Program.cs ][ 22] UnhandledException System.InvalidOperationException Could not create glyphTypeface.

复现步骤 | Steps to Reproduce

Kernel: 6.9.2-1-MANJARO DE: GNOME 46.2 WM: Mutter 只能确认在一次升级后无法打开,可能是dotnet环境相关,使用的self版本

截图 | Screenshots

No response

桌面端信息 | Desktop

No response

移动端信息 | Smartphone

No response

其他附加信息 | Additional context

No response

Jeric-X commented 2 months ago

1、是否有改过程序字体,如果改过在配置文件里删除重试一下? 配置文件路径:~/.config/SyncClipboard/SyncClipboard.json,搜索Font, 把冒号之后的内容清空,保留引号 2、是从很久之前版本的SyncClipboard升级来的吗(小于等于v0.5.2),如果有这个可能的话,帮忙试下0.5.2能否正常启动

mrbaiwei commented 2 months ago

我删除了~/.config/SyncClipboard配置文件夹,启动错误是一样的,然后试了0.5.2版本 提示 [2024/06/05 16:13:54][Program.cs ][ 22] UnhandledException System.InvalidOperationException Default font family name can't be null or empty.

Jeric-X commented 2 months ago

https://github.com/Jeric-X/SyncClipboard/actions/runs/9379466451 再麻烦你使用这个运行一次,我加上了更多的log信息

mrbaiwei commented 2 months ago

[2024/06/05 16:49:32][Program.cs ][ 22] UnhandledException System.InvalidOperationException Could not create glyphTypeface. at Avalonia.Media.Typeface.get_GlyphTypeface() at Avalonia.Rendering.Composition.Compositor.get_DiagnosticTextRenderer() at Avalonia.Rendering.Composition.Compositor.CreateCompositionTarget(Func1 surfaces) at Avalonia.Rendering.Composition.CompositingRenderer..ctor(IRenderRoot root, Compositor compositor, Func1 surfaces) at Avalonia.Controls.TopLevel..ctor(ITopLevelImpl impl, IAvaloniaDependencyResolver dependencyResolver) at Avalonia.Controls.WindowBase..ctor(IWindowBaseImpl impl, IAvaloniaDependencyResolver dependencyResolver) at Avalonia.Controls.WindowBase..ctor(IWindowBaseImpl impl) at Avalonia.Controls.Window..ctor(IWindowImpl impl) at Avalonia.Controls.Window..ctor() at SyncClipboard.Desktop.Views.MainWindow..ctor() in D:\a\SyncClipboard\SyncClipboard\src\SyncClipboard.Desktop\Views\MainWindow.axaml.cs:line 17 at System.RuntimeMethodHandle.InvokeMethod(Object target, Span1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(ServiceIdentifier serviceIdentifier) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at SyncClipboard.Core.AppCore.Run() in D:\a\SyncClipboard\SyncClipboard\src\SyncClipboard.Core\AppCore.cs:line 50 at SyncClipboard.Desktop.App.OnFrameworkInitializationCompleted() in D:\a\SyncClipboard\SyncClipboard\src\SyncClipboard.Desktop\App.axaml.cs:line 72 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 SyncClipboard.Desktop.Default.Program.Main(String[] args) in D:\a\SyncClipboard\SyncClipboard\src\SyncClipboard.Desktop.Default\Program.cs:line 22

这是最新的错误信息

mrbaiwei commented 2 months ago

可能与这个有关 https://github.com/AvaloniaUI/Avalonia/pull/15230

Jeric-X commented 2 months ago

可能与这个有关 AvaloniaUI/Avalonia#15230

看起来就是这个PR修改的文件抛出的错误,但是这个PR也只是加了调试信息,并没有改功能,从SyncClipboard的log来看,我正在引用的Avalonia版本使用的是这个PR合入前的代码

如果你确认之前有可以正常使用的版本话,可以使用二分查找的方式确定下是从哪个版本开始的问题吗,如果能确定改动的代码的话问题就很好排查了

另外你也可以尝试下在xyz.jericx.desktop.syncclipboard.desktop文件(我的是在/usr/share/applications目录,根据桌面环境可能不同),将Exec=/实际路径/SyncClipboard.Desktop.Default改为 Exec=env LANG=en_US.UTF-8 /实际路径/SyncClipboard.Desktop.Default,或者使用其他方式修改程序运行的环境变量使得LANG=en_US.UTF-8,看看能否在英语环境下正常运行

mrbaiwei commented 2 months ago

可能与这个有关 AvaloniaUI/Avalonia#15230

看起来就是这个PR修改的文件抛出的错误,但是这个PR也只是加了调试信息,并没有改功能,从SyncClipboard的log来看,我正在引用的Avalonia版本使用的是这个PR合入前的代码

如果你确认之前有可以正常使用的版本话,可以使用二分查找的方式确定下是从哪个版本开始的问题吗,如果能确定改动的代码的话问题就很好排查了

另外你也可以尝试下在xyz.jericx.desktop.syncclipboard.desktop文件(我的是在/usr/share/applications目录,根据桌面环境可能不同),将Exec=/实际路径/SyncClipboard.Desktop.Default改为 Exec=env LANG=en_US.UTF-8 /实际路径/SyncClipboard.Desktop.Default,或者使用其他方式修改程序运行的环境变量使得LANG=en_US.UTF-8,看看能否在英语环境下正常运行

英文环境启动正常了,太好了

Jeric-X commented 2 months ago

如果你想就这样正常使用的话那就OK

可能与这个有关 AvaloniaUI/Avalonia#15230

等更新到这个PR合入的Avalonia版本就能确认是什么字体引起的错误了,本条issue会保持开启,如果其他人也有相同的问题可以继续回复或者点一下表情

Jeric-X commented 1 month ago

v0.7.4 之后的Linux版本会默认以英语语言启动