godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
88.89k stars 20.15k forks source link

Project crash when using set_refuse_new_connections #40507

Closed qarmin closed 4 years ago

qarmin commented 4 years ago

Godot version: 4.0.dev.custom_build. 9e34ba485

OS/device including version: Ubuntu 20.04

Issue description:

[1] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7fa83d61c210] (??:0)
[2] godot4(enet_host_refuse_new_connections+0x17) [0x2449752] (/mnt/Miecz/mojgodot/thirdparty/enet/godot.cpp:419)
[3] NetworkedMultiplayerENet::set_refuse_new_connections(bool) (/mnt/Miecz/mojgodot/modules/enet/networked_multiplayer_enet.cpp:646)
[4] MethodBind1<bool>::call(Object*, Variant const**, int, Callable::CallError&) (/mnt/Miecz/mojgodot/./core/method_bind.gen.inc:775 (discriminator 12))
[5] Object::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/mojgodot/core/object.cpp:890 (discriminator 1))
[6] Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Callable::CallError&) (/mnt/Miecz/mojgodot/core/variant_call.cpp:1255 (discriminator 1))
[7] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (/mnt/Miecz/mojgodot/modules/gdscript/gdscript_function.cpp:1047)
[8] GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) (/mnt/Miecz/mojgodot/modules/gdscript/gdscript.cpp:1306)
[9] Node::_notification(int) (/mnt/Miecz/mojgodot/scene/main/node.cpp:57)
[10] Node::_notificationv(int, bool) (/mnt/Miecz/mojgodot/./scene/main/node.h:46 (discriminator 14))
[11] CanvasItem::_notificationv(int, bool) (/mnt/Miecz/mojgodot/./scene/main/canvas_item.h:162 (discriminator 3))
[12] Node2D::_notificationv(int, bool) (/mnt/Miecz/mojgodot/./scene/2d/node_2d.h:37 (discriminator 3))
[13] Object::notification(int, bool) (/mnt/Miecz/mojgodot/core/object.cpp:901)
[14] SceneTree::_notify_group_pause(StringName const&, int) (/mnt/Miecz/mojgodot/scene/main/scene_tree.cpp:826)
[15] SceneTree::idle(float) (/mnt/Miecz/mojgodot/scene/main/scene_tree.cpp:455 (discriminator 2))
[16] Main::iteration() (/mnt/Miecz/mojgodot/main/main.cpp:2194)
[17] OS_LinuxBSD::run() (/mnt/Miecz/mojgodot/platform/linuxbsd/os_linuxbsd.cpp:238)
[18] godot4(main+0x125) [0x19d6f2b] (/mnt/Miecz/mojgodot/platform/linuxbsd/godot_linuxbsd.cpp:57)
[19] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7fa83d5fd0b3] (??:0)
[20] godot4(_start+0x2e) [0x19d6d4e] (??:?)

Steps to reproduce:

  1. Run project

Minimal reproduction project: TheWorstGodotTestProject.zip

Code

extends Node2D

var q_NetworkedMultiplayerENet: NetworkedMultiplayerENet = NetworkedMultiplayerENet.new()

func _process(delta) -> void:
    if randi() % 2 == 1:
        q_NetworkedMultiplayerENet = NetworkedMultiplayerENet.new()
    if randi() % 2 == 1:
        q_NetworkedMultiplayerENet.set_refuse_new_connections(Autoload.get_bool())
qarmin commented 4 years ago

Crash also happens with Godot 3.2.2

Faless commented 4 years ago

I can confirm this, I'll fix it for 3.2.3 .