MCEBuddy 2.5.8 64位元 的歷史檔案損壞 - 20230215

请求类型:
BUG / 新功能

MCEBuddy 版本及类型(32 位或 64 位):
2.5.8 64 位 – 20230215

操作系统及类型(32 位或 64 位):
Windows 10 Pro 64 位

问题或建议概述:
使用此版本时,标题所示的损坏反复出现。我重置后一切正常,但过一段时间后错误依旧。

回退到之前的版本可解决问题。

从历史文件中删除最后两段(见下文)也能暂时解决,直到 MCEBuddy 再次写入该文件。


日志片段

ERROR> --> Unable to open INI file -> C:\Program Files\MCEBuddy2x\config\history.  
Error : SharpConfig.ParserException: Line 184: closing bracket missing.  
   at SharpConfig.ConfigurationReader.ParseSection(String line, Int32 lineNumber)  
   at SharpConfig.ConfigurationReader.Parse(StringReader reader, Configuration config)  
   at SharpConfig.ConfigurationReader.ReadFromString(String source)  
   at MCEBuddy.Util.Ini..ctor(String file)  
ERROR> 2023-02-19T04:02:36 MCEBuddy.Engine.QueueManager --> Unable to process files in location G:\VideoCaptures\Channel_DVR\TV for monitor task Channels DVR Recorded TV  
ERROR : Value cannot be null.  
Parameter name: source  
INFORMATION> 2023-02-19T04:02:36 MCEBuddy.Engine.QueueManager --> No accessible files founds in location G:\VideoCaptures\Channel_DVR\Movies for monitor task Channels DVR Recorded Movies  
ERROR> 2023-02-19T04:03:21 MCEBuddy.Engine.QueueManager --> History file corruption detected: This can lead to unpredictable behavior, fix or clear history file  
ERROR> --> Unable to open INI file -> C:\Program Files\MCEBuddy2x\config\history.  
Error : SharpConfig.ParserException: Line 184: closing bracket missing.  
   at SharpConfig.ConfigurationReader.ParseSection(String line, Int32 lineNumber)  
   at SharpConfig.ConfigurationReader.Parse(StringReader reader, Configuration config)  
   at SharpConfig.ConfigurationReader.ReadFromString(String source)  
   at MCEBuddy.Util.Ini..ctor(String file)  
ERROR> 2023-02-19T04:03:21 MCEBuddy.Engine.QueueManager --> Unable to process files in location G:\VideoCaptures\TV_RAW for monitor task SageTV Recordings  
ERROR : Value cannot be null.  
Parameter name: source  
ERROR> --> Unable to open INI file -> C:\Program Files\MCEBuddy2x\config\history.  
Error : SharpConfig.ParserException: Line 184: closing bracket missing.  
   at SharpConfig.ConfigurationReader.ParseSection(String line, Int32 lineNumber)  
   at SharpConfig.ConfigurationReader.Parse(StringReader reader, Configuration config)  
   at SharpConfig.ConfigurationReader.ReadFromString(String source)  
   at MCEBuddy.Util.Ini..ctor(String file)  
ERROR> 2023-02-19T04:03:21 MCEBuddy.Engine.QueueManager --> Unable to process files in location G:\VideoCaptures\Channel_DVR\TV for monitor task Channels DVR Recorded TV  
ERROR : Value cannot be null.  
Parameter name: source  

历史文件:

history - Copy.zip (1.1 KB)

我最近(2023-年2月13日)也第一次(就我所記得)遇到歷史檔案損毀的情況。可惜當時沒想到要備份,只以為是自己搞壞的;之後也沒再發生。(該事件已從 mcebuddy.log 中被清除。)

編輯:我目前使用的是 2.5.7.1 版。看到前一篇貼文提到有更新的 BETA 版,顯然我的歷史檔案損毀並非因為最新版本引入的問題。

感谢您的反馈。我们刚刚在最新的BETA版本中更新了INI处理器,以提高其可扩展性。我会进一步调查这个问题。您能告诉我,这种情况是在监控大量文件时发生,还是在特定时间段后或特定数量的转换后发生?

如果您使用的是 2.5.8 二月測試版之前的任何版本,則與此無關。檔案損毀可能因檔案系統問題或硬體故障而發生。這種情況極為罕見,但並非 MCEBuddy 特有,通常表示底層磁碟或檔案系統有問題。請嘗試執行 chkdsk 進行磁碟修復。

除了 MCEB 写入文件时,我找不到任何规律。

示例:我从历史文件底部删除那段有问题的内容后,3 个转换任务启动,其中 2 个看似完成,最后一个却导致文件损坏。

我附上了新损坏的文件副本。

history.zip(1.2 KB)

以下是我回来看到的情况:

这是日志的一段(在我看来,日志中的报错并不准确,因为历史文件第 208 行似乎有闭合括号)。

