Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.6.3] Android WebSocket Crash [Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnClosed] #14730

Closed
zhitaocai opened this issue Apr 6, 2023 · 36 comments
Assignees
Labels
Bug Env: Android Env: Native General issue on all native platforms including iOS, Android, MacOS, Windows Module: Network P2
Milestone

Comments

@zhitaocai
Copy link

Cocos Creator version

3.6.3

System information

Android 10, Android 11, Android 12, Android 13

Issue description

我们最近采用了 3.6.3 版本的 Cocos Creator 做了一款游戏,用到了 WebSocket,在我们发布到 Google Play 后,发现线上应用出现大量的崩溃信息,关键信息为 Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnClosed

Relevant error log output

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 31123 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061df34  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnClosed+80)
  #01  pc 0x000000000007c090  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.odex (art_jni_trampoline+176)
  #02  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x00000000001460ac  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #04  pc 0x00000000002e3758  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #05  pc 0x00000000002df850  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+656)
  #06  pc 0x00000000005a7c18  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirectRange+256)
  #07  pc 0x0000000000131c14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54a38  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onClosed+80)
  #09  pc 0x00000000005a8d90  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #10  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x00000000013461ce  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (d1.a.onReadClose+106)
  #12  pc 0x00000000005a4364  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #13  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #14  pc 0x0000000001346700  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (d1.c.b+296)
  #15  pc 0x00000000005a4f00  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirect+1168)
  #16  pc 0x0000000000131914  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct+20)
  #17  pc 0x00000000013465b6  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (d1.c.a+14)
  #18  pc 0x00000000005a8d90  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #19  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 0x000000000134614a  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (d1.a.k+14)
  #21  pc 0x00000000005a8d90  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #22  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #23  pc 0x000000000134578a  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (d1.a$b.a+150)
  #24  pc 0x00000000005a4364  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #25  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #26  pc 0x00000000013919da  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (t0.w$b.e+38)
  #27  pc 0x00000000005a8d90  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #28  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #29  pc 0x0000000001393e02  /data/app/com.example.xxx-PdcsvX2n1kD4PYiOVQlqcA==/oat/arm64/base.vdex (u0.b.run+34)
  #30  pc 0x00000000002b4088  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.13310094408155829753)+240)
  #31  pc 0x0000000000593d00  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1024)
  #32  pc 0x0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #33  pc 0x00000000003095c8  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #34  pc 0x0000000000306c30  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #35  pc 0x00000000001b3d98  /system/framework/arm64/boot.oat (java.lang.Thread.run+72)
  #36  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #37  pc 0x00000000001460ac  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #38  pc 0x00000000004b2da0  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #39  pc 0x00000000004b3e50  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #40  pc 0x00000000004f43a8  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #41  pc 0x00000000000e5614  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #42  pc 0x0000000000085458  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Steps to reproduce

我们尝试了很多方法,自己的测试机子没法重现

Minimal reproduction project

没法重现

@zhitaocai zhitaocai added Bug Needs Triage Needs to be assigned by the team labels Apr 6, 2023
@zhitaocai zhitaocai changed the title 3.6.3 Android WebSocket Crash [Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnClosed] [3.6.3] Android WebSocket Crash [Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnClosed] Apr 6, 2023
@jareguo jareguo added Module: Network and removed Needs Triage Needs to be assigned by the team labels Apr 6, 2023
@zhitaocai
Copy link
Author

我们曾经尝试过修改 CocosWebSocket.java 里面的超时时间设置,但是修改上线后,问题依旧存在,以下为我们最新的改动

修改了以下3个超时设置

.readTimeout(10 * 1000, TimeUnit.MILLISECONDS)
.writeTimeout(10 * 1000, TimeUnit.MILLISECONDS)
.connectTimeout(10 * 1000, TimeUnit.MILLISECONDS);

新增了 pingInterval

.pingInterval(3 * 1000, TimeUnit.MILLISECONDS)

@minggo minggo added Env: Native General issue on all native platforms including iOS, Android, MacOS, Windows Env: Android labels Apr 6, 2023
@minggo
Copy link
Contributor

minggo commented Apr 6, 2023

@mmyduckx please take a look. If i remember correctly, it is fixed in upper version.

