收藏
回答

canvas WebGL ConText如何回收?

我开发的小程序有两个页面,两个页面会来回切换,每个页面中都会获取webgl context

const gl = canvas.getContext("webgl", {
  ...WEBGL_CONTEXT_ATTRIBUTES,
  ...contextAttributes
});

然后绘制一些内容,在页面切换时会调用emsdk提供的接口销毁webgl context

deleteContext: function(contextHandle) {
  if (GL.currentContext === GL.contexts[contextHandle])
    GL.currentContext = null;
  if (typeof JSEvents == "object")
    JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);
  if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas)
    GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0;
  GL.contexts[contextHandle] = null;
}


在多次切换页面后,会出现如下错误,请问有人遇到过类似问题吗

05-20 20:58:57.517 27514 26467 V NativeCrash: Found abort message: eglCreateContext : EGL error: 0x3003

05-20 20:58:58.102 27623 27623 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

05-20 20:58:58.102 27623 27623 F DEBUG   : Build fingerprint: 'HONOR/PTP-AN00/HNPLP:15/HONORPTP-AN00/9.0.0.169C00E167R102P6:user/release-keys'

05-20 20:58:58.102 27623 27623 F DEBUG   : Revision: '0'

05-20 20:58:58.102 27623 27623 F DEBUG   : ABI: 'arm64'

05-20 20:58:58.102 27623 27623 F DEBUG   : Timestamp: 2025-05-20 20:58:57.910763490+0800

05-20 20:58:58.102 27623 27623 F DEBUG   : Process uptime: 154s

05-20 20:58:58.102 27623 27623 F DEBUG   : Cmdline: com.tencent.mm:appbrand0

05-20 20:58:58.102 27623 27623 F DEBUG   : pid: 25479, tid: 26467, name: MB.GLThread#0  >>> com.tencent.mm:appbrand0 <<<

05-20 20:58:58.102 27623 27623 F DEBUG   : uid: 10240

05-20 20:58:58.102 27623 27623 F DEBUG   : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)

05-20 20:58:58.102 27623 27623 F DEBUG   : pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)

05-20 20:58:58.102 27623 27623 F DEBUG   : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------

05-20 20:58:58.102 27623 27623 F DEBUG   : Abort message: 'eglCreateContext : EGL error: 0x3003'

05-20 20:58:58.102 27623 27623 F DEBUG   :     x0  0000000000000000  x1  0000000000006763  x2  0000000000000006  x3  0000006cdaf2bcd0

05-20 20:58:58.102 27623 27623 F DEBUG   :     x4  2e00000000000000  x5  2e00000000000000  x6  2e00000000000000  x7  000000000000002e

05-20 20:58:58.102 27623 27623 F DEBUG   :     x8  00000000000000f0  x9  00000073b2aa3108  x10 fffffe00fffffbdf  x11 0000000000000000

05-20 20:58:58.102 27623 27623 F DEBUG   :     x12 000000000000003a  x13 0000000000000004  x14 ffffffffffffffff  x15 000000b8b9b970e2

05-20 20:58:58.102 27623 27623 F DEBUG   :     x16 00000073b2b53240  x17 00000073b2b3e9c0  x18 0000006cd70b0000  x19 0000000000006387

05-20 20:58:58.102 27623 27623 F DEBUG   :     x20 0000000000006763  x21 00000000ffffffff  x22 00000070d7a0e470  x23 000000718e496660

05-20 20:58:58.102 27623 27623 F DEBUG   :     x24 0000000000000000  x25 0000000000000000  x26 0000006cdaf2ca80  x27 00000072d04d46c0

05-20 20:58:58.102 27623 27623 F DEBUG   :     x28 00000071f0c9f160  x29 0000006cdaf2bd50

05-20 20:58:58.102 27623 27623 F DEBUG   :     lr  00000073b2adcd44  sp  0000006cdaf2bcb0  pc  00000073b2adcd74  pst 0000000000001000

05-20 20:58:58.102 27623 27623 F DEBUG   : 16 total frames

05-20 20:58:58.102 27623 27623 F DEBUG   : backtrace:

05-20 20:58:58.102 27623 27623 F DEBUG   :       #00 pc 000000000005dd74  /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) (BuildId: dab5250ce65b5876abcacb0e098e06e5)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #01 pc 000000000092a6b4  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+368) (BuildId: ac5cce913a0eb54b0e6e1d17999a82ed)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #02 pc 00000000000140fc  /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_0::__invoke(char const*)+80) (BuildId: 5b8b833c034c0c27a842b0934ed3593c)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #03 pc 000000000000af60  /system/lib64/liblog.so (__android_log_assert+288) (BuildId: 10184ae81a457e21f1a78e63e213ef30)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #04 pc 000000000035ad40  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #05 pc 0000000000352720  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #06 pc 0000000000185a5c  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #07 pc 000000000015c9b0  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #08 pc 000000000015facc  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #09 pc 0000000000159fa8  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #10 pc 00000000001598cc  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #11 pc 00000000001597a4  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #12 pc 000000000015f3d4  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #13 pc 00000000001615ec  /data/app/~~H0RFBQX9TLqP71SvVMxMJQ==/com.tencent.mm-u3ZTj5LDlCIfXM1rT96Lug==/lib/arm64/libmagicbrush.so (BuildId: 29e3b4ce6cad07265f5257e14f52f782418bd3ee)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #14 pc 000000000006eafc  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+196) (BuildId: dab5250ce65b5876abcacb0e098e06e5)

05-20 20:58:58.102 27623 27623 F DEBUG   :       #15 pc 0000000000061664  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: dab5250ce65b5876abcacb0e098e06e5)
回答关注问题邀请回答
收藏
登录 后发表内容