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

reference counting bug: tests are resulting in a bad reference count error #71

Closed
pcting opened this issue Mar 12, 2023 · 8 comments · Fixed by #76
Closed

reference counting bug: tests are resulting in a bad reference count error #71

pcting opened this issue Mar 12, 2023 · 8 comments · Fixed by #76
Assignees
Labels
blocker Blocker issue bug Something isn't working help wanted Extra attention is needed
Milestone

Comments

@pcting
Copy link
Contributor

pcting commented Mar 12, 2023

Describe the bug

$ make test
CI=1 \
LOG_LEVEL=info \
GOTRACEBACK=1 \
GODEBUG=sbrk=1,gctrace=1,asyncpreemptoff=1,cgocheck=0,invalidptr=1,clobberfree=1,tracebackancestors=5 \
/bin/godot --headless --verbose --path test/demo/
Godot Engine v4.0.stable.custom_build.92bee43ad - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
Using "default" pen tablet driver...
JoypadLinux: udev enabled and loaded successfully.
 
TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
INFO    gdextension/classdb.go:524      gdclass registered      {"name": "Example", "parent_type": "Control"}
CORE API HASH: 132356682
EDITOR API HASH: 2535829357
Loaded builtin certs
INFO    gdextension/wrapped_gdclass.go:145      GDClass instance created        {"object_id": 24427626987, "class_name": "Example", "parent_name": "Control", "inst": "0x7f3294f93ee8", "owner": "0xda27870", "object": "0xda27870", "inst.GetGodotObjectOwner": "0xda27870"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_get_minimum_size"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_enter_tree"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_shortcut_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_unhandled_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_unhandled_key_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_process"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_physics_process"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_ready"}
INFO    pkg/example.go:168      Example_Ready called
INFO    pkg/example.go:173      Vector3: Created (1.1, 2.2, 3.3)        {"x": 1.100000023841858, "y": 2.200000047683716, "z": 3.299999952316284}
INFO    pkg/example.go:181      Vector3: Multiply Vector3 by 2  {"x": 2.200000047683716, "y": 4.400000095367432, "z": 6.599999904632568}
INFO    pkg/example.go:189      Vector3: Add (1,2,3)    {"x": 12.199999809265137, "y": 24.399999618530273, "z": 36.599998474121094}
INFO    pkg/example.go:197      Vector3: Multiply (5,10,15)     {"x": 61, "y": 244, "z": 549}
INFO    pkg/example.go:205      Vector3: Substract (x,y,0)      {"x": 0, "y": 0, "z": 549}
INFO    pkg/example.go:213      Vector3: Normalized     {"x": 0, "y": 0, "z": 1}
INFO    pkg/example.go:221      Vector3: Equality Check {"x": 0, "y": 0, "z": 1, "equal": true}
Signal bind

Static method calls
  static (109) 109
  void static
Instance method calls
  Simple func called.
  Simple const func called 123.
  Return something called (8 values cancatenated as a string).
  returned (1. some string, 2. 1.166667, 3. 1166.666667, 4. 2147483647, 5. -127, 6. -32768, 7. 2147483647, 8. 9223372036854775807)
  Return something const called.
viewport instance id: -1979710965
  returned const root:<Window#23790092811>
  returned  (1.2, 3.4, 5.6, 7.8)
Method calls with default values
  defval (300) 300
  defval (250) 250
  defval (150) 150
Array and Dictionary
  test array [1, 2]
  test dictionary { "hello": "world", "foo": "bar" }
Properties
  custom position is (0, 0)
  custom position now is (50, 50)
Constnts
  FIRST 0
  ANSWER_TO_EVERYTHING 42
  CONSTANT_WITHOUT_ENUM 314
Others
  CastTo
app is ready CI= 1
CI env var detected: automating interactions
Example emitted: Button 42
force quit
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_draw"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_exit_tree"}
INFO    gdextension/wrapped_gdclass.go:165      GoCallback_GDExtensionClassFreeInstance called  {"type_name": "Example", "ptr": "0x7f3294f93f38", "w": "0x7f3294f93ee8", "w.GetGodotObjectOwner()": "0xda27870"}
INFO    gdextension/wrapped_gdclass.go:180      GDClass instance freed  {"id": 24427626987}
XR: Clearing primary interface
XR: Removed interfaceNative mobile
XR: Removed interfaceOpenXR
ERROR: Trying to unreference a SafeRefCount which is already zero is wrong and a symptom of it being misused.
Upon a SafeRefCount reaching zero any object whose lifetime is tied to it, as well as the ref count itself, must be destroyed.
Moreover, to guarantee that, no multiple threads should be racing to do the final unreferencing to zero.
   at: _check_unref_sanity (./core/templates/safe_refcount.h:176)

================================================================
handle_crash: Program crashed with signal 4
Engine version: Godot Engine v4.0.stable.custom_build (92bee43adba8d2401ef40e2480e53087bcb1eaf1)
Dumping the backtrace. 
[1] /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420) [0x7f32d86db420] (??:0)
[2] StringName::unref() (/workspace/godot/./core/templates/safe_refcount.h:173)
[3] StringName::~StringName() (/workspace/godot/./core/string/string_name.h:182)
[4] KeyValue<StringName, PropertyInfo>::~KeyValue() (/workspace/godot/./core/templates/pair.h:82)
[5] HashMapElement<StringName, PropertyInfo>::~HashMapElement() (/workspace/godot/./core/templates/hash_map.h:55)
[6] void memdelete<HashMapElement<StringName, PropertyInfo> >(HashMapElement<StringName, PropertyInfo>*) (/workspace/godot/./core/os/memory.h:109)
[7] DefaultTypedAllocator<HashMapElement<StringName, PropertyInfo> >::delete_allocation(HashMapElement<StringName, PropertyInfo>*) (/workspace/godot/./core/os/memory.h:206)
[8] HashMap<StringName, PropertyInfo, HashMapHasherDefault, HashMapComparatorDefault<StringName>, DefaultTypedAllocator<HashMapElement<StringName, PropertyInfo> > >::clear() (/workspace/godot/./core/templates/hash_map.h:265)
[9] HashMap<StringName, PropertyInfo, HashMapHasherDefault, HashMapComparatorDefault<StringName>, DefaultTypedAllocator<HashMapElement<StringName, PropertyInfo> > >::~HashMap() (/workspace/godot/./core/templates/hash_map.h:582)
[10] ClassDB::ClassInfo::~ClassInfo() (/workspace/godot/./core/object/class_db.h:137)
[11] KeyValue<StringName, ClassDB::ClassInfo>::~KeyValue() (/workspace/godot/./core/templates/pair.h:82)
[12] HashMapElement<StringName, ClassDB::ClassInfo>::~HashMapElement() (/workspace/godot/./core/templates/hash_map.h:55)
[13] void memdelete<HashMapElement<StringName, ClassDB::ClassInfo> >(HashMapElement<StringName, ClassDB::ClassInfo>*) (/workspace/godot/./core/os/memory.h:109)
[14] DefaultTypedAllocator<HashMapElement<StringName, ClassDB::ClassInfo> >::delete_allocation(HashMapElement<StringName, ClassDB::ClassInfo>*) (/workspace/godot/./core/os/memory.h:206)
[15] HashMap<StringName, ClassDB::ClassInfo, HashMapHasherDefault, HashMapComparatorDefault<StringName>, DefaultTypedAllocator<HashMapElement<StringName, ClassDB::ClassInfo> > >::clear() (/workspace/godot/./core/templates/hash_map.h:265)
[16] ClassDB::cleanup() (/workspace/godot/core/object/class_db.cpp:1600)
[17] unregister_core_types() (/workspace/godot/core/register_core_types.cpp:431)
[18] Main::cleanup(bool) (/workspace/godot/main/main.cpp:3419)
[19] /bin/godot(main+0x220) [0x23ce2e0] (/workspace/godot/platform/linuxbsd/godot_linuxbsd.cpp:75)
[20] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f32d83a4083] (??:0)
[21] /bin/godot(_start+0x2e) [0x23cdffe] (??:?)
-- END OF BACKTRACE --
================================================================
Aborted (core dumped)
make: *** [Makefile:77: test] Error 134