@zhitaocai
Copy link
Author

刚刚去GooglePlay后台在看了一下,还有其他类似的错误

  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError
  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage
  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnOpen

Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 3540 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061e310  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError+76)
  #01  pc 0x000000000007bf78  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.odex (art_jni_trampoline+168)
  #02  pc 0x0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x00000000001a97e8  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #04  pc 0x000000000031bfc8  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #05  pc 0x0000000000313210  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+696)
  #06  pc 0x000000000068d0b4  /apex/com.android.art/lib64/libart.so (MterpInvokeDirectRange+436)
  #07  pc 0x000000000012dc14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54b24  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onFailure+108)
  #09  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #10  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x000000000134602e  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a.i+66)
  #12  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #13  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #14  pc 0x00000000013463da  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a.o+158)
  #15  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #16  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #17  pc 0x0000000001345880  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a$f.run+4)
  #18  pc 0x0000000000309458  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.14335664216214821213)+264)
  #19  pc 0x0000000000676040  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+776)
  #20  pc 0x000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #21  pc 0x00000000001b97d4  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.Executors$RunnableAdapter.call+68)
  #22  pc 0x00000000002487fc  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.FutureTask.runAndReset+204)
  #23  pc 0x00000000002e55b4  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+164)
  #24  pc 0x00000000002a7ff8  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #25  pc 0x00000000002a5010  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #26  pc 0x000000000015f1c8  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+72)
  #27  pc 0x0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #28  pc 0x00000000001a97e8  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #29  pc 0x000000000055e35c  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
  #30  pc 0x00000000005ae18c  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308)
  #31  pc 0x00000000000db188  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #32  pc 0x000000000007a9d0  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 16023 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061d790  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage+76)
  #01  pc 0x000000000007bf78  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.odex (art_jni_trampoline+168)
  #02  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #04  pc 0x00000000002e3618  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #05  pc 0x00000000002df928  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+692)
  #06  pc 0x00000000005a6f74  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirectRange+260)
  #07  pc 0x0000000000131c14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54b6c  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onMessage+28)
  #09  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #10  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x000000000134623c  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a.b+4)
  #12  pc 0x00000000005a376c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788)
  #13  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #14  pc 0x0000000001346aee  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.c.e+122)
  #15  pc 0x00000000005a4258  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirect+1100)
  #16  pc 0x0000000000131914  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct+20)
  #17  pc 0x00000000013465be  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.c.a+22)
  #18  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #19  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 0x000000000134614a  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a.k+14)
  #21  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #22  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #23  pc 0x000000000134578a  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a$b.a+150)
  #24  pc 0x00000000005a376c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788)
  #25  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #26  pc 0x00000000013919da  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (t0.w$b.e+38)
  #27  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #28  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #29  pc 0x0000000001393e02  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (u0.b.run+34)
  #30  pc 0x00000000002b492c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.8513653942788344775)+240)
  #31  pc 0x00000000005931f4  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032)
  #32  pc 0x0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #33  pc 0x00000000002fa948  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #34  pc 0x00000000002f7fb0  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #35  pc 0x00000000001a5618  /system/framework/arm64/boot.oat (java.lang.Thread.run+72)
  #36  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #37  pc 0x0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #38  pc 0x00000000004b1924  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #39  pc 0x00000000004b2a38  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #40  pc 0x00000000004f39a4  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #41  pc 0x00000000000e6f10  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #42  pc 0x00000000000850c8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

@zhitaocai
Copy link
Author

我们这边游戏接入了聚合广告,以上的崩溃日志,在GooglePlay后台上,大概6成左右是在后台时发生(但是还是有相当一部分在前台发生)

我们猜测和用户跳转到广告播放有关系,提供一些想法,不知道是否可以

  1. CocosActivity 是 singleTask 模式的,受限于手机性能,在用户跳转到广告的Activity时,CocosActivity 已经不可见了,同时我们发现有些手机此时已经是进入低内存模式了,我们怀疑一段时间后,CocosActivity 已经被释放回收了。那么假设此时 okhttp 的 ws 触发 onclose 操作,再而回调相应的 native 方法,此时,是否会有可能导致这个问题呢?

  2. GlobalObject.setActivity() 在 CocosActivity.onCreate 的时候就持有 CocosActivity 实例,但是没看到释放的调用,是否会导致一些内存泄漏,是否可能会引起这类问题呢?

