godotengine / godot-cpp

C++ bindings for the Godot script API
MIT License
1.72k stars 570 forks source link

Editor Crash while opening project after crash #1235

Open Remi123 opened 1 year ago

Remi123 commented 1 year ago

Godot version

4.2.dev4

godot-cpp version

master

System information

Windows10

Issue description

While developing my library, I crashed and I'm attempting to reopen my editor with my fixes.

However, it now crash and I'm unsure on how to fix the problem. I suggest it's part of the hot-reload process. Here is the logs :

Editing project: C:/Users/Remi/Documents/Godot Projects/AddonTest
EditorSettings: Save OK!
ERROR: Failed to open C:/Users/Remi/Documents/Godot Projects/AddonTest/addons/debug_draw_3d/libs/~libdd3d.windows.template_debug.x86_64.dll
   at: (core/io/dirX_Ra: cClecaerinsgs .pcrpipm:a3r4y9 )i
nterfEaRcReO
R: ErXrRo:r  Rceompoyviendg  iGnDtEexrtfeancseiNoant ilvieb rmaorbyi:l er
eXsR::/ /Raedmdoovnesd/ dienbtuegr_fdarcaewO_p3edn/XlRi
bs/libdd3d.windows.template_debug.x86_64.dll
   at: load (core/extension/gdextension.cpp:715)
ERROR: Failed loading resource: res://addons/debug_draw_3d/debug_draw_3d.gdextension. Make sure resources have been imported by opening the project in the editor at least once.
   at: (core/io/resource_loader.cpp:273)
ERROR: Error loading extensEiRoRn:O Rre:s: //Iadndovnasl/idde bOubgj_edcrta wi_d3 d'/2d2e5b1u5g0_2d4r0a7w7_'3,d .cgadne'xtt ecnaslilo nm
e t h oadt.:
  (  caotr:e /e(x.t/ecnosrieo/onb/jgedcextt/ecnasliloanb_lmea_nmaegtehro.dc_pppo:i1n4t3e)r
.h:102)

Note that the dll loaded start with ~

The rest is just gibberish until it tries to parse my scripts :

SCRIPT ERROR: Parse Error: Identifier "FrayInputBindMouseButton" not declared in the current scope.
          at: GDScript::reload (res://addons/fray/src/input/autoloads/fray_input_map.gd:90)
SCRIPT ERROR: Parse Error: Cannot infer the type of "bind" variable because the value doesn't have a set type.
          at: GDScript::reload (res://addons/fray/src/input/autoloads/fray_input_map.gd:90)
ERROR: Failed to load script "res://addons/fray/src/input/autoloads/fray_input_map.gd" with error "Parse error".
   at: load (modules/gdscript/gdscript.cpp:2729)
ERROR: Script does not inherit from Node: res://addons/fray/src/input/autoloads/fray_input_map.gd.
   at: (editor/editor_autoload_settings.cpp:423)
SCRIPT ERROR: Parse Error: Could not find type "FrayInputEvent" in the current scope.
          at: GDScript::reload (res://addons/fray/src/input/autoloads/fray_input.gd:8)
SCRIPT ERROR: Parse Error: Could not find type "_FrayInputMap" in the current scope.
          at: GDScript::reload (res://addons/fray/src/input/autoloads/fray_input.gd:21)

At best it says that my plugins needs a restart, and then crash when I press Ok or Continue.

Steps to reproduce

I'm not too sure. but it's basically crash your editor by having a crash inside your gdextension, then reopen your projects.

Unsure about what to do to reset how godot load its gdextensions...

Minimal reproduction project

N/A

DmitriySalnikov commented 1 year ago

Have you tried updating my library? Because debug_draw_3d hasn't been officially updated yet to support reloadable = true. I've already written about it here https://github.com/godotengine/godot/pull/80284#issuecomment-1710507656 but without this mess in logs 😅

nterfEaRcReO R: ErXrRo:r Rceompoyviendg iGnDtEexrtfeancseiNoant ilvieb rmaorbyi:l er eXsR::/ /Raedmdoovnesd/ dienbtuegr_fdarcaewO_p3edn/XlRi

dsnopek commented 1 year ago

Thanks!

I suggest it's part of the hot-reload process.

Is this testing you did with PR https://github.com/godotengine/godot/pull/80284? If so, your experience should probably be reported on that PR, rather than here, since it's not merged yet.

dsnopek commented 1 year ago

It's possible that your issue is fixed by PR https://github.com/godotengine/godot/pull/81576

If you have a chance, please test and let me know if it fixes it for you! Thanks :-)