To Reproduce
Steps to reproduce the behavior:

  1. compile godot with dev_build enabled:
$ cat custom.py
optimize = "debug"
module_mono_enabled = "no"
use_llvm = "yes"
dev_build = "yes"
generate_bindings= "yes"

$ scons profile=custom.py
  1. run make test

Expected behavior
There shouldn't be a reference count error.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Architecture [e.g. amd64, arm7]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Architecture [e.g. amd64, arm7]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
The godot-go code currently doesn't do any of the reference counting it should be. this ticket is effectively the placeholder to get that implemented correctly and possibly with an idiomatic way of doing it the go way

@pcting pcting added the bug Something isn't working label Mar 12, 2023
@pcting pcting added this to the 0.1 milestone Mar 12, 2023
@pcting pcting self-assigned this Mar 12, 2023
@pcting pcting added the help wanted Extra attention is needed label Mar 12, 2023
@pcting pcting changed the title Tests are resulting in a bad reference count error reference counting bug: tests are resulting in a bad reference count error Mar 12, 2023
@aligator
Copy link

Just stumbled across this project and thought I would give this a try.
But for me there is no error...

➜  godot-go git:(main) make test
CI=1 \
LOG_LEVEL=info \
GOTRACEBACK=1 \
GODEBUG=sbrk=1,gctrace=1,asyncpreemptoff=1,cgocheck=0,invalidptr=1,clobberfree=1,tracebackancestors=5 \
/usr/bin/godot --headless --verbose --path test/demo/
Godot Engine v4.0.stable.arch_linux - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
Using "default" pen tablet driver...
JoypadLinux: udev enabled and loaded successfully.

TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
INFO	gdextension/classdb.go:524	gdclass registered	{"name": "Example", "parent_type": "Control"}
CORE API HASH: 132356682
EDITOR API HASH: 2535829357
Loaded builtin certs

...

INFO    pkg/example.go:221      Vector3: Equality Check {"x": 0, "y": 0, "z": 1, "equal": true}
Signal bind

Static method calls
  static (109) 109
  void static
Instance method calls
  Simple func called.
  Simple const func called 123.
  Return something called (8 values cancatenated as a string).
  returned (1. some string, 2. 1.166667, 3. 1166.666667, 4. 2147483647, 5. -127, 6. -32768, 7. 2147483647, 8. 9223372036854775807)
  Return something const called.
viewport instance id: -1979710965
  returned const root:<Window#23790092811>
  returned  (1.2, 3.4, 5.6, 7.8)
Method calls with default values
  defval (300) 300
  defval (250) 250
  defval (150) 150
Array and Dictionary
  test array [1, 2]
  test dictionary { "hello": "world", "foo": "bar" }
Properties
  custom position is (0, 0)
  custom position now is (50, 50)
Constnts
  FIRST 0
  ANSWER_TO_EVERYTHING 42
  CONSTANT_WITHOUT_ENUM 314
Others
  CastTo
app is ready CI= 1
CI env var detected: automating interactions
Example emitted: Button 42
force quit
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_draw"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_exit_tree"}
INFO    gdextension/wrapped_gdclass.go:165      GoCallback_GDExtensionClassFreeInstance called  {"type_name": "Example", "ptr": "0x7f72f04baec8", "w": "0x7f72f04bae78", "w.GetGodotObjectOwner()": "0x55c6c51109f0"}
INFO    gdextension/wrapped_gdclass.go:180      GDClass instance freed  {"id": 24427626987}
XR: Clearing primary interface
XR: Removed interfaceNative mobile
XR: Removed interfaceOpenXR
Orphan StringName: OP_MODULE
Orphan StringName: KEY_SYSREQ
Orphan StringName: Example
...

@pcting
Copy link
Contributor Author

pcting commented Mar 24, 2023

Just stumbled across this project and thought I would give this a try. But for me there is no error...

➜  godot-go git:(main) make test
CI=1 \
LOG_LEVEL=info \
GOTRACEBACK=1 \
GODEBUG=sbrk=1,gctrace=1,asyncpreemptoff=1,cgocheck=0,invalidptr=1,clobberfree=1,tracebackancestors=5 \
/usr/bin/godot --headless --verbose --path test/demo/
Godot Engine v4.0.stable.arch_linux - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
Using "default" pen tablet driver...
JoypadLinux: udev enabled and loaded successfully.

TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
INFO	gdextension/classdb.go:524	gdclass registered	{"name": "Example", "parent_type": "Control"}
CORE API HASH: 132356682
EDITOR API HASH: 2535829357
Loaded builtin certs

...

INFO    pkg/example.go:221      Vector3: Equality Check {"x": 0, "y": 0, "z": 1, "equal": true}
Signal bind

Static method calls
  static (109) 109
  void static
Instance method calls
  Simple func called.
  Simple const func called 123.
  Return something called (8 values cancatenated as a string).
  returned (1. some string, 2. 1.166667, 3. 1166.666667, 4. 2147483647, 5. -127, 6. -32768, 7. 2147483647, 8. 9223372036854775807)
  Return something const called.
viewport instance id: -1979710965
  returned const root:<Window#23790092811>
  returned  (1.2, 3.4, 5.6, 7.8)
