You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue is quite tricky, as it is caused by godot load gdextension .dll and initializate GDExtensionInterface
order.
Do need to solve this problem?
Steps to reproduce
// world.h
const String level0 = "res://level/level0.tscn"; // load gdextension.dll will call String constructor, but this time gdextension function didnt initialized
class World : public Node {
GDCLASS(World, Node)
static void _bind_methods() {}
};
Define a global variable String, open godot.exe timeline:
start open godot.exe
godot.exe: Load gdextension.dll -> dll: global variable Construct -> dll: call String construct GDExtensionInterface(not initialzed and will Crash)
The text was updated successfully, but these errors were encountered:
pupil1337
changed the title
Global variable cause crash and load gdextension failed
Global godot-type variable cause crash and load gdextension failed
Apr 26, 2024
Well, we can't make Godot types work if they are constructed before the GDExtension has been initialized.
It would be nice to not crash, although, I'm not sure how feasible that is. We could wrap everything in a check to see if it's been initialized yet, and then output a message, I guess?
function pointer type declare in gdextension_interface.h (define in godot.cpp)
_method_bindings in the Variant type(for example in string_name.cpp).
Checking if they are nullptr (or assignment placeholder) requires writing a big logic and the final outcome still cannot declare global variables. I think it's better to not solved it (global variable not many usage scenarios and it's not necessary).
Godot version
4.3.dev(11d3768)
godot-cpp version
4.3.dev(e23b117)
System information
win11
Issue description
This issue have existed for a long time, The reproduction steps are the same as this comment: #358 (comment).
This issue is quite tricky, as it is caused by godot load gdextension .dll and initializate GDExtensionInterface
order.
Do need to solve this problem?
Steps to reproduce
Define a global variable
String
, open godot.exe timeline:String
construct GDExtensionInterface(not initialzed and will Crash)Minimal reproduction project
N/A
The text was updated successfully, but these errors were encountered: