godotengine / godot

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

Continously printing text to the console while paused #96180

Open Mousedotexecutable opened 2 months ago

Mousedotexecutable commented 2 months ago

Tested versions

System information

Godot v4.3.stable - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1050 with Max-Q Design (NVIDIA; 31.0.15.4680) - Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz (8 Threads)

Issue description

Godot will continue printing text to the console when the scene tree is paused. The text should stop being printed to the console while the tree is paused.

It can even continue printing while the game window has been closed. The only way to fully close the game, is to press the stop button in the editor.

Steps to reproduce

1). Create a node and have it call the print method under the process function. 2). Create a node that pauses the game based on user control, make sure to set its process mode to always. 3). Run the scene 4). Wait until the output text counter has reached around 10,000 digits.

I'm unsure how to make it consistantly reproduce it so that it continues printing and keep the game from fully closing.

Minimal reproduction project (MRP)

Open the world scene, run the project and then follow the instructions written on the label.

PrintingBugReproduction.zip

Swarkin commented 2 months ago

I don't think this is Godot specific, as I've had too frequent prints be stuck in some kind of queue (editor/os lag?) in other languages too.

Mousedotexecutable commented 2 months ago

I don't think this is Godot specific, as I've had too frequent prints be stuck in some kind of queue (editor/os lag?) in other languages too.

While that could be the case, I still find it odd that it can prevent the game from fully closing the application.

Swarkin commented 2 months ago

It is likely blocking until the output buffer or queue has been fully printed to the console.

Mickeon commented 2 months ago

This happens when the console cannot keep up with the sheer amount of messages to print. To avoid the editor being entirely unresponsive, all messages are queued up and written in the console at a more comfortable pace. You may be underestimating how many times _process is being called every second.