@minggo
Copy link
Contributor

minggo commented Apr 7, 2023

Thanks, please use english in future.

@zhitaocai
Copy link
Author

Have you started to follow up on this issue? We're really looking forward to some feedback, anything is fine

@minggo
Copy link
Contributor

minggo commented Apr 10, 2023

@mmyduckx please take a look.

@minggo minggo added the P1 Must be finished in the milestone label Apr 10, 2023
@minggo minggo added this to the v3.7.3 milestone Apr 10, 2023
@mmyduckx
Copy link
Contributor

刚刚去GooglePlay后台在看了一下,还有其他类似的错误

  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError
  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage
  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnOpen

Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 3540 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061e310  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError+76)
  #01  pc 0x000000000007bf78  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.odex (art_jni_trampoline+168)
  #02  pc 0x0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x00000000001a97e8  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #04  pc 0x000000000031bfc8  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #05  pc 0x0000000000313210  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+696)
  #06  pc 0x000000000068d0b4  /apex/com.android.art/lib64/libart.so (MterpInvokeDirectRange+436)
  #07  pc 0x000000000012dc14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54b24  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onFailure+108)
  #09  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #10  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x000000000134602e  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a.i+66)
  #12  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #13  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #14  pc 0x00000000013463da  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a.o+158)
  #15  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #16  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #17  pc 0x0000000001345880  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a$f.run+4)
  #18  pc 0x0000000000309458  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.14335664216214821213)+264)
  #19  pc 0x0000000000676040  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+776)
  #20  pc 0x000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #21  pc 0x00000000001b97d4  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.Executors$RunnableAdapter.call+68)
  #22  pc 0x00000000002487fc  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.FutureTask.runAndReset+204)
  #23  pc 0x00000000002e55b4  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+164)
  #24  pc 0x00000000002a7ff8  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #25  pc 0x00000000002a5010  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #26  pc 0x000000000015f1c8  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+72)
  #27  pc 0x0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #28  pc 0x00000000001a97e8  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #29  pc 0x000000000055e35c  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
  #30  pc 0x00000000005ae18c  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308)
  #31  pc 0x00000000000db188  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #32  pc 0x000000000007a9d0  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 16023 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061d790  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage+76)
  #01  pc 0x000000000007bf78  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.odex (art_jni_trampoline+168)
  #02  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #04  pc 0x00000000002e3618  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #05  pc 0x00000000002df928  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+692)
  #06  pc 0x00000000005a6f74  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirectRange+260)
  #07  pc 0x0000000000131c14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54b6c  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onMessage+28)
  #09  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #10  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x000000000134623c  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a.b+4)
  #12  pc 0x00000000005a376c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788)
  #13  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #14  pc 0x0000000001346aee  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.c.e+122)
  #15  pc 0x00000000005a4258  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirect+1100)
  #16  pc 0x0000000000131914  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct+20)
  #17  pc 0x00000000013465be  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.c.a+22)
  #18  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #19  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 0x000000000134614a  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a.k+14)
  #21  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #22  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #23  pc 0x000000000134578a  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a$b.a+150)
  #24  pc 0x00000000005a376c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788)
  #25  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #26  pc 0x00000000013919da  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (t0.w$b.e+38)
  #27  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #28  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #29  pc 0x0000000001393e02  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (u0.b.run+34)
  #30  pc 0x00000000002b492c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.8513653942788344775)+240)
  #31  pc 0x00000000005931f4  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032)
  #32  pc 0x0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #33  pc 0x00000000002fa948  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #34  pc 0x00000000002f7fb0  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #35  pc 0x00000000001a5618  /system/framework/arm64/boot.oat (java.lang.Thread.run+72)
  #36  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #37  pc 0x0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #38  pc 0x00000000004b1924  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #39  pc 0x00000000004b2a38  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #40  pc 0x00000000004f39a4  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #41  pc 0x00000000000e6f10  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #42  pc 0x00000000000850c8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Have you capture any log related onFailure Error when crashed by nativeOnError
image

@zhitaocai
Copy link
Author

