Synthesis-Collective / SynthEBD

Port of zEBD to Mutagen
31 stars 7 forks source link

An object implementing IHandleObservableErrors #92

Closed roysorlie closed 1 year ago

roysorlie commented 1 year ago

Hi :) First off, let me just say this is such an amazing tool. I used the old EBD, and this one is much more powerful! Fantastic stuff!

It's probably a user error, but I get a crash when I run the patcher. Most issues I've had have been easily identified, like texture packs with missing files etc. This one I don't quite understand..

See error log below.

SynthEBD has crashed with the following error: 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. at ReactiveUI.RxApp.<>cDisplayClass9_0.<.cctor>b2() in //src/ReactiveUI/RxApp.cs:line 109 at System.Reactive.Concurrency.Scheduler.Invoke(Action action) in //Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs:line 253 at System.Reactive.Concurrency.Scheduler.<>c.b740(IScheduler , Action a) in /_/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs:line 37 at System.Reactive.Concurrency.DispatcherScheduler.<>cDisplayClass12_0`1.b_0() in //src/ReactiveUI.Uwp/Rx/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)

An exception was thrown while activating SynthEBD.NPCInfo. at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action1 next) at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action1 next) at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action1 next) at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) at lambda_method963(Closure , INpcGetter , HashSet1 , HashSet1 ) at SynthEBD.Patcher.MainLoop(IEnumerable1 npcCollection, Boolean skipLinkedSecondaryNPCs, ISkyrimMod outputMod, CategorizedFlattenedAssetPacks sortedAssetPacks, BodyGenConfigs bodyGenConfigs, Settings_OBody oBodySettings, HeightConfig currentHeightConfig, Settings_Headparts headPartSettings, Int32 npcCounter, HashSet1 generatedLinkGroups, HashSet1 skippedLinkedNPCs, Keyword EBDFaceKW, Keyword EBDScriptKW, FacePartCompliance facePartComplianceMaintainer, HashSet`1 headPartNPCs) in D:\a\SynthEBD\SynthEBD\SynthEBD\Patcher\Patcher.cs:line 394 at SynthEBD.Patcher.RunPatcher() in D:\a\SynthEBD\SynthEBD\SynthEBD\Patcher\Patcher.cs:line 277 at SynthEBD.VM_RunButton.<>c__DisplayClass7_0.<<-ctor>b__0>d.MoveNext() in D:\a\SynthEBD\SynthEBD\SynthEBD\RunButton\VM_RunButton.cs:line 76

An exception was thrown while invoking the constructor 'Void .ctor(Mutagen.Bethesda.Skyrim.INpcGetter, System.Collections.Generic.HashSet1[SynthEBD.LinkedNPCGroup], System.Collections.Generic.HashSet1[SynthEBD.LinkedNPCGroupInfo], SynthEBD.IEnvironmentStateProvider, SynthEBD.PatcherState, SynthEBD.AliasHandler)' on type 'NPCInfo'. at Autofac.Core.Activators.Reflection.BoundConstructor.Instantiate() at Autofac.Core.Activators.Reflection.ReflectionActivator.<>c__DisplayClass12_0.b__0(ResolveRequestContext ctxt, Action1 next) at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action1 next) at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)

String in Strings File format had unexpected length: 8 != 4 at Mutagen.Bethesda.Plugins.Binary.Translations.StringBinaryTranslation.Parse(ReadOnlyMemorySlice1 data, StringsSource source, ParsingBundle parsingBundle) at Mutagen.Bethesda.Skyrim.NpcBinaryOverlay.get_Name() at SynthEBD.Logger.GetNPCLogNameString(INpcGetter npc) in D:\a\SynthEBD\SynthEBD\SynthEBD\General_Aux\Logger.cs:line 475 at SynthEBD.NPCInfo..ctor(INpcGetter npc, HashSet1 definedLinkGroups, HashSet`1 createdLinkGroupInfos, IEnvironmentStateProvider environmentProvider, PatcherState patcherState, AliasHandler aliasHandler) in D:\a\SynthEBD\SynthEBD\SynthEBD\Patcher\PatcherAux\NPCInfo.cs:line 22 at lambda_method4(Closure , Object[] ) at Autofac.Core.Activators.Reflection.BoundConstructor.Instantiate()

Patcher Settings Creation Log: Found settings source path at D:\Modding\SkyrimAE\Tools\SynthEBD\Settings\SettingsSource.json Source Settings: Load Settings from Portable Folder: False Portable Folder Location:

Patcher Environment Creation Log: Found environment source path at D:\Modding\SkyrimAE\Tools\SynthEBD\Settings\EnvironmentSource.json Source Settings: Skyrim Version: SkyrimSE Game Environment Directory: D:\SteamLibrary\steamapps\common\Skyrim Special Edition\Data

roysorlie commented 1 year ago

Just an update. The error was using [v0.9.1.3]. I updated to [0.9.2.0] and the very same error appears. I'm going to try to completely remove synthEBD and starting with a clean install of 0.9.2.0, and report back.

EDIT:

I did a clean install, imported the Bijin skin and nothing else, and ran the patcher. Crashed with the exact same error message. From what I can tell, (and I have no idea how any of this wizardry works), it seems to crash when checking/importing NPC data. Unless I'm mistaken, it has only crashed when checking male NPC's during the "no valid asset pack" bit of the patching.

Cheers

Piranha91 commented 1 year ago

0.9.3 should be able to handle this - please let me know if it still crashes. You'll probably have some log entries about errors getting NPC names, but it should continue patching anyway.

roysorlie commented 1 year ago

Hi again.

V 0.9.3 solved the issue! Well, I did crash the first time, but that was due to the mod SSE Craftable Hearthfire Planters - Campfire addon, which is just chock full of errors. The patcher crashed because of a missing string in a planter NPC...

Not sure if that is something you want to blacklist SynthEBD from even loading, or having it throw a specific warning of something. Needless to say, SynthEBD let me know the mod is borked, and I have purged it from my mod list.

Now, back to patching!

Cheers!