CrendKing / avisynth_filter

DirectShow filters that put AviSynth and VapourSynth into video playing
MIT License
107 stars 8 forks source link

MPC-BE crashed on start up when playing media file #58

Closed aloola18 closed 2 years ago

aloola18 commented 2 years ago

my mpc-be crashed when I play file in the folder with the name:

【MMD】MAMAMOO - gogobebe

turning off AVSF and I can play the file normally. avsf ver 1.1.6

I use the plugin with SVP.

CrendKing commented 2 years ago

Are you suggesting if you change the folder name without changing anything else, it would not crash? And what if you put a video that does crash into that folder will it start to crash?

Can you provide log?

aloola18 commented 2 years ago

changing only the folder name and it wouldn't crash anymore. https://cdn.discordapp.com/attachments/290709370600423424/863724065922744330/mpc-be64.exe.1.5.8.6302.dmp here is the dump file

The video file https://1drv.ms/u/s!AvZFs4-QK6gCgYsmrBQhhHXcCKX5QA?e=jranas

CrendKing commented 2 years ago

The root cause is basically a problem in AviSynthPlus that can't handle Unicode characters (e.g. ) in file path, described in https://developercommunity.visualstudio.com/t/stdfilesystempathgeneric-string-throws-an-exceptio/721120. This problem doesn't happen in MPC-HC because it would instead set current directory to it's executable's folder. There is nothing I can do.

You can do two things: 1) Open an issue to AviSynthPlus to suggest them handling these Unicode characters in their future versions. However, since SVP can't use any AVS+ version beyond 3.5.1 right now, it won't solve your problem. 2) Switch to the VapourSynth variant, which handles the Unicode characters and is already supported by SVP.

Of course, you can also rename the video directory/filename to not have these characters.


Relevant stack trace:

AviSynth.dll!std::filesystem::_Throw_system_error_from_std_win_error(const __std_win_error _Errno) Line 51
AviSynth.dll!std::filesystem::_Check_convert_result(const __std_fs_convert_result _Result) Line 58
AviSynth.dll!std::filesystem::_Convert_wide_to_narrow<std::char_traits<char>,std::allocator<char>>(const __std_code_page _Code_page, const std::basic_string_view<wchar_t,std::char_traits<wchar_t>> _Input, const std::allocator<char> & _Al) Line 91
AviSynth.dll!std::filesystem::_Convert_wide_to<std::char_traits<char>,std::allocator<char>,char>(const std::basic_string_view<wchar_t,std::char_traits<wchar_t>> _Input, const std::allocator<char> & _Al) Line 196
AviSynth.dll!std::filesystem::path::generic_string<char,std::char_traits<char>,std::allocator<char>,0>(const std::allocator<char> & _Al) Line 1031
AviSynth.dll!std::filesystem::path::generic_string() Line 1036
AviSynth.dll!GetFullPathNameWrap(const std::string & f) Line 116
AviSynth.dll!PluginManager::AddAutoloadDir(const std::string & dirPath, bool toFront) Line 624
AviSynth.dll!ScriptEnvironment::ScriptEnvironment() Line 2281
AviSynth.dll!CreateScriptEnvironment2(int version) Line 5081
AviSynth.dll!CreateScriptEnvironment(int version) Line 5054
avisynth_filter_64.ax!SynthFilter::FrameServerCommon::CreateEnv() Line 53