刚刚去GooglePlay后台在看了一下,还有其他类似的错误

  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError
  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage
  • Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnOpen

Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 3540 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061e310  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError+76)
  #01  pc 0x000000000007bf78  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.odex (art_jni_trampoline+168)
  #02  pc 0x0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x00000000001a97e8  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #04  pc 0x000000000031bfc8  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #05  pc 0x0000000000313210  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+696)
  #06  pc 0x000000000068d0b4  /apex/com.android.art/lib64/libart.so (MterpInvokeDirectRange+436)
  #07  pc 0x000000000012dc14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54b24  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onFailure+108)
  #09  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #10  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x000000000134602e  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a.i+66)
  #12  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #13  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #14  pc 0x00000000013463da  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a.o+158)
  #15  pc 0x000000000068e2f8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+1344)
  #16  pc 0x0000000000131594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #17  pc 0x0000000001345880  /data/app/~~pfrP5XPpC9jUkiaYWUTowA==/com.example.xxx-kASuBL_VlrOBVc-OZ5tz_g==/oat/arm64/base.vdex (d1.a$f.run+4)
  #18  pc 0x0000000000309458  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.14335664216214821213)+264)
  #19  pc 0x0000000000676040  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+776)
  #20  pc 0x000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #21  pc 0x00000000001b97d4  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.Executors$RunnableAdapter.call+68)
  #22  pc 0x00000000002487fc  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.FutureTask.runAndReset+204)
  #23  pc 0x00000000002e55b4  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+164)
  #24  pc 0x00000000002a7ff8  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #25  pc 0x00000000002a5010  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #26  pc 0x000000000015f1c8  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+72)
  #27  pc 0x0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #28  pc 0x00000000001a97e8  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #29  pc 0x000000000055e35c  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
  #30  pc 0x00000000005ae18c  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308)
  #31  pc 0x00000000000db188  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #32  pc 0x000000000007a9d0  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 16023 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x000000000061d790  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/split_config.arm64_v8a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage+76)
  #01  pc 0x000000000007bf78  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.odex (art_jni_trampoline+168)
  #02  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #03  pc 0x0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #04  pc 0x00000000002e3618  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #05  pc 0x00000000002df928  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+692)
  #06  pc 0x00000000005a6f74  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirectRange+260)
  #07  pc 0x0000000000131c14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #08  pc 0x0000000000b54b6c  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onMessage+28)
  #09  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #10  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #11  pc 0x000000000134623c  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a.b+4)
  #12  pc 0x00000000005a376c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788)
  #13  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #14  pc 0x0000000001346aee  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.c.e+122)
  #15  pc 0x00000000005a4258  /apex/com.android.runtime/lib64/libart.so (MterpInvokeDirect+1100)
  #16  pc 0x0000000000131914  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_direct+20)
  #17  pc 0x00000000013465be  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.c.a+22)
  #18  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #19  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 0x000000000134614a  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a.k+14)
  #21  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #22  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #23  pc 0x000000000134578a  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (d1.a$b.a+150)
  #24  pc 0x00000000005a376c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1788)
  #25  pc 0x0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #26  pc 0x00000000013919da  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (t0.w$b.e+38)
  #27  pc 0x00000000005a809c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #28  pc 0x0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #29  pc 0x0000000001393e02  /data/app/com.example.xxx-jGcXuKfDvWBNNrZVDqUAzw==/oat/arm64/base.vdex (u0.b.run+34)
  #30  pc 0x00000000002b492c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.8513653942788344775)+240)
  #31  pc 0x00000000005931f4  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032)
  #32  pc 0x0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #33  pc 0x00000000002fa948  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #34  pc 0x00000000002f7fb0  /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #35  pc 0x00000000001a5618  /system/framework/arm64/boot.oat (java.lang.Thread.run+72)
  #36  pc 0x0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #37  pc 0x0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #38  pc 0x00000000004b1924  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #39  pc 0x00000000004b2a38  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #40  pc 0x00000000004f39a4  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #41  pc 0x00000000000e6f10  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #42  pc 0x00000000000850c8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Have you capture any log related onFailure Error when crashed by nativeOnError image

We have received the onFailure callback message on our test machine, but most of it is caused by the switching of our network, such as turning off wifi will call back. But this doesn't cause a crash. In the crash log of online users, the log output information cannot be received

