1

Closed

VidCoder crashes & gets stuck in loop on long filename

description

If a filename/path are too long, then VidCoder crashes. It then gives a warning about the path length. (Handbrake didn't seem to have the problem, BTW).

BUT, if "Resume encoding on startup" is ON, then when restarted, it tries to re-encode the same problematic file, and crashes again. And again, and.....

Unfortunately, the ONLY way out of this loop is to UNINSTALL COMPLETELY, including settings. Otherwise, a re-install with old settings just pulls up the same pending queue. I even tried renaming the file, figuring it wouldn't be able to find it, and just move on. But the bug seems to be in the code that reads the queue, not where it tries to retrieve the file, as it never gets to a "can't find file X"..

Suggestion:
  • after a crash or error, disable the "auto-encode on startup"
    • and notify the user that you did this, so they can re-enable if they really want to
    • and/or put the "auto-encode on start" checkbox on the main UI
  • OR, after a crash, move the last file to the "failed" queue (especially if you can tell that's the file it crashed on). Thus, if every file in the queue has a problem, at least eventually it will stop.
  • OR, after a crash, if "auto-encode" is on, just ask the user:
    "VidCoder crashed with a pending queue - do you want to:
    A) start where you left off
    B) Keep the queue, but don't start encoding (i.e. clean up the queue yourself)
    C) Delete the whole queue"
Still, great tool!
Closed Dec 5, 2015 at 3:03 AM by RandomEngy
Fixed in 2.13 Beta.

comments

toyzrme wrote Dec 4, 2015 at 4:14 PM

System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
at System.IO.StreamWriter..ctor(String path)
at VidCoder.Services.Logger..ctor(ILogger parent, String baseFileName) in d:\docs\projects\VidCoder\VidCoder\Services\Logger.cs:line 57
at VidCoder.ViewModel.Components.ProcessingViewModel.StartEncode() in d:\docs\projects\VidCoder\VidCoder\ViewModel\Components\ProcessingViewModel.cs:line 1343
at VidCoder.ViewModel.Components.ProcessingViewModel.StartEncodeQueue() in d:\docs\projects\VidCoder\VidCoder\ViewModel\Components\ProcessingViewModel.cs:line 1227
at VidCoder.ViewModel.Components.ProcessingViewModel.<.ctor>b__8() in d:\docs\projects\VidCoder\VidCoder\ViewModel\Components\ProcessingViewModel.cs:line 147
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)