#lua虚拟机崩溃#云风老师您好,我现在遇到一个问题,就是在程序运行中lua虚拟机会崩溃,堆栈显示崩溃在lua的源码里面,我想问您的是,执行lua脚本能否导致lua虚拟机崩溃(有大量的逻辑非常复杂的脚本),希望您能帮助我们,十分感谢。
非常感谢您能回复我,云风老师我再描述详细一点,我们的lua用的是4.0的版本(更新版本的代价实在是太大),每次崩溃都甭在lua虚拟机垃圾回收的时候,lua栈里有一些无效的指针,我们检查实在不可能是其它成员越界改写了lua内存。我想知道的是什么样的错误才能导致在lua回收垃圾的时候程序崩溃。 - 回复 | (2617) | bailu_1901 | 2013-01-07 10:01:05
gc 方法 (在 lua 4.0 中叫 tag method)的错误使用(C 对象已经被释放, 导致悬空指针). 以及 lua core 被重复链接, 都是常见了错误.
另外 lua 4.0 的 gc 使用的是全扫描, 比 lua 5 要简单的多。所以问题也应该更容易查出来。 - 回复 | (2621) | 云风 | 2013-01-10 01:47:16
问题已经解决,感谢。原因是上层代码导致在lua脚本里调用完c++接口后没有正常退回到lua状态机中,栈中的obj没有正常退栈,然后在下一次gc的时候程序就崩溃了。 - 回复 | (2624) | bailu_1901 | 2013-01-22 06:02:13