@mmyduckx
Copy link
Contributor

我们这边游戏接入了聚合广告,以上的崩溃日志,在GooglePlay后台上,大概6成左右是在后台时发生(但是还是有相当一部分在前台发生)

我们猜测和用户跳转到广告播放有关系,提供一些想法,不知道是否可以

  1. CocosActivity 是 singleTask 模式的,受限于手机性能,在用户跳转到广告的Activity时,CocosActivity 已经不可见了,同时我们发现有些手机此时已经是进入低内存模式了,我们怀疑一段时间后,CocosActivity 已经被释放回收了。那么假设此时 okhttp 的 ws 触发 onclose 操作,再而回调相应的 native 方法,此时,是否会有可能导致这个问题呢?

If onClosed has been called, nativeOnClosed will be called synchronized. In this condition, other native function like nativeOnOpen nativeOnBinaryMessage nativeOnError shouldn't be called.
image
But in your condition, onClosed may not call as expect and call other native funciton so get crash.

@zhitaocai
Copy link
Author

我们这边游戏接入了聚合广告,以上的崩溃日志,在GooglePlay后台上,大概6成左右是在后台时发生(但是还是有相当一部分在前台发生)
我们猜测和用户跳转到广告播放有关系,提供一些想法,不知道是否可以

  1. CocosActivity 是 singleTask 模式的,受限于手机性能,在用户跳转到广告的Activity时,CocosActivity 已经不可见了,同时我们发现有些手机此时已经是进入低内存模式了,我们怀疑一段时间后,CocosActivity 已经被释放回收了。那么假设此时 okhttp 的 ws 触发 onclose 操作,再而回调相应的 native 方法,此时,是否会有可能导致这个问题呢?

If onClosed has been called, nativeOnClosed will be called synchronized. In this condition, other native function like nativeOnOpen nativeOnBinaryMessage nativeOnError shouldn't be called. image But in your condition, onClosed may not call as expect and call other native funciton so get crash.

"If onClosed has been called, nativeOnClosed will be called synchronized."

I agree with this, but then it crashes

@mmyduckx
Copy link
Contributor

@zhitaocai Try this patch and keep record.
Don't forget to do fully test before pushing to users.