INFORMATION> 2023-02-19T09:43:21 --> Job for G:\VideoCaptures\Channel_DVR\TV\On Patrol Live\On Patrol Live S01E58 2023-02-18-2100.mpg converted successfully to A:\ServerFolders\Recorded\TV_SHOWS\On Patrol Live\SEASON-01\On Patrol Live - S01E58 - #157.mkv using conversion task -> TV Show Recordings and profile -> MKV Unprocessed
ERROR> --> Unable to open INI file -> C:\Program Files\MCEBuddy2x\config\history.
Error : SharpConfig.ParserException: Line 208: closing bracket missing.
   at SharpConfig.ConfigurationReader.ParseSection(String line, Int32 lineNumber)
   at SharpConfig.ConfigurationReader.Parse(StringReader reader, Configuration config)
   at SharpConfig.ConfigurationReader.ReadFromString(String source)
   at MCEBuddy.Util.Ini..ctor(String file)
ERROR> 2023-02-19T09:43:27 MCEBuddy.Engine.QueueManager --> Unable to process files in location G:\VideoCaptures\TV_RAW for monitor task SageTV Recordings
ERROR : Value cannot be null.
Parameter name: source
ERROR> --> Unable to open INI file -> C:\Program Files\MCEBuddy2x\config\history.
Error : SharpConfig.ParserException: Line 208: closing bracket missing.
   at SharpConfig.ConfigurationReader.ParseSection(String line, Int32 lineNumber)
   at SharpConfig.ConfigurationReader.Parse(StringReader reader, Configuration config)
   at SharpConfig.ConfigurationReader.ReadFromString(String source)
   at MCEBuddy.Util.Ini..ctor(String file)
ERROR> 2023-02-19T09:43:27 MCEBuddy.Engine.QueueManager --> Unable to process files in location G:\VideoCaptures\Channel_DVR\TV for monitor task Channels DVR Recorded TV
ERROR : Value cannot be null.
Parameter name: source
INFORMATION> 2023-02-19T09:43:27 MCEBuddy.Engine.QueueManager --> No accessible files founds in location G:\VideoCaptures\Channel_DVR\Movies for monitor task Channels DVR Recorded Movies
INFORMATION> 2023-02-19T09:43:33 MCEBuddy.Engine.Core --> Job for G:\VideoCaptures\Channel_DVR\TV\On Patrol Live\On Patrol Live S01E57 2023-02-17-2100.mpg completed
ERROR> --> Unable to open INI file -> C:\Program Files\MCEBuddy2x\config\history.
Error : SharpConfig.ParserException: Line 208: closing bracket missing.
   at SharpConfig.ConfigurationReader.ParseSection(String line, Int32 lineNumber)
   at SharpConfig.ConfigurationReader.Parse(StringReader reader, Configuration config)
   at SharpConfig.ConfigurationReader.ReadFromString(String source)
   at MCEBuddy.Util.Ini..ctor(String file)
ERROR> 2023-02-19T09:43:33 MCEBuddy.Engine.Core --> MCEBuddy Monitor Thread Crashed. Error: System.ArgumentNullException: Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
   at MCEBuddy.Util.Ini.ReadString(String section, String key, String defVal)
   at MCEBuddy.Engine.Core.WriteJobHistory(ConversionJob job)
   at MCEBuddy.Engine.Core.MonitorEngineThread()
INFORMATION> 2023-02-19T12:30:49 MCEBuddy.Engine.Core --> MCEBuddy engine stopped
INFORMATION> 2023-02-19T12:30:49 MCEBuddy.Engine.Core --> Setting engine last running state to stop

執行 chkdsk /f,然後執行 sfc /scannow,看看是否有進行任何修復。我只是好奇想知道。

沒有錯誤或系統損壞,再次強調,之前的版本不會損壞歷史檔案。

我一升级到 20230215 测试版就遇到了同样的错误。直到 0214 版都一切正常。每次卸载/升级前我都会做完整备份,也试过把历史文件从旧版本恢复回来,还是不行。日志里同样全是 SharpConfig 报缺少右括号的错误。

下一步就是回滚到上一个版本,看问题是否消失。

感謝回報。已找到問題並在今天的 2.5.8 beta 版本中修復。請試用看看,若仍有任何問題請再告訴我們。

供參考,問題出在檔名含有 # 的檔案,實際上並非損毀,而是處理上的問題。

感谢超快的修复,@Goose,现在一切正常。历史记录在应用里能看到,日志文件目前也没报错。
关于文件名里的“#”确实是个好发现,出于好奇我得去查查到底是哪些文件以及它们为何带“#”。:slight_smile:

顺便问一句:我知道你们在更新 ffmpeg、HandBrake 等之前必须做大量测试;但如果个人用户在自己的本地安装里单独升级这些可执行文件,会有风险吗?(需要的话我可以另开帖讨论)

歡迎隨時更新並在此繼續討論

我以前更新过 HandBrake,没有任何问题,但如果 HandBrake 的语法发生变化,可能会导致问题。你似乎不太可能遇到问题,但我也认为除非有充分的理由,否则你不应该这样做。