Tencent / puerts

PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript.
Other
5.07k stars 705 forks source link

[Unity] Bug: 仅 editor crash #1735

Closed mingxxming closed 5 months ago

mingxxming commented 5 months ago

前置阅读 | Pre-reading

Puer的版本 | Puer Version

master

Unity的版本 | Unity Version

2022.3.8f1

发生在哪个平台 | Platform

Editor(win)

错误信息 | Error Message

================================================================= Native Crash Reporting

Got a UNKNOWN while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application.

================================================================= Managed Stacktrace:

      at <unknown> <0xffffffff>
      at Puerts.PuertsDLL:GetJSStackTrace <0x00094>
      at Puerts.PuertsDLL:GetJSStackTrace <0x0002a>
      at Puerts.GenericDelegateFactory:ToGenericDelegate <0x000c2>
      at <>c__DisplayClass13_1:<Create>b__6 <0x0003a>
      at Puerts.GenericDelegateFactory:Create <0x00b40>
      at <>c__DisplayClass21_0:<MakeTranslateFunc>b__1 <0x000ca>
      at Puerts.Parameters:GetArguments <0x002b9>
      at Puerts.OverloadReflectionWrap:Invoke <0x0017a>
      at Puerts.MethodReflectionWrap:Invoke <0x00452>
      at Puerts.JsEnv:InvokeCallback <0x00059>
      at Puerts.StaticCallbacks:JsEnvCallbackWrap <0x0009a>
      at Puerts.StaticCallbacks:JsEnvCallbackWrap <0x00082>
      at <unknown> <0xffffffff>
      at Puerts.PuertsDLL:InvokeJSFunction <0x0009b>
      at Puerts.GenericDelegate:Action <0x000fa>
      at Client.GameLaunch:Update <0x0011a>
      at System.Object:runtime_invoke_void__this__ <0x00087>