diff --git a/native/cocos/engine/Engine.cpp b/native/cocos/engine/Engine.cpp
index c0636c3d49..5b738aa076 100644
--- a/native/cocos/engine/Engine.cpp
+++ b/native/cocos/engine/Engine.cpp
@@ -187,6 +187,10 @@ void Engine::destroy() {
 #if CC_USE_MIDDLEWARE
     cc::middleware::MiddlewareManager::destroyInstance();
 #endif
+    
+#if CC_USE_SOCKET
+     cc::network::WebSocket::closeAllConnections();
+#endif
 
     CCObject::deferredDestroy();

@zhitaocai
Copy link
Author

Received, thanks for the reply~, we will arrange the test immediately

@mmyduckx mmyduckx moved this from Todo to In Progress in PAL & Infrastructure Apr 12, 2023
@mmyduckx
Copy link
Contributor

Received, thanks for the reply~, we will arrange the test immediately

Please let us know if it works, as we don't have a reproducible demo that you state above :)

@zhitaocai
Copy link
Author

At present, we have not found any major problems in our self-test. It seems that we still need to run it online on a large scale. We are currently expecting to bring it to GooglePlay this Friday

@zhitaocai
Copy link
Author

If the GooglePlay review goes well, we expect to get the results next week, and we will come back and update the results of this issue at that time

@mmyduckx
Copy link
Contributor

Thanks for your cooperation!

If the GooglePlay review goes well, we expect to get the results next week, and we will come back and update the results of this issue at that time

Thanks for your cooperation!

@zhitaocai
Copy link
Author

The review has passed, and we are distributing the new version on a small scale.

At present, the amount of data is relatively small, but similar crash information still exists.

In particular, in this version, in addition to making modifications according to the suggestions provided, we also upgraded the engine version from 3.6.3 to 3.7.1, but similar errors still exist.

The following is the latest crash information:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 15953 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x00000000004db268  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/split_config.armeabi_v7a.apk!libcocos.so (Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnClosed+48)
  #01  pc 0x0000000000079eab  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.odex (art_jni_trampoline+130)
  #02  pc 0x00000000000d3bd5  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
  #03  pc 0x00000000004eb7e3  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub+282)
  #04  pc 0x000000000012bf2d  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+148)
  #05  pc 0x000000000023f6d7  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+254)
  #06  pc 0x0000000000238051  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+564)
  #07  pc 0x00000000004e1e43  /apex/com.android.art/lib/libart.so (MterpInvokeDirectRange+390)
  #08  pc 0x00000000000cea14  /apex/com.android.art/lib/libart.so (mterp_op_invoke_direct_range+20)
  #09  pc 0x0000000000b42b78  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (com.cocos.lib.websocket.CocosWebSocket.onClosed+80)
  #10  pc 0x00000000004e2e93  /apex/com.android.art/lib/libart.so (MterpInvokeVirtualQuick+1186)
  #11  pc 0x00000000000d2394  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual_quick+20)
  #12  pc 0x0000000001327626  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (e1.a.onReadClose+106)
  #13  pc 0x00000000004de6a1  /apex/com.android.art/lib/libart.so (MterpInvokeInterface+1524)
  #14  pc 0x00000000000ce814  /apex/com.android.art/lib/libart.so (mterp_op_invoke_interface+20)
  #15  pc 0x0000000001327b58  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (e1.c.b+296)
  #16  pc 0x00000000004df1bd  /apex/com.android.art/lib/libart.so (MterpInvokeDirect+1116)
  #17  pc 0x00000000000ce714  /apex/com.android.art/lib/libart.so (mterp_op_invoke_direct+20)
  #18  pc 0x0000000001327a0e  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (e1.c.a+14)
  #19  pc 0x00000000004e2e93  /apex/com.android.art/lib/libart.so (MterpInvokeVirtualQuick+1186)
  #20  pc 0x00000000000d2394  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual_quick+20)
  #21  pc 0x00000000013275a2  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (e1.a.k+14)
  #22  pc 0x00000000004e2e93  /apex/com.android.art/lib/libart.so (MterpInvokeVirtualQuick+1186)
  #23  pc 0x00000000000d2394  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual_quick+20)
  #24  pc 0x0000000001326be2  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (e1.a$b.b+150)
  #25  pc 0x00000000004de6a1  /apex/com.android.art/lib/libart.so (MterpInvokeInterface+1524)
  #26  pc 0x00000000000ce814  /apex/com.android.art/lib/libart.so (mterp_op_invoke_interface+20)
  #27  pc 0x0000000001370f3e  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (u0.w$b.e+38)
  #28  pc 0x00000000004e2e93  /apex/com.android.art/lib/libart.so (MterpInvokeVirtualQuick+1186)
  #29  pc 0x00000000000d2394  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual_quick+20)
  #30  pc 0x0000000001373366  /data/app/~~C5SvCSRkg7ZHoZIA_B_Bmw==/com.example.xxx-bYJneV8egE-W9MF-Y6SkXQ==/oat/arm/base.vdex (v0.b.run+34)
  #31  pc 0x0000000000230391  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.270406214262585567)+248)
  #32  pc 0x0000000000236b01  /apex/com.android.art/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+120)
  #33  pc 0x00000000004ce7db  /apex/com.android.art/lib/libart.so (artQuickToInterpreterBridge+698)
  #34  pc 0x00000000000d8761  /apex/com.android.art/lib/libart.so (art_quick_to_interpreter_bridge+32)
  #35  pc 0x0000000000187257  /apex/com.android.art/javalib/arm/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+1014)
  #36  pc 0x0000000000184de7  /apex/com.android.art/javalib/arm/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+54)
  #37  pc 0x00000000000dfad1  /apex/com.android.art/javalib/arm/boot.oat (java.lang.Thread.run+64)
  #38  pc 0x00000000000d3bd5  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
  #39  pc 0x00000000004eb7e3  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub+282)
  #40  pc 0x000000000012bf2d  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+148)
  #41  pc 0x00000000003f8b27  /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+374)
  #42  pc 0x00000000003f8c37  /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+42)
  #43  pc 0x000000000043a165  /apex/com.android.art/lib/libart.so (art::Thread::CreateCallback(void*)+1056)
  #44  pc 0x00000000000aacf3  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40)
  #45  pc 0x0000000000064063  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)

@mmyduckx
Copy link
Contributor

Got it. We will investigate further.
And still have crash about Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError
Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage
Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnOpen related above?

@zhitaocai
Copy link
Author

Got it. We will investigate further. And still have crash about Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnError Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnBinaryMessage Java_com_cocos_lib_websocket_CocosWebSocket_nativeOnOpen related above?

yes, still have

@zhitaocai
Copy link
Author

Just now I also found a new crash information that may be related to this problem, I hope it will help to solve this problem

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 3217 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x0000000000e1f15c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (v8::internal::GlobalHandles::NodeSpace<v8::internal::GlobalHandles::Node>::Release(v8::internal::GlobalHandles::Node*)+1339392)
  #01  pc 0x00000000007952e0  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::ObjectWrap::~ObjectWrap()+48)
  #02  pc 0x0000000000791590  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Object::~Object()+84)
  #03  pc 0x00000000007915d4  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Object::~Object()+16)
  #04  pc 0x000000000079e924  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Value::reset(se::Value::Type)+112)
  #05  pc 0x000000000079f204  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Value::~Value()+12)
  #06  pc 0x00000000007694b0  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (JsbWebSocketDelegate::~JsbWebSocketDelegate()+88)
  #07  pc 0x00000000007694f8  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (JsbWebSocketDelegate::~JsbWebSocketDelegate()+16)
  #08  pc 0x000000000076a21c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (JsbWebSocketDelegate::onClose(cc::network::WebSocket*, unsigned short, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, bool)+568)
  #09  pc 0x0000000000621ca4  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::Scheduler::update(float)+416)
  #10  pc 0x0000000000626118  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::Engine::tick()+152)
  #11  pc 0x000000000062aa14  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::AndroidPlatform::loop()+408)
  #12  pc 0x000000000062a86c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::AndroidPlatform::run(int, char const**)+16)
  #13  pc 0x000000000077a77c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (android_app_entry+1339392)
  #14  pc 0x00000000000e6a10  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #15  pc 0x0000000000084c6c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

@mmyduckx
Copy link
Contributor

Just now I also found a new crash information that may be related to this problem, I hope it will help to solve this problem

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 3217 >>> com.example.xxx <<<

backtrace:
  #00  pc 0x0000000000e1f15c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (v8::internal::GlobalHandles::NodeSpace<v8::internal::GlobalHandles::Node>::Release(v8::internal::GlobalHandles::Node*)+1339392)
  #01  pc 0x00000000007952e0  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::ObjectWrap::~ObjectWrap()+48)
  #02  pc 0x0000000000791590  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Object::~Object()+84)
  #03  pc 0x00000000007915d4  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Object::~Object()+16)
  #04  pc 0x000000000079e924  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Value::reset(se::Value::Type)+112)
  #05  pc 0x000000000079f204  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (se::Value::~Value()+12)
  #06  pc 0x00000000007694b0  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (JsbWebSocketDelegate::~JsbWebSocketDelegate()+88)
  #07  pc 0x00000000007694f8  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (JsbWebSocketDelegate::~JsbWebSocketDelegate()+16)
  #08  pc 0x000000000076a21c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (JsbWebSocketDelegate::onClose(cc::network::WebSocket*, unsigned short, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, bool)+568)
  #09  pc 0x0000000000621ca4  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::Scheduler::update(float)+416)
  #10  pc 0x0000000000626118  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::Engine::tick()+152)
  #11  pc 0x000000000062aa14  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::AndroidPlatform::loop()+408)
  #12  pc 0x000000000062a86c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (cc::AndroidPlatform::run(int, char const**)+16)
  #13  pc 0x000000000077a77c  /data/app/com.example.xxx-6JjeT5kREnFJl1j_WMQFnw==/split_config.arm64_v8a.apk!libcocos.so (android_app_entry+1339392)
  #14  pc 0x00000000000e6a10  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #15  pc 0x0000000000084c6c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Received, I will continue to follow up on this issue

@mmyduckx mmyduckx added P2 and removed P1 Must be finished in the milestone labels Apr 21, 2023
@zhitaocai
Copy link
Author

Hello, is there any good news on this issue, we are looking forward to it

@mmyduckx
Copy link
Contributor

Hello, is there any good news on this issue, we are looking forward to it

Not yet. Expect progress this week

@mmyduckx mmyduckx modified the milestones: v3.7.3, V3.8 Apr 27, 2023
@mmyduckx
Copy link
Contributor

mmyduckx commented Apr 27, 2023

Hello, is there any good news on this issue, we are looking forward to it

diff --git a/native/cocos/network/WebSocket-okhttp.cpp b/native/cocos/network/WebSocket-okhttp.cpp
index 6cdfc93547..4fe86d5607 100644
--- a/native/cocos/network/WebSocket-okhttp.cpp
+++ b/native/cocos/network/WebSocket-okhttp.cpp
@@ -350,10 +350,14 @@ extern "C" {
 #endif
 
 #define JNI_PATH(methodName) Java_com_cocos_lib_websocket_CocosWebSocket_##methodName
-#define RUN_IN_GAMETHREAD(task)                                               \
-    CC_CURRENT_ENGINE()->getScheduler()->performFunctionInCocosThread([=]() { \
-        task;                                                                 \
-    })
+#define RUN_IN_GAMETHREAD(task)                                                       \
+    do {                                                                              \
+        if (CC_CURRENT_APPLICATION()) {                                               \
+            CC_CURRENT_ENGINE()->getScheduler()->performFunctionInCocosThread([=]() { \
+                task;                                                                 \
+            });                                                                       \
+        }                                                                             \
+    } while (0)
 
 JNIEXPORT void JNICALL JNI_PATH(NativeInit)(JNIEnv * /*env*/, jclass /*clazz*/) {
     // nop

Hi, just try this patch!(Don't need above patch anymore)
And I'm happy to know your further tracking information :)

@zhitaocai
Copy link
Author

Thanks for providing the patch.

The May Day holiday is approaching, we may have to submit it to GooglePlay for review after the holiday~

@mmyduckx
Copy link
Contributor

Thanks for providing the patch.

The May Day holiday is approaching, we may have to submit it to GooglePlay for review after the holiday~

Happy holidays, looking forward to your progress

@zhitaocai
Copy link
Author

Here's an update on our progress:

The latest patch, we expect to submit it to GooglePlay for review on May 12

@mmyduckx
Copy link
Contributor

mmyduckx commented May 6, 2023

Here's an update on our progress:

The latest patch, we expect to submit it to GooglePlay for review on May 12

Thanks for your reply. Got it.

@zhitaocai
Copy link
Author

Here's an update on our progress:

Our version with the latest patches is still under GooglePlay review

@zhitaocai
Copy link
Author

Our new version has been approved.

Currently in a small amount of distribution, it seems that the above crash information is gone.

We expect to slowly increase the amount in these two days, and observe for a weekend.

There may be a clear conclusion next Monday.

Thanks for the support from the engine team~

@mmyduckx
Copy link
Contributor

Our new version has been approved.

Currently in a small amount of distribution, it seems that the above crash information is gone.

We expect to slowly increase the amount in these two days, and observe for a weekend.

There may be a clear conclusion next Monday.

Thanks for the support from the engine team~

You're welcome!

@zhitaocai
Copy link
Author

After several days of observation, we have confirmed that this type of crash has been fixed, and this Issue can be closed. Thanks again for the support of the engine team.

@minggo
Copy link
Contributor

minggo commented May 29, 2023

Good to here that.
@mmyduckx could you please send a PR to v3.8.0?

@mmyduckx
Copy link
Contributor

Good to here that. @mmyduckx could you please send a PR to v3.8.0?

Sure. #15210

@mmyduckx
Copy link
Contributor

After several days of observation, we have confirmed that this type of crash has been fixed, and this Issue can be closed. Thanks again for the support of the engine team.

Thanks for your feedback and support for cocos engine. We have submitted the fix to 3.8.0; if there are still problems in future, please let us know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Env: Android Env: Native General issue on all native platforms including iOS, Android, MacOS, Windows Module: Network P2
Projects
Status: Done
Development

No branches or pull requests

4 participants