IridiumIO / CompactGUI

Transparently compress active games and programs using Windows 10/11 APIs
GNU General Public License v3.0
4.71k stars 223 forks source link

BSOD (Probably Memory overflow) and Forced CHKDSK Needed when recompressing files with hard links with LZX #419

Open Charlie-Ramirez-Animation-Studios-de-MX opened 2 months ago

Charlie-Ramirez-Animation-Studios-de-MX commented 2 months ago

When Recompressing .ttf Font files (previously compressed with the attribute in Windows Explorer properties) that have hard links (to files not in use or on the system), a BSOD can be triggered due to volmgr failure in Windows 11 (which activates system protection marking the drive as corrupt requiring forced CHKDSK on startup).

Tried to replicate a third time without success, the GUI hangs immediately when analyzing the folder because a file is missing (probably the file was corrupted/lost during the BSOD)

Generated Events:

Faulting application name: CompactGUI.exe, version: 3.0.0.0, time stamp: 0x65ab0000 Faulting module name: KERNELBASE.dll, version: 10.0.22621.3374, time stamp: 0x3069ce37 Exception code: 0xe0434352 Fault offset: 0x00000000000653ac Faulting process id: 0x0xD20 Faulting application start time: 0x0x1DA898E0BE1E42D Faulting application path: D:\charl\Downloads\CompactGUI.exe Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll Report Id: cfc246b2-4c25-4fe4-ab17-c5cf12b28d60 Faulting package full name: Faulting package-relative application ID:

BugCheck Message: The computer has rebooted from a bugcheck. The bugcheck was: 0x00000050 (0xffffd1039e940000, 0x0000000000000000, 0xfffff8026c737500, 0x0000000000000002).

A corruption was discovered in the file system structure on volume E:.
The exact nature of the corruption is unknown.  The file system structures need to be scanned and fixed offline.
Volume E: (\Device\HarddiskVolume10) needs to be taken offline to perform a Full Chkdsk.  Please run "CHKDSK /F" locally via the command line, or run "REPAIR-VOLUME <drive:>" locally or remotely via PowerShell.

DotNet Event:

Application: CompactGUI.exe CoreCLR Version: 6.0.2824.12007 .NET Version: 6.0.28 Description: The process was terminated due to an unhandled exception. Exception Info: System.AggregateException: One or more errors occurred. (Could not find file 'E:\Fonts de windows\Chunkfive.otf'.) ---> System.IO.FileNotFoundException: Could not find file 'E:\Fonts de windows\Chunkfive.otf'. File name: 'E:\Fonts de windows\Chunkfive.otf' at System.IO.FileInfo.get_Length() at CompactGUI.Core.Analyser.AnalyseFile(String file, Int32& compressedFilesCount, ConcurrentBag1& fileDetails) at CompactGUI.Core.Analyser._Closure$22-0._Lambda$2(String file) at System.Threading.Tasks.Parallel.<>cDisplayClass33_0`2.b0(Int32 i) at System.Threading.Tasks.Parallel.<>cDisplayClass19_01.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) --- End of stack trace from previous location --- at System.Threading.Tasks.Parallel.<>c__DisplayClass19_01.b1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) at System.Threading.Tasks.TaskReplicator.Replica.Execute() --- End of inner exception stack trace --- at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction1 action, ParallelOptions options, Boolean stopOnFirstFailure) at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Func4 bodyWithLocal, Func1 localInit, Action1 localFinally) --- End of stack trace from previous location --- at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException) at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Func4 bodyWithLocal, Func1 localInit, Action1 localFinally) at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IList1 list, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally) at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable1 source, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally) at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable1 source, ParallelOptions parallelOptions, Action1 body) at CompactGUI.Core.Analyser._Closure$__22-0._Lambda$__1() at System.Threading.Tasks.Task1.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CompactGUI.Core.Analyser.AnalyseFolder(CancellationToken cancellationToken) at CompactGUI.MainViewModel.AnalyseBegin() at System.Threading.Tasks.Task.<>c.b__128_0(Object state) 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) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 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) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run() at CompactGUI.Application.Main() `

stuffed2 commented 2 months ago

Is this an event that only occurs when using LZX compression, not the other types of compression available?