================================================================= Received signal SIGSEGV Obtained 70 stack frames 0x00007fff151ddc0e (puerts) RegisterClass 0x00007fff151dc839 (puerts) RegisterClass 0x00007fff151e5852 (puerts) RegisterClass 0x00007fff151d4db1 (puerts) GetJSStackTrace 0x0000029c8aeb3025 (Mono JIT Code) (wrapper managed-to-native) Puerts.PuertsDLL:GetJSStackTrace (intptr,int&) 0x0000029c8aeb2f2b (Mono JIT Code) Puerts.PuertsDLL:GetJSStackTrace (intptr) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/Native/PuertsDLL.cs:645) 0x0000029c8aeb2e03 (Mono JIT Code) Puerts.GenericDelegateFactory:ToGenericDelegate (intptr) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/JSType/GenericDelegate.cs:120) 0x0000029dd1620deb (Mono JIT Code) Puerts.GenericDelegateFactory/<>cDisplayClass13_1:b6 (System.Type,intptr) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/JSType/GenericDelegate.cs:233) 0x0000029c8aeb0b41 (Mono JIT Code) Puerts.GenericDelegateFactory:Create (System.Type,intptr) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/JSType/GenericDelegate.cs:240) 0x0000029c89e2ef9b (Mono JIT Code) Puerts.GeneralGetterManager/<>cDisplayClass21_0:b1 (int,intptr,Puerts.IGetValueFromJs,intptr,bool) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/Translator/DataTranslate.cs:239) 0x0000029c89e26dfa (Mono JIT Code) Puerts.Parameters:GetArguments (Puerts.JSCallInfo) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/Wrapper/ReflectionWrap.cs:230) 0x0000029c89e2664b (Mono JIT Code) Puerts.OverloadReflectionWrap:Invoke (Puerts.JSCallInfo) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/Wrapper/ReflectionWrap.cs:314) 0x0000029c89e25ce3 (Mono JIT Code) Puerts.MethodReflectionWrap:Invoke (intptr,intptr,intptr,int) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/Wrapper/ReflectionWrap.cs:415) 0x0000029c89e241da (Mono JIT Code) Puerts.JsEnv:InvokeCallback (intptr,int,intptr,intptr,int) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/JsEnv.cs:411) 0x0000029c89e2404b (Mono JIT Code) Puerts.StaticCallbacks:JsEnvCallbackWrap (intptr,intptr,intptr,int,long) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/Native/StaticCallbacks.cs:24) 0x0000029c7654bd83 (Mono JIT Code) (wrapper native-to-managed) Puerts.StaticCallbacks:JsEnvCallbackWrap (intptr,intptr,intptr,int,long) 0x00007fff151e46b6 (puerts) RegisterClass 0x00007fff15443aad (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff15443055 (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff1544334c (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff15443193 (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff1561ea21 (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x0000029de09441ed (()) 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x0000029de08fe3cc (()) 0x0000029de08fe14b (()) 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x0000029de09441ed (()) 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff155b0f0e (puerts) CrashForExceptionInNonABICompliantCodeRange 0x0000029de08fd6dc (()) 0x0000029de08db16b (()) 0x0000029de08d6171 (()) 0x0000029de08f4e55 (()) 0x0000029de08d7290 (()) 0x00007fff155af0fc (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff155aecfb (puerts) CrashForExceptionInNonABICompliantCodeRange 0x00007fff15256073 (puerts) V8ToBigInt 0x00007fff15255adf (puerts) V8ToBigInt 0x00007fff15233d28 (puerts) V8ToBigInt 0x00007fff151e7d90 (puerts) RegisterClass 0x00007fff151d5ef3 (puerts) InvokeJSFunction 0x0000029c89e257cc (Mono JIT Code) (wrapper managed-to-native) Puerts.PuertsDLL:InvokeJSFunction (intptr,bool) 0x0000029dd17a5c0b (Mono JIT Code) Puerts.GenericDelegate:Action (single) (at D:/project/cryptomh/u3d/Assets/Scripts/GCore/Puerts/Runtime/Src/Default/JSType/GenericDelegate.cs:463) 0x0000029d14a46a2b (Mono JIT Code) Client.GameLaunch:Update () (at D:/project/cryptomh/u3d/Assets/Scripts/GameLaunch.cs:286) 0x0000029dab0470d8 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_voidthis (object,intptr,intptr,intptr) 0x00007fff1e6d4c1e (mono-2.0-bdwgc) mono_jit_runtime_invoke (at C:/build/output/Unity-Technologies/mono/mono/mini/mini-runtime.c:3445) 0x00007fff1e60d254 (mono-2.0-bdwgc) do_runtime_invoke (at C:/build/output/Unity-Technologies/mono/mono/metadata/object.c:3068) 0x00007fff1e60d3cc (mono-2.0-bdwgc) mono_runtime_invoke (at C:/build/output/Unity-Technologies/mono/mono/metadata/object.c:3115) 0x00007ff6b83d1ab4 (Unity) scripting_method_invoke 0x00007ff6b83af824 (Unity) ScriptingInvocation::Invoke 0x00007ff6b8397014 (Unity) MonoBehaviour::CallMethodIfAvailable 0x00007ff6b839713a (Unity) MonoBehaviour::CallUpdateMethod 0x00007ff6b7e2a1db (Unity) BaseBehaviourManager::CommonUpdate 0x00007ff6b7e3175a (Unity) BehaviourManager::Update 0x00007ff6b80670cd (Unity) InitPlayerLoopCallbacks'::2'::UpdateScriptRunBehaviourUpdateRegistrator::Forward 0x00007ff6b80461dc (Unity) ExecutePlayerLoop 0x00007ff6b8046350 (Unity) ExecutePlayerLoop 0x00007ff6b804cbe5 (Unity) PlayerLoop 0x00007ff6b9022a5f (Unity) PlayerLoopController::InternalUpdateScene 0x00007ff6b902f88d (Unity) PlayerLoopController::UpdateSceneIfNeededFromMainLoop 0x00007ff6b902db71 (Unity) Application::TickTimer 0x00007ff6b94a9dfa (Unity) MainMessageLoop 0x00007ff6b94aecd0 (Unity) WinMain 0x00007ff6ba89300e (Unity) __scrt_common_main_seh 0x00007fff9f9b7344 (KERNEL32) BaseThreadInitThunk 0x00007fffa19226b1 (ntdll) RtlUserThreadStart

问题重现 | Bug reproduce

打包出来没问题。 在 PuertsDLL.GetJSStackTrace 内直接return “”;可暂时绕过

chexiongsheng commented 5 months ago

怎么重现呢?

mingxxming commented 5 months ago

cs static a(Action x);
ts a(()=>{}); 通过eval执行应该就可以复现, eval应该是没有ScriptName