我在C#中制作一个IRC机器人,并希望通过命令使Lua可执行。我已经有了这个工作,并克服了一些基本障碍,但现在我遇到了一个更大的StackOverflowException问题;我的朋友给了我一些Lua代码来运行,每次都会导致StackOverflowException,无论我多么努力地阻止它。
print(string.find(string.rep("a", 2^20), string.rep(".?", 2^20)))
因此,使用LuaInterface(准确地说是LuaInterface 2.0.0.16708)执行此操作 - 我的代码中出现了StackOverflowException,而且我似乎无法解决这个问题,看看之前的一些问题。 / p>
我知道在执行它之前解析代码以预测堆栈溢出很难,所以我不知道如何绕过它。我已经尝试过多线程(它解决了以前的问题,导致代码无法将控制权返回给C#),但这似乎没有帮助。
答案 0 :(得分:0)
要解决该特定错误,请使用Lua 5.2.2或更新版本。案例是a reported bug,在版本5.2.2中得到修复。它反而给出了“模式太复杂”的错误。
就沙盒化而言,为什么不按照the Lua live demo中的建议在this SO answer之后制作它?我不知道它有多安全,但我认为作者既有激励又有能力使其尽可能安全。来源可以从here找到。