> char msg_s[2000]; //→仮置きに十分な大きさ
> vsprintf(msg_s, err_msg, args);
これはやめとけ、snprintfとかにしとけ。

>void Err(const char err_msg[], ...)
引数の...もいやだね。