RandomEngy / VidCoder

A Blu-ray, DVD and video file transcoder for Windows.
http://vidcoder.net
GNU General Public License v2.0
708 stars 42 forks source link

ReactiveUI.UnhandledErrorException: An object implementing IHandleObservableErrors #1119

Open bth117 opened 1 year ago

bth117 commented 1 year ago

What were you doing when VidCoder crashed?

Hello,

I can no longer choose the "compare against original" playback option after encoding without encountering this fatal error. It seems VidCoder can still encode videos just fine, I just can't compare the output to source anymore. I saw similar crash details on Handbrake forum linked back to .NET updates. I did notice that Windows auto-updated my .NET framework today, about an hour before the VidCoder started crashing...

I tried uninstalling .NET 6.0.14 and VidCoder. I reinstalled VidCoder and re-installed .NET 6.0.14 from the VidCoder install menu. The error still occurs. I pasted the .NET runtime info below.

Thank you.

.NET runtimes installed: Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 6.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Crash details

VidCoder 8.24 SquirrelInstaller
ReactiveUI.UnhandledErrorException: An object implementing IHandleObservableErrors (often a ReactiveCommand or ObservableAsPropertyHelper) has errored, thereby breaking its observable pipeline. To prevent this, ensure the pipeline does not error, or Subscribe to the ThrownExceptions property of the object in question to handle the erroneous case.
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at VidCoder.ViewModel.EncodeJobViewModel.get_SourceTitle()
   at VidCoder.ViewModel.EncodeResultViewModel.<get_Compare>b__38_0()
   at ReactiveUI.ReactiveCommand.<>c__DisplayClass0_0.<Create>b__1(IObserver`1 observer) in D:\a\ReactiveUI\ReactiveUI\src\ReactiveUI\ReactiveCommand\ReactiveCommand.cs:line 109
   at System.Reactive.Linq.QueryLanguage.CreateWithDisposableObservable`1.SubscribeCore(IObserver`1 observer) in /_/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Creation.cs:line 35
   at System.Reactive.ObservableBase`1.Subscribe(IObserver`1 observer) in /_/Rx.NET/Source/src/System.Reactive/ObservableBase.cs:line 58
   --- End of inner exception stack trace ---
   at ReactiveUI.RxApp.<>c__DisplayClass10_0.<.cctor>b__2() in D:\a\ReactiveUI\ReactiveUI\src\ReactiveUI\RxApp.cs:line 106
   at System.Reactive.Concurrency.Scheduler.<>c.<Schedule>b__74_0(IScheduler _, Action a) in /_/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs:line 37
   at System.Reactive.Concurrency.DispatcherScheduler.<>c__DisplayClass12_0`1.<Schedule>b__0() in /_/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/DispatcherScheduler.cs:line 98
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
RandomEngy commented 1 year ago

Been on vacation, just got a chance to look at this now. I think there's a VideoSource property that is not set at this point. Can you tell me if VidCoder had been closed and re-opened between queuing the job and starting the encode? Also exactly how the job was originally added to the queue? That would help me narrow down the code path to look at.