3.7 原生定时器回调出错导致界面卡死

  • Creator 版本: 3.7.0,3.7.2,3.7.3

  • 目标平台:模拟器

  • 重现方式:

开新项目,场景上放上一个脚本,模拟器运行。

@ccclass('NewComponent')

export class NewComponent extends Component {
start() {
setTimeout(()=>{
throw ‘wrong’
},1000);
}

update(deltaTime: number) {
    
}

}

只要其callback出错,setTimeout或setInterval会立刻重调,不断抛出下列错误

  • 首个报错:

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLocal.

15:48:15 [ERROR]: JS: v8::ToLocalChecked Empty MaybeLocal. (no stack information)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 754): Invoking function failed, (null)

15:48:15 [ERROR]: [SE_ERROR] (E:\editor_3d\v3.7.3\resources\3d\engine\native\cocos\bindings\jswrapper\v8\Object.cpp, 764): Invoking function (000001CD3A530C60) failed!

15:48:15 [ERROR]: E/ [FATAL ERROR] location: v8::ToLocalChecked, message: Empty MaybeLo

  • 编辑器操作系统:
  • 重现概率: 必现

我试了几个版本,都是如此。
由于这个错误实在过于离谱,以至于开始我以为是我电脑或者工程的问题。还是说这根本就不是一个错误??

NewProject1111.rar (17.0 KB)

这都没人理啊?

生命周期的函数,尽量不要出错,如果保证不了,加try-catch


这根本就不是解决办法,原生和web的表现不是不一致,而是差了十万八千里。定时器出错把整个界面卡死,哪有这样的。

我赞同你说的,但是就是这样的

第一个报错是什么?

不是很清楚.
原因是web-adapter以及schedule的js实现,没有和web行为保持一致