Method calls with default values
  defval (300) 300
  defval (250) 250
  defval (150) 150
Array and Dictionary
  test array [1, 2]
  test dictionary { "hello": "world", "foo": "bar" }
Properties
  custom position is (0, 0)
  custom position now is (50, 50)
Constnts
  FIRST 0
  ANSWER_TO_EVERYTHING 42
  CONSTANT_WITHOUT_ENUM 314
Others
  CastTo
app is ready CI= 1
CI env var detected: automating interactions
Example emitted: Button 42
force quit
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_draw"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_exit_tree"}
INFO    gdextension/wrapped_gdclass.go:165      GoCallback_GDExtensionClassFreeInstance called  {"type_name": "Example", "ptr": "0x7f72f04baec8", "w": "0x7f72f04bae78", "w.GetGodotObjectOwner()": "0x55c6c51109f0"}
INFO    gdextension/wrapped_gdclass.go:180      GDClass instance freed  {"id": 24427626987}
XR: Clearing primary interface
XR: Removed interfaceNative mobile
XR: Removed interfaceOpenXR
Orphan StringName: OP_MODULE
Orphan StringName: KEY_SYSREQ
Orphan StringName: Example
...

ah, i forgot that i left out that i compiled godot with dev_build enabled, which i believe provides the reference check. this is what i use to build godot:

$ cat custom.py
optimize = "debug"
module_mono_enabled = "no"
use_llvm = "yes"
dev_build = "yes"
generate_bindings= "yes"

$ scons profile=custom.py

@gedw99
Copy link

gedw99 commented May 22, 2023

here is my output:

Env:

go version
go version go1.20.4 darwin/amd64

Godot Engine v4.0.3.stable.official.5222a99f5 - https://godotengine.org
OpenGL API 4.1 INTEL-16.5.14 - Compatibility - Using Device: Intel Inc. - Intel Iris OpenGL Engine

$(MAKE) ci_gen_test_project_files:

CI=1 \
LOG_LEVEL=info \
GOTRACEBACK=1 \
GODEBUG=sbrk=1,gctrace=1,asyncpreemptoff=1,cgocheck=0,invalidptr=1,clobberfree=1,tracebackancestors=5 \
/usr/local/bin/godot --headless --verbose --path test/demo/ --editor --quit
Godot Engine v4.0.3.stable.official.5222a99f5 - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
Using "default" pen tablet driver...
 
TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
CameraServer: Registered camera FaceTime HD Camera with ID 1 and position 0 at index 0
CORE API HASH: 1312453567
EDITOR API HASH: 1237527407
Class 'EditorPropertyNameProcessor' is not exposed, skipping.
Class 'GDScriptEditorTranslationParserPlugin' is not exposed, skipping.
Class 'GDScriptNativeClass' is not exposed, skipping.
Class 'GodotPhysicsServer2D' is not exposed, skipping.
Class 'GodotPhysicsServer3D' is not exposed, skipping.
Class 'IPUnix' is not exposed, skipping.
Class 'MovieWriterMJPEG' is not exposed, skipping.
Class 'MovieWriterPNGWAV' is not exposed, skipping.
Class 'ResourceFormatImporterSaver' is not exposed, skipping.
Class 'ResourceImporterMP3' is not exposed, skipping.
Class 'ResourceImporterOggVorbis' is not exposed, skipping.
Class 'SceneCacheInterface' is not exposed, skipping.
Class 'SceneRPCInterface' is not exposed, skipping.
Class 'SceneReplicationInterface' is not exposed, skipping.
WARNING: Custom cursor shape not supported by this display server.
     at: cursor_set_custom_image (servers/display_server.cpp:480)
EditorSettings: Load OK!
WARNING: Blend file import is enabled in the project settings, but no Blender path is configured in the editor settings. Blend files will not be imported.
     at: _editor_init (modules/gltf/register_types.cpp:70)
Loaded builtin certs
EditorSettings: Save OK!
INFO    gdextension/classdb.go:524      gdclass registered      {"name": "Example", "parent_type": "Control"}
ERROR: FATAL: Condition "!exists" is true.
   at: operator[] (./core/templates/hash_map.h:504)

================================================================
handle_crash: Program crashed with signal 4
Engine version: Godot Engine v4.0.3.stable.official (5222a99f5d38cd5346254cefed8f65315bca4fcb)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] 1   libsystem_platform.dylib            0x00007fff20918d7d _sigtramp + 29
[2] 2   libsystem_malloc.dylib              0x00007fff206ff0c9 free_tiny + 442
[3] Object* ClassDB::creator<ENetConnection>()
[4] Object* ClassDB::creator<ENetConnection>()
[5] Object* ClassDB::creator<ENetConnection>()
[6] Object* ClassDB::creator<ENetConnection>()
[7] Object* ClassDB::creator<ENetConnection>()
[8] Object* ClassDB::creator<ENetConnection>()
[9] Object* ClassDB::creator<ENetConnection>()
[10] Object* ClassDB::creator<ENetConnection>()
[11] Object* ClassDB::creator<ENetConnection>()
[12] Object* ClassDB::creator<ENetConnection>()
[13] JSON::get_data() const
[14] JSON::get_data() const
[15] JSON::get_data() const
[16] EditorFileDialog::get_line_edit()
[17] EditorFileDialog::get_line_edit()
[18] EditorFileDialog::get_line_edit()
[19] ScriptInstanceExtension::_add_property_with_state(void const*, void const*, void*)
[20] Node::is_inside_tree() const
[21] Node::is_inside_tree() const
[22] RendererCompositorRD::_create_current()
[23] 23  godot                               0x0000000106a76f73 godot + 4640627
[24] RendererCompositorRD::_create_current()
[25] 25  libdyld.dylib                       0x00007fff208eef3d start + 1
-- END OF BACKTRACE --
================================================================
make[1]: *** [Makefile:70: ci_gen_test_project_files] Abort trap: 6

$(MAKE) test:

CI=1 \
LOG_LEVEL=info \
GOTRACEBACK=1 \
GODEBUG=sbrk=1,gctrace=1,asyncpreemptoff=1,cgocheck=0,invalidptr=1,clobberfree=1,tracebackancestors=5 \
/usr/local/bin/godot --headless --verbose --path test/demo/
Godot Engine v4.0.3.stable.official.5222a99f5 - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
Using "default" pen tablet driver...
 
TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
INFO    gdextension/classdb.go:524      gdclass registered      {"name": "Example", "parent_type": "Control"}
CameraServer: Registered camera FaceTime HD Camera with ID 1 and position 0 at index 0
CORE API HASH: 1312453567
EDITOR API HASH: 1237527407
Loaded builtin certs
INFO    gdextension/wrapped_gdclass.go:145      GDClass instance created        {"object_id": 24360518840, "class_name": "Example", "parent_name": "Control", "inst": "0x112175308", "owner": "0x7fe8e484da10", "object": "0x7fe8e484da10", "inst.GetGodotObjectOwner": "0x7fe8e484da10"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_get_minimum_size"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_enter_tree"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_shortcut_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_unhandled_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_unhandled_key_input"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_process"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_physics_process"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_ready"}
INFO    pkg/example.go:168      Example_Ready called
INFO    pkg/example.go:173      Vector3: Created (1.1, 2.2, 3.3)        {"x": 1.100000023841858, "y": 2.200000047683716, "z": 3.299999952316284}
INFO    pkg/example.go:181      Vector3: Multiply Vector3 by 2  {"x": 2.200000047683716, "y": 4.400000095367432, "z": 6.599999904632568}
INFO    pkg/example.go:189      Vector3: Add (1,2,3)    {"x": 12.199999809265137, "y": 24.399999618530273, "z": 36.599998474121094}
INFO    pkg/example.go:197      Vector3: Multiply (5,10,15)     {"x": 61, "y": 244, "z": 549}
INFO    pkg/example.go:205      Vector3: Substract (x,y,0)      {"x": 0, "y": 0, "z": 549}
INFO    pkg/example.go:213      Vector3: Normalized     {"x": 0, "y": 0, "z": 1}
INFO    pkg/example.go:221      Vector3: Equality Check {"x": 0, "y": 0, "z": 1, "equal": true}
Signal bind

Static method calls
  static (109) 109
  void static
Instance method calls
  Simple func called.
  Simple const func called 123.
  Return something called (8 values cancatenated as a string).
  returned (1. some string, 2. 1.166667, 3. 1166.666667, 4. 2147483647, 5. -127, 6. -32768, 7. 2147483647, 8. 9223372036854775807)
  Return something const called.
viewport instance id: -2046819245
  returned const root:<Window#23722984531>
  returned  (1.2, 3.4, 5.6, 7.8)
Method calls with default values
  defval (300) 300
  defval (250) 250
  defval (150) 150
Array and Dictionary
  test array [1, 2]
  test dictionary { "hello": "world", "foo": "bar" }
Properties
  custom position is (0, 0)
  custom position now is (50, 50)
Constnts
  FIRST 0
  ANSWER_TO_EVERYTHING 42
  CONSTANT_WITHOUT_ENUM 314
Others
  CastTo
app is ready CI= 1
CI env var detected: automating interactions
Example emitted: Button 42
force quit
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_draw"}
INFO    gdextension/classdb.go:599      GoCallback_ClassDBGetVirtualFunc called {"type_name": "Example", "method": "_exit_tree"}
INFO    gdextension/wrapped_gdclass.go:165      GoCallback_GDExtensionClassFreeInstance called  {"type_name": "Example", "ptr": "0x112175358", "w": "0x112175308", "w.GetGodotObjectOwner()": "0x7fe8e484da10"}
INFO    gdextension/wrapped_gdclass.go:180      GDClass instance freed  {"id": 24360518840}
XR: Clearing primary interface
XR: Removed interfaceNative mobile
Orphan StringName: OP_MODULE
Orphan StringName: KEY_SYSREQ
Orphan StringName: Example
Orphan StringName: PROPERTY_HINT_NONE
Orphan StringName: PROPERTY_USAGE_DEFERRED_SET_RESOURCE
Orphan StringName: INLINE_ALIGNMENT_TO_BASELINE
Orphan StringName: JOY_BUTTON_DPAD_LEFT
Orphan StringName: KEY_KP_SUBTRACT
Orphan StringName: OP_LESS
Orphan StringName: ERR_ALREADY_IN_USE
Orphan StringName: ERR_CANT_FORK
Orphan StringName: MIDI_MESSAGE_CONTINUE
Orphan StringName: MOUSE_BUTTON_MASK_LEFT
Orphan StringName: ERR_SKIP
Orphan StringName: KEY_ENTER
Orphan StringName: JOY_BUTTON_LEFT_STICK
Orphan StringName: JOY_BUTTON_BACK
Orphan StringName: KEY_GLOBE
Orphan StringName: PROPERTY_HINT_LAYERS_2D_PHYSICS
Orphan StringName: MethodFlags
Orphan StringName: OP_IN
Orphan StringName: METHOD_FLAG_OBJECT_CORE
Orphan StringName: TYPE_PACKED_VECTOR3_ARRAY
Orphan StringName: OP_OR
Orphan StringName: JOY_BUTTON_INVALID
Orphan StringName: TYPE_RID
Orphan StringName: HORIZONTAL_ALIGNMENT_RIGHT
Orphan StringName: PROPERTY_HINT_ENUM
Orphan StringName: MIDI_MESSAGE_AFTERTOUCH
Orphan StringName: KEY_MASK_SHIFT
Orphan StringName: METHOD_FLAG_CONST
Orphan StringName: ERR_DATABASE_CANT_WRITE
Orphan StringName: ERR_DOES_NOT_EXIST
Orphan StringName: MOUSE_BUTTON_WHEEL_DOWN
Orphan StringName: JoyAxis
Orphan StringName: ERR_PARSE_ERROR
Orphan StringName: KEY_SEMICOLON
Orphan StringName: TYPE_PACKED_STRING_ARRAY
Orphan StringName: KEY_MASK_CTRL
Orphan StringName: ERR_FILE_MISSING_DEPENDENCIES
Orphan StringName: Error
Orphan StringName: KEY_SCROLLLOCK
Orphan StringName: PROPERTY_HINT_TYPE_STRING
Orphan StringName: KEY_BACKSPACE
Orphan StringName: KEY_HOME
Orphan StringName: JOY_AXIS_SDL_MAX
Orphan StringName: ERR_BUG
Orphan StringName: METHOD_FLAGS_DEFAULT
Orphan StringName: MOUSE_BUTTON_MASK_MIDDLE
Orphan StringName: Variant.Operator
Orphan StringName: MouseButtonMask
Orphan StringName: KEY_ALT
Orphan StringName: MIDI_MESSAGE_QUARTER_FRAME
Orphan StringName: PROPERTY_HINT_LAYERS_3D_RENDER
Orphan StringName: KEY_PRINT
Orphan StringName: ERR_QUERY_FAILED
Orphan StringName: KEY_LEFT
Orphan StringName: KEY_BAR
Orphan StringName: KEY_QUESTION
Orphan StringName: INLINE_ALIGNMENT_TO_CENTER
Orphan StringName: TYPE_DICTIONARY
Orphan StringName: PROPERTY_USAGE_NONE
Orphan StringName: KEY_BRACKETLEFT
Orphan StringName: KEY_FORWARD
Orphan StringName: KEY_LESS
Orphan StringName: PROPERTY_USAGE_ARRAY
Orphan StringName: PROPERTY_HINT_SAVE_FILE
Orphan StringName: HORIZONTAL
Orphan StringName: TYPE_PROJECTION
Orphan StringName: PROPERTY_HINT_ENUM_SUGGESTION
Orphan StringName: ERR_LINK_FAILED
Orphan StringName: TYPE_BASIS
Orphan StringName: KEY_QUOTELEFT
Orphan StringName: KEY_MEDIAPREVIOUS
Orphan StringName: KEY_NUMBERSIGN
Orphan StringName: OP_SHIFT_LEFT
Orphan StringName: KEY_UNKNOWN
Orphan StringName: JOY_BUTTON_DPAD_UP
Orphan StringName: KEY_SPACE
Orphan StringName: MIDI_MESSAGE_SONG_POSITION_POINTER
Orphan StringName: PROPERTY_USAGE_STORAGE
Orphan StringName: KEY_INSERT
Orphan StringName: KEY_ESCAPE
Orphan StringName: MIDI_MESSAGE_SYSTEM_EXCLUSIVE
Orphan StringName: KEY_END
Orphan StringName: KEY_F10
Orphan StringName: KEY_F11
Orphan StringName: KEY_F12
Orphan StringName: KEY_F13
Orphan StringName: KEY_F14
Orphan StringName: KEY_F15
Orphan StringName: KEY_F16
Orphan StringName: KEY_F17
Orphan StringName: KEY_F18
Orphan StringName: KEY_F19
Orphan StringName: KEY_F20
Orphan StringName: KEY_F21
Orphan StringName: KEY_F22
Orphan StringName: KEY_F23
Orphan StringName: KEY_F24
Orphan StringName: KEY_F25
Orphan StringName: KEY_F26
Orphan StringName: KEY_F27
Orphan StringName: KEY_F28
Orphan StringName: KEY_F29
Orphan StringName: KEY_F30
Orphan StringName: KEY_F31
Orphan StringName: KEY_F32
Orphan StringName: KEY_F33
Orphan StringName: KEY_F34
Orphan StringName: KEY_F35
Orphan StringName: PROPERTY_HINT_EXP_EASING
Orphan StringName: INLINE_ALIGNMENT_TOP_TO
Orphan StringName: KEY_KP_ADD
Orphan StringName: KEY_CAPSLOCK
Orphan StringName: CORNER_BOTTOM_LEFT
Orphan StringName: JOY_BUTTON_A
Orphan StringName: JOY_BUTTON_B
Orphan StringName: PROPERTY_HINT_GLOBAL_SAVE_FILE
Orphan StringName: JOY_BUTTON_X
Orphan StringName: JOY_BUTTON_Y
Orphan StringName: ERR_INVALID_PARAMETER
Orphan StringName: HORIZONTAL_ALIGNMENT_LEFT
Orphan StringName: KEY_STOP
Orphan StringName: PROPERTY_HINT_GLOBAL_DIR
Orphan StringName: INLINE_ALIGNMENT_TO_BOTTOM
Orphan StringName: TYPE_BOOL
Orphan StringName: JOY_BUTTON_TOUCHPAD
Orphan StringName: TYPE_PLANE
Orphan StringName: INLINE_ALIGNMENT_TO_TOP
Orphan StringName: METHOD_FLAG_VIRTUAL
Orphan StringName: ERR_COMPILATION_FAILED
Orphan StringName: KEY_SEARCH
Orphan StringName: HORIZONTAL_ALIGNMENT_CENTER
Orphan StringName: PROPERTY_HINT_DIR
Orphan StringName: PROPERTY_HINT_NODE_TYPE
Orphan StringName: ERR_INVALID_DECLARATION
Orphan StringName: INLINE_ALIGNMENT_CENTER
Orphan StringName: PROPERTY_USAGE_CLASS_IS_BITFIELD
Orphan StringName: KEY_PARENRIGHT
Orphan StringName: KEY_BACKTAB
Orphan StringName: INLINE_ALIGNMENT_IMAGE_MASK
Orphan StringName: ERR_FILE_BAD_PATH
Orphan StringName: JOY_BUTTON_DPAD_RIGHT
Orphan StringName: KEY_VOLUMEUP
Orphan StringName: JOY_BUTTON_START
Orphan StringName: SIDE_RIGHT
Orphan StringName: PROPERTY_HINT_OBJECT_TOO_BIG
Orphan StringName: ERR_ALREADY_EXISTS
Orphan StringName: PROPERTY_USAGE_CATEGORY
Orphan StringName: PROPERTY_USAGE_NEVER_DUPLICATE
Orphan StringName: VERTICAL_ALIGNMENT_TOP
Orphan StringName: KEY_PARENLEFT
Orphan StringName: TYPE_PACKED_INT64_ARRAY
Orphan StringName: KEY_COLON
Orphan StringName: ERR_OUT_OF_MEMORY
Orphan StringName: KEY_ASCIICIRCUM
Orphan StringName: PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE
Orphan StringName: KEY_SPECIAL
Orphan StringName: KEY_ASTERISK
Orphan StringName: KEY_COMMA
Orphan StringName: MOUSE_BUTTON_WHEEL_LEFT
Orphan StringName: KEY_HYPER
Orphan StringName: ERR_FILE_NOT_FOUND
Orphan StringName: TYPE_PACKED_INT32_ARRAY
Orphan StringName: EulerOrder
Orphan StringName: ERR_SCRIPT_FAILED
Orphan StringName: TYPE_PACKED_BYTE_ARRAY
Orphan StringName: KEY_AMPERSAND
Orphan StringName: PROPERTY_HINT_RESOURCE_TYPE
Orphan StringName: KEY_MASK_META
Orphan StringName: MOUSE_BUTTON_LEFT
Orphan StringName: ERR_FILE_CORRUPT
Orphan StringName: PROPERTY_USAGE_ALWAYS_DUPLICATE
Orphan StringName: JOY_AXIS_TRIGGER_LEFT
Orphan StringName: KEY_RIGHT
Orphan StringName: INLINE_ALIGNMENT_BOTTOM
Orphan StringName: JOY_AXIS_TRIGGER_RIGHT
Orphan StringName: PROPERTY_HINT_HIDE_QUATERNION_EDIT
Orphan StringName: int16
Orphan StringName: int32
Orphan StringName: int64
Orphan StringName: MIDI_MESSAGE_NOTE_ON
Orphan StringName: PROPERTY_USAGE_INTERNAL
Orphan StringName: ERR_UNAUTHORIZED
Orphan StringName: KEY_MEDIARECORD
Orphan StringName: INLINE_ALIGNMENT_CENTER_TO
Orphan StringName: TYPE_ARRAY
Orphan StringName: PropertyHint
Orphan StringName: JOY_BUTTON_SDL_MAX
Orphan StringName: PROPERTY_USAGE_NO_INSTANCE_STATE
Orphan StringName: TYPE_STRING_NAME
Orphan StringName: MIDI_MESSAGE_CHANNEL_PRESSURE
Orphan StringName: KEY_FAVORITES
Orphan StringName: PROPERTY_USAGE_DEFAULT
Orphan StringName: ERR_PRINTER_ON_FIRE
Orphan StringName: TYPE_SIGNAL
Orphan StringName: PROPERTY_HINT_MAX
Orphan StringName: Side
Orphan StringName: KEY_NONE
Orphan StringName: MOUSE_BUTTON_XBUTTON1
Orphan StringName: MOUSE_BUTTON_XBUTTON2
Orphan StringName: TYPE_NODE_PATH
Orphan StringName: TYPE_STRING
Orphan StringName: KEY_MASK_KPAD
Orphan StringName: KEY_MASK_ALT
Orphan StringName: ERR_FILE_CANT_READ
Orphan StringName: PROPERTY_USAGE_RESTART_IF_CHANGED
Orphan StringName: ERR_TIMEOUT
Orphan StringName: SIDE_BOTTOM
Orphan StringName: KEY_TAB
Orphan StringName: VERTICAL
Orphan StringName: JOY_BUTTON_RIGHT_STICK
Orphan StringName: TYPE_AABB
Orphan StringName: EULER_ORDER_XYZ
Orphan StringName: EULER_ORDER_XZY
Orphan StringName: KEY_MEDIASTOP
Orphan StringName: TYPE_VECTOR2
Orphan StringName: TYPE_VECTOR3
Orphan StringName: TYPE_VECTOR4
Orphan StringName: OP_ADD
Orphan StringName: KEY_PLUS
Orphan StringName: JOY_BUTTON_MAX
Orphan StringName: KEY_CTRL
Orphan StringName: OP_AND
Orphan StringName: KEY_MEDIANEXT
Orphan StringName: EULER_ORDER_YXZ
Orphan StringName: EULER_ORDER_YZX
Orphan StringName: PROPERTY_USAGE_CHECKED
Orphan StringName: MIDIMessage
Orphan StringName: KEY_PAGEUP
Orphan StringName: EULER_ORDER_ZXY
Orphan StringName: EULER_ORDER_ZYX
Orphan StringName: OK
Orphan StringName: PROPERTY_USAGE_EDITOR
Orphan StringName: TYPE_TRANSFORM2D
Orphan StringName: TYPE_TRANSFORM3D
Orphan StringName: ERR_CANT_CONNECT
Orphan StringName: INLINE_ALIGNMENT_TEXT_MASK
Orphan StringName: KEY_BRACKETRIGHT
Orphan StringName: KEY_STANDBY
Orphan StringName: JOY_BUTTON_LEFT_SHOULDER
Orphan StringName: ERR_CONNECTION_ERROR
Orphan StringName: OP_BIT_AND
Orphan StringName: KEY_QUOTEDBL
Orphan StringName: TYPE_FLOAT
Orphan StringName: ERR_CANT_CREATE
Orphan StringName: KEY_YEN
Orphan StringName: MIDI_MESSAGE_PITCH_BEND
Orphan StringName: KEY_CLEAR
Orphan StringName: JoyButton
Orphan StringName: FileAccess
Orphan StringName: int
Orphan StringName: Variant.Type
Orphan StringName: OP_POWER
Orphan StringName: CORNER_BOTTOM_RIGHT
Orphan StringName: OP_SHIFT_RIGHT
Orphan StringName: InlineAlignment
Orphan StringName: OP_EQUAL
Orphan StringName: OP_GREATER
Orphan StringName: OP_LESS_EQUAL
Orphan StringName: ERR_METHOD_NOT_FOUND
Orphan StringName: PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE
Orphan StringName: KEY_KP_DIVIDE
Orphan StringName: PROPERTY_HINT_FILE
Orphan StringName: OP_NEGATE
Orphan StringName: PROPERTY_HINT_LOCALE_ID
Orphan StringName: int8
Orphan StringName: PROPERTY_HINT_PASSWORD
Orphan StringName: ERR_CANT_ACQUIRE_RESOURCE
Orphan StringName: KEY_0
Orphan StringName: KEY_1
Orphan StringName: KEY_2
Orphan StringName: KEY_3
Orphan StringName: KEY_4
Orphan StringName: KEY_5
Orphan StringName: KEY_6
Orphan StringName: KEY_7
Orphan StringName: KEY_8
Orphan StringName: KEY_9
Orphan StringName: KEY_A
Orphan StringName: KEY_B
Orphan StringName: KEY_C
Orphan StringName: KEY_D
Orphan StringName: KEY_E
Orphan StringName: KEY_F
Orphan StringName: KEY_G
Orphan StringName: KEY_H
Orphan StringName: KEY_I
Orphan StringName: KEY_J
Orphan StringName: KEY_K
Orphan StringName: KEY_L
Orphan StringName: KEY_M
Orphan StringName: KEY_N
Orphan StringName: KEY_O
Orphan StringName: KEY_P
Orphan StringName: KEY_Q
Orphan StringName: KEY_R
Orphan StringName: KEY_S
Orphan StringName: KEY_T
Orphan StringName: KEY_U
Orphan StringName: KEY_V
Orphan StringName: KEY_W
Orphan StringName: KEY_X
Orphan StringName: KEY_Y
Orphan StringName: KEY_Z
Orphan StringName: KEY_REFRESH
Orphan StringName: PROPERTY_USAGE_STORE_IF_NULL
Orphan StringName: KEY_BACK
Orphan StringName: KEY_OPENURL
Orphan StringName: SIDE_TOP
Orphan StringName: PROPERTY_HINT_LAYERS_2D_NAVIGATION
Orphan StringName: TYPE_OBJECT
Orphan StringName: ERR_LOCKED
Orphan StringName: KEY_APOSTROPHE
Orphan StringName: MOUSE_BUTTON_NONE
Orphan StringName: JOY_BUTTON_PADDLE1
Orphan StringName: JOY_BUTTON_PADDLE2
Orphan StringName: JOY_BUTTON_PADDLE3
Orphan StringName: JOY_BUTTON_PADDLE4
Orphan StringName: OP_GREATER_EQUAL
Orphan StringName: ERR_CYCLIC_LINK
Orphan StringName: KEY_LAUNCHMEDIA
Orphan StringName: KEY_JIS_EISU
Orphan StringName: COUNTERCLOCKWISE
Orphan StringName: ERR_CANT_RESOLVE
Orphan StringName: PROPERTY_USAGE_HIGH_END_GFX
Orphan StringName: PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED
Orphan StringName: TYPE_RECT2
Orphan StringName: ERR_FILE_CANT_WRITE
Orphan StringName: PROPERTY_HINT_LAYERS_3D_NAVIGATION
Orphan StringName: KEY_KP_ENTER
Orphan StringName: ERR_UNAVAILABLE
Orphan StringName: PROPERTY_HINT_LAYERS_3D_PHYSICS
Orphan StringName: ClockDirection
Orphan StringName: PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT
Orphan StringName: KEY_VOLUMEDOWN
Orphan StringName: METHOD_FLAG_EDITOR
Orphan StringName: OP_MAX
Orphan StringName: PROPERTY_HINT_FLAGS
Orphan StringName: ERR_FILE_NO_PERMISSION
Orphan StringName: KEY_ASCIITILDE
Orphan StringName: OP_BIT_OR
Orphan StringName: VERTICAL_ALIGNMENT_CENTER
Orphan StringName: ERR_FILE_UNRECOGNIZED
Orphan StringName: KEY_MEDIAPLAY
Orphan StringName: VERTICAL_ALIGNMENT_FILL
Orphan StringName: OP_NOT
Orphan StringName: KEY_VOLUMEMUTE
Orphan StringName: CORNER_TOP_RIGHT
Orphan StringName: PROPERTY_USAGE_GROUP
Orphan StringName: METHOD_FLAG_VARARG
Orphan StringName: KEY_MASK_GROUP_SWITCH
Orphan StringName: PROPERTY_HINT_ARRAY_TYPE
Orphan StringName: PROPERTY_HINT_LAYERS_2D_RENDER
Orphan StringName: PROPERTY_USAGE_CHECKABLE
Orphan StringName: KEY_MENU
Orphan StringName: KEY_SECTION
Orphan StringName: KEY_META
Orphan StringName: PROPERTY_USAGE_SCRIPT_VARIABLE
Orphan StringName: KEY_DELETE
Orphan StringName: PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT
Orphan StringName: Corner
Orphan StringName: PROPERTY_USAGE_SUBGROUP
Orphan StringName: OP_DIVIDE
Orphan StringName: KEY_NUMLOCK
Orphan StringName: FAILED
Orphan StringName: JOY_AXIS_RIGHT_X
Orphan StringName: JOY_AXIS_RIGHT_Y
Orphan StringName: OP_NOT_EQUAL
Orphan StringName: PROPERTY_HINT_NODE_PATH_VALID_TYPES
Orphan StringName: KEY_EQUAL
Orphan StringName: KEY_LAUNCH0
Orphan StringName: KEY_LAUNCH1
Orphan StringName: KEY_LAUNCH2
Orphan StringName: KEY_LAUNCH3
Orphan StringName: KEY_LAUNCH4
Orphan StringName: KEY_LAUNCH5
Orphan StringName: KEY_LAUNCH6
Orphan StringName: KEY_LAUNCH7
Orphan StringName: KEY_LAUNCH8
Orphan StringName: KEY_LAUNCH9
Orphan StringName: KEY_LAUNCHA
Orphan StringName: KEY_LAUNCHB
Orphan StringName: KEY_LAUNCHC
Orphan StringName: KEY_LAUNCHD
Orphan StringName: KEY_LAUNCHE
Orphan StringName: KEY_LAUNCHF
Orphan StringName: PROPERTY_HINT_OBJECT_ID
Orphan StringName: MIDI_MESSAGE_SYSTEM_RESET
Orphan StringName: PropertyUsageFlags
Orphan StringName: OP_MULTIPLY
Orphan StringName: custom_signal
Orphan StringName: MIDI_MESSAGE_PROGRAM_CHANGE
Orphan StringName: VERTICAL_ALIGNMENT_BOTTOM
Orphan StringName: PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT
Orphan StringName: CORNER_TOP_LEFT
Orphan StringName: TYPE_RECT2I
Orphan StringName: KEY_DOLLAR
Orphan StringName: float32
Orphan StringName: float64
Orphan StringName: MouseButton
Orphan StringName: JOY_BUTTON_RIGHT_SHOULDER
Orphan StringName: KEY_UNDERSCORE
Orphan StringName: KEY_JIS_KANA
Orphan StringName: MOUSE_BUTTON_MASK_RIGHT
Orphan StringName: KEY_KP_0
Orphan StringName: KEY_KP_1
Orphan StringName: KEY_KP_2
Orphan StringName: KEY_KP_3
Orphan StringName: KEY_KP_4
Orphan StringName: KEY_KP_5
Orphan StringName: KEY_KP_6
Orphan StringName: KEY_KP_7
Orphan StringName: KEY_KP_8
Orphan StringName: KEY_KP_9
Orphan StringName: OP_POSITIVE
Orphan StringName: PROPERTY_USAGE_EDITOR_BASIC_SETTING
Orphan StringName: KEY_BRACERIGHT
Orphan StringName: MIDI_MESSAGE_NOTE_OFF
Orphan StringName: JOY_BUTTON_GUIDE
Orphan StringName: OP_BIT_NEGATE
Orphan StringName: PROPERTY_USAGE_READ_ONLY
Orphan StringName: OP_SUBTRACT
Orphan StringName: JOY_AXIS_INVALID
Orphan StringName: TYPE_COLOR
Orphan StringName: MIDI_MESSAGE_STOP
Orphan StringName: ERR_UNCONFIGURED
Orphan StringName: ERR_DATABASE_CANT_READ
Orphan StringName: KEY_HOMEPAGE
Orphan StringName: INLINE_ALIGNMENT_TOP
Orphan StringName: JOY_BUTTON_DPAD_DOWN
Orphan StringName: PROPERTY_HINT_GLOBAL_FILE
Orphan StringName: PROPERTY_HINT_EXPRESSION
Orphan StringName: PROPERTY_HINT_INT_IS_POINTER
Orphan StringName: OP_XOR
Orphan StringName: PROPERTY_HINT_LINK
Orphan StringName: TYPE_PACKED_VECTOR2_ARRAY
Orphan StringName: KEY_EXCLAM
Orphan StringName: ERR_FILE_BAD_DRIVE
Orphan StringName: KEY_GREATER
Orphan StringName: PROPERTY_USAGE_NIL_IS_VARIANT
Orphan StringName: ERR_DUPLICATE_SYMBOL
Orphan StringName: KEY_PAGEDOWN
Orphan StringName: CLOCKWISE
Orphan StringName: PROPERTY_USAGE_NO_EDITOR
Orphan StringName: INLINE_ALIGNMENT_BOTTOM_TO
Orphan StringName: KEY_KP_PERIOD
Orphan StringName: MIDI_MESSAGE_ACTIVE_SENSING
Orphan StringName: OP_BIT_XOR
Orphan StringName: JOY_AXIS_LEFT_X
Orphan StringName: JOY_AXIS_LEFT_Y
Orphan StringName: MIDI_MESSAGE_CONTROL_CHANGE
Orphan StringName: TYPE_CALLABLE
Orphan StringName: KeyModifierMask
Orphan StringName: MIDI_MESSAGE_TIMING_CLOCK
Orphan StringName: MOUSE_BUTTON_WHEEL_UP
Orphan StringName: KEY_MASK_CMD_OR_CTRL
Orphan StringName: TYPE_VECTOR2I
Orphan StringName: TYPE_VECTOR3I
Orphan StringName: ERR_BUSY
Orphan StringName: TYPE_VECTOR4I
Orphan StringName: PROPERTY_HINT_LOCALIZABLE_STRING
Orphan StringName: PROPERTY_HINT_COLOR_NO_ALPHA
Orphan StringName: ERR_FILE_ALREADY_IN_USE
Orphan StringName: KEY_BACKSLASH
Orphan StringName: Orientation
Orphan StringName: MOUSE_BUTTON_RIGHT
Orphan StringName: TYPE_PACKED_FLOAT64_ARRAY
Orphan StringName: PROPERTY_USAGE_CLASS_IS_ENUM
Orphan StringName: KEY_DOWN
Orphan StringName: ERR_FILE_EOF
Orphan StringName: TYPE_QUATERNION
Orphan StringName: KEY_SHIFT
Orphan StringName: ERR_HELP
Orphan StringName: MOUSE_BUTTON_MASK_MB_XBUTTON1
Orphan StringName: MOUSE_BUTTON_MASK_MB_XBUTTON2
Orphan StringName: MIDI_MESSAGE_TUNE_REQUEST
Orphan StringName: TYPE_INT
Orphan StringName: ERR_PARAMETER_RANGE_ERROR
Orphan StringName: METHOD_FLAG_NORMAL
Orphan StringName: KEY_HELP
Orphan StringName: KEY_PERIOD
Orphan StringName: SIDE_LEFT
Orphan StringName: TYPE_PACKED_FLOAT32_ARRAY
Orphan StringName: JOY_BUTTON_MISC1
Orphan StringName: ERR_FILE_CANT_OPEN
Orphan StringName: KEY_KP_MULTIPLY
Orphan StringName: MOUSE_BUTTON_MIDDLE
Orphan StringName: KEY_AT
Orphan StringName: VerticalAlignment
Orphan StringName: KEY_F1
Orphan StringName: KEY_F2
Orphan StringName: KEY_F3
Orphan StringName: KEY_F4
Orphan StringName: KEY_F5
Orphan StringName: KEY_F6
Orphan StringName: KEY_F7
Orphan StringName: KEY_F8
Orphan StringName: KEY_F9
Orphan StringName: INLINE_ALIGNMENT_BASELINE_TO
Orphan StringName: MIDI_MESSAGE_START
Orphan StringName: KEY_UP
Orphan StringName: KEY_CODE_MASK
Orphan StringName: PROPERTY_HINT_RANGE
Orphan StringName: TYPE_PACKED_COLOR_ARRAY
Orphan StringName: JOY_AXIS_MAX
Orphan StringName: KEY_MINUS
Orphan StringName: ERR_CANT_OPEN
Orphan StringName: KEY_SLASH
Orphan StringName: ERR_INVALID_DATA
Orphan StringName: MOUSE_BUTTON_WHEEL_RIGHT
Orphan StringName: MIDI_MESSAGE_NONE
Orphan StringName: HORIZONTAL_ALIGNMENT_FILL
Orphan StringName: TYPE_MAX
Orphan StringName: PROPERTY_HINT_MULTILINE_TEXT
Orphan StringName: MIDI_MESSAGE_SONG_SELECT
Orphan StringName: KEY_MODIFIER_MASK
Orphan StringName: PROPERTY_USAGE_KEYING_INCREMENTS
Orphan StringName: KEY_PAUSE
Orphan StringName: METHOD_FLAG_STATIC
Orphan StringName: KEY_LAUNCHMAIL
Orphan StringName: PROPERTY_HINT_INT_IS_OBJECTID
Orphan StringName: TYPE_NIL
Orphan StringName: HorizontalAlignment
Orphan StringName: KEY_KEYBOARD
Orphan StringName: KEY_PERCENT
Orphan StringName: Key
Orphan StringName: KEY_BRACELEFT
Orphan StringName: PROPERTY_HINT_PLACEHOLDER_TEXT
StringName: 530 unclaimed string names at exit.

@pcting pcting added the blocker Blocker issue label Jul 20, 2023
@pcting pcting linked a pull request Jul 24, 2023 that will close this issue
@dennwc
Copy link

dennwc commented Aug 7, 2023

There seems to be an issue in Godot itself: godotengine/godot#73554

@gedw99
Copy link

gedw99 commented Aug 7, 2023

There seems to be an issue in Godot itself: godotengine/godot#73554

@dennwc Nicely spotted .... Any thoughts on actions ? wait it out on their side ?

@dennwc
Copy link

dennwc commented Aug 7, 2023

README currently states that:

Although the tests confirm positive results, the godot-go bindings are currently not useable until the blocker reference counting issue is fixed. Further development won't make much sense until this is addressed.

This note should probably be replaced with a reference to Godot issue instead. And it looks like it's not a blocker after all.

@Jade-TheCat
Copy link

If this is not a blocker, are the bindings as they are usable, unlike what is currently hinted by the readme?

@pcting
Copy link
Contributor Author

pcting commented Sep 27, 2023

my original understanding of the issue was incorrect. but i have a massive PR that i'm going to merge in soon that fixes the needed changes to support RefCounted objects that wraps this call:

/**
 * @name ref_get_object
 * @since 4.1
 *
 * Gets the Object from a reference.
 *
 * @param p_ref A pointer to the reference.
 *
 * @return A pointer to the Object from the reference or NULL.
 */
typedef GDExtensionObjectPtr (*GDExtensionInterfaceRefGetObject)(GDExtensionConstRefPtr p_ref);

this will require using 4.2-dev5. i'l try to get my remaining changes merged in this by the weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocker Blocker issue bug Something isn't working help wanted Extra attention is needed
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

5 participants