Commit Graph

70139 Commits

Author SHA1 Message Date
Thaddeus Crews
8642e970c5
C#: Add option to treat warnings as errors 2024-12-18 10:23:41 -06:00
Rémi Verschelde
6395450b10
Merge pull request #100535 from DeeJayLSP/patch-1
Fix `taa_resolve.glsl` path in COPYRIGHT.txt
2024-12-18 09:53:14 +01:00
Rémi Verschelde
6cba6299f9
Merge pull request #100195 from raulsntos/dotnet/upgrade-tfm
[.NET] Upgrade user project's TargetFramework to `net8.0`
2024-12-18 09:53:10 +01:00
Rémi Verschelde
d328c00ad3
Merge pull request #99667 from RandomShaper/res_load_verb
ResourceLoader: Print load message only when actually loading
2024-12-18 09:53:06 +01:00
Rémi Verschelde
7d30972f7c
Merge pull request #99539 from RandomShaper/fix_dotnet_rl_deadlock
Avoid deadlocks in multi-threaded management of the C# script map
2024-12-18 09:53:01 +01:00
Rémi Verschelde
e255f60634
Merge pull request #99158 from timothyqiu/shortshortcutcut
Make editor's shortcut names translated on-site
2024-12-18 09:52:56 +01:00
Rémi Verschelde
29d53a5281
Merge pull request #97371 from kitbdev/test-splitcontainer
Add tests for SplitContainer
2024-12-18 09:52:52 +01:00
Rémi Verschelde
167edb385b
Merge pull request #97288 from timothyqiu/packed-scene-check
Fix crash when using non-`PackedScene` resource for POT generation
2024-12-18 09:52:46 +01:00
Pedro J. Estébanez
6740823e40 ResourceLoader: Print load message only when actually loading 2024-12-18 09:36:16 +01:00
Haoyu Qiu
bf4e5cca3f Make editor's shortcut names translated on-site 2024-12-18 13:00:30 +08:00
Haoyu Qiu
48db6669f6 Fix crash when using non-PackedScene resource for POT generation 2024-12-18 10:15:46 +08:00
Raul Santos
8d41b5a582
[.NET] Upgrade user project's TargetFramework to net8.0
- Upgrades the TFM for new created  projects to `net8.0`.
- Implements system to upgrade TFM for existing projects to `net8.0`.
2024-12-18 02:44:32 +01:00
Rémi Verschelde
6e2cf2aa7b
Merge pull request #100533 from mihe/jolt/sleeping-contacts
Stop reporting contacts for sleeping bodies when using Jolt Physics
2024-12-18 00:39:59 +01:00
Rémi Verschelde
4e46e8beb7
Merge pull request #100464 from bruvzg/start_drag_port
Implement `window_start_drag` on Windows and Linux.
2024-12-18 00:39:56 +01:00
Rémi Verschelde
7b90590e85
Merge pull request #100422 from hpvb/from-the-depth-of-despair
Fix a crash trying to save an empty AudioStream
2024-12-18 00:39:53 +01:00
Rémi Verschelde
90555e6b4d
Merge pull request #100378 from clayjohn/particles-preprocess
Reduce slider range for Particles preprocess to discourage setting a preprocess time of 10 minutes
2024-12-18 00:39:49 +01:00
Rémi Verschelde
cb5b1ecc25
Merge pull request #100200 from syntaxerror247/android-base-color
Android: Support for `base color` retrieval
2024-12-18 00:39:45 +01:00
Rémi Verschelde
d0a0f5834e
Merge pull request #97571 from j20001970/camerafeed-virtual
Add `activate_feed` and `deactivate_feed` virtual bind to CameraFeed
2024-12-18 00:39:38 +01:00
kit
63a90b3dd8 Add tests for SplitContainer 2024-12-17 18:16:52 -05:00
Douglas Leão
3dfa7bb286
Fix taa_resolve.glsl path 2024-12-17 19:44:05 -03:00
Mikael Hermansson
5bbdb4a770 Stop reporting contacts for sleeping bodies when using Jolt Physics 2024-12-17 23:20:00 +01:00
HP van Braam
eb948bc5a8 Fix a crash trying to save an empty AudioStream
My friends, gather around as I learned something about the C standard
that is horrifying and may keep you, dear reader, up at night.

My journey began trying to fix something entirely unrelated and not
wanting to wait for ubsan builds when changing a testcase. So me, in my
infinite naivete just built the engine with tests=yes, but
optimizations turned on.

This resulted in a segfault on "[Audio][AudioStreamWAV] Save empty file".

Well, then, I thought. Lets built with asan then and find out where this
happens! Would it surprise you, my fellow traveler, that the results
were that no such crash occurred?

Thus, to the debugger I go! Fearless, with great optimism. Where I find
that through many an indirection the crash came because, somehow,
CowData::_unref() was getting called with a _ptr set to 0x1.

This can of course only end in tears. Or segmentation faults as we try
to read an atomic variable at the somewhat inconveniently situated
address at 0xfffffffffffffff0.

So I went and looked at the likely culprit, blaming many an innocent
recent change along the way. I shall spare you the falsly accused. But
if for some reason you slept poorly last night, I can assure you that
the voodoo dolls have been put away and will not be harmed further.

So in AudioStreamWAV::get_data() we go, where we find a perfectly
reasonable function! It checks to see whether or not its data is empty,
and if it is not it will resize a temporary Vector to have data_bytes of
space, after which it will do a perfectly pedestrian memcpy() and all is
well in the world.

Or so it seems! After many an hour of despair and disassembly I, at
last, decided to look at where the data gets set! A breakthrough!
Because of the padding data is never empty! So the code always runs!

Eureka! One would think. But then, foolishly, I looked into the
get_data() function one more. My mortal enemy was staring me in the
face, laughing. Because it did not care about this. Sure, the check was
worthless but still... What are we left with.

At this point I could feel the method mocking me.

"I resize the vector to 0, I then memcpy zero bytes into it." It said,
DARING me to object to this state of affairs.

And yet, if I changed the function to check for "data_bytes" rather
than data.is_empty() no crashes.

Was this a compiler bug? Am I losing my mind? But then... I remembered
the mantra of the wise compiler druids... "It Is Not A Compiler Bug".

But what then! The bug does not happen when memory is being watched!
Valgrind agreed that while accessing the SafeRefCount at
0xfffffffffffffff0 was incredibly rude, it did not inform me of anything
else untoward happening. So I read the memcpy() manpage... nothing... I
read the the memcpy() posix spec... nothing.

Finally, in despair and because I had nothing left to lose... The ISO C
language specification. As I was reading, I could hear
AudioStreamWAV::get_data() cackling, knowing that its time was up, but
proud of the madness it caused in my soul. Knowing I would never be the
same.

The behavior is undefined if either dest or src is an invalid or null pointer.

So... Here I stand before you, a broken person. But one richer in
knowledge.

I write you this from the depths of madness in the hopes that you, dear
reader, can be spared this ordeal.

May god have mercy on our souls.

We trigger the following sequence of events:

* memcpy(null, null, 0) is UB, thus dest and src cannot be null
* we inline the calls to the ctor and dtor
* now we have a function that does something that "proves"
  dest cannot be null
* we inline cowdata::_unref() which does a null check, on something
  that the compiler just convinced itself cannot be null
* the compiler removes the dead code branch where _ptr == nullptr
* we start to do pointer arithmetic on a nullptr and get send to
  uninitialized memory.

Co-Authored-By: Jason Beckmann <jasonabeckmann@gmail.com>
2024-12-17 23:14:39 +01:00
Rémi Verschelde
abf47965fc
Merge pull request #100530 from KoBeWi/fix_hack…_with_a_hack😎
Fix Timer error on startup
2024-12-17 23:00:20 +01:00
Rémi Verschelde
32c634a381
Merge pull request #100526 from fire/vsk-csg-warnings-update
Update the warnings for CSGShape3D.
2024-12-17 23:00:17 +01:00
Rémi Verschelde
f1cf8ebfd6
Merge pull request #100506 from akien-mga/dotnet-8.0-fix-GodotSharp-build
.NET: Downgrade Microsoft.CodeAnalysis.CSharp to 4.8.0 for compat with SDK 8.0.1xy
2024-12-17 23:00:13 +01:00
Rémi Verschelde
7170a4176e
Merge pull request #100500 from MajorMcDoom/collision-gen-undo-fix
Fix errors when undoing collision generation for multiple meshes with different parents
2024-12-17 23:00:10 +01:00
Rémi Verschelde
3dd60ba82f
Merge pull request #100406 from smix8/gridmap_edge_debug
Fix GridMap freeing edge connection debug mesh too early
2024-12-17 23:00:07 +01:00
Rémi Verschelde
382b0dfad1
Merge pull request #100373 from TokageItLab/fix-blendspace-discrete-sync
Fix Sync in BlendSpace1D/2D with BlendModeDiscrete
2024-12-17 23:00:02 +01:00
Rémi Verschelde
cb0d731daf
Merge pull request #100351 from raulsntos/dotnet/android-gradle-fix
[.NET] Fix gradle builds for multiple ABIs
2024-12-17 22:59:58 +01:00
Rémi Verschelde
190ae9f9dc
Merge pull request #100302 from clayjohn/light2d-optimize
Optimize PointLight2D shadow rendering by reducing draw calls and RD state changes
2024-12-17 22:59:54 +01:00
Rémi Verschelde
7a70efc2a8
Merge pull request #100151 from alessand10/fix-dx12-command-buffer-leak
Fix a command buffer leak that occurs in D3D12
2024-12-17 22:59:50 +01:00
Rémi Verschelde
f1eb2f928d
Merge pull request #100039 from TokageItLab/ping-pong-param
Make `backward` be parameter of the `AnimationTree` in the `AnimationNodeAnimation`
2024-12-17 22:59:47 +01:00
Rémi Verschelde
f08fe52d9a
Merge pull request #99963 from Faless/web/no_ip
[Web] Implement dummy IP and NetSocket
2024-12-17 22:59:42 +01:00
Rémi Verschelde
45d8c217b9
Merge pull request #99649 from ckaiser/run-instances-data
Improve run instances UX: avoid removing data and add a clear popup.
2024-12-17 22:59:37 +01:00
Rémi Verschelde
55a3c6ba2b
Merge pull request #99471 from Arnklit/fix_undo_redo_for_texture_region_editor
Fix undo redo for the texture region editor
2024-12-17 22:59:33 +01:00
Rémi Verschelde
24f88bb889
Merge pull request #99292 from Repiteo/scons/show_progress-tweaks
SCons: Address minor `show_progress` issues
2024-12-17 22:59:28 +01:00
Rémi Verschelde
d4f4129dba
Merge pull request #98978 from tetrapod00/astar-nonsense
Docs: Update AStar3D examples
2024-12-17 22:59:25 +01:00
Rémi Verschelde
66b8101cef
Merge pull request #95460 from m4gr3d/enable_mouse_forward_back_buttons
Enable `BUTTON_FORWARD` and `BUTTON_BACK` mouse buttons on Android
2024-12-17 22:59:20 +01:00
Rémi Verschelde
6244d8f38d
Merge pull request #93867 from m4gr3d/move_custom_templates_in_advanced_options
Update the visibility for the custom templates for all platforms
2024-12-17 22:59:14 +01:00
Rémi Verschelde
2c304a7383
Merge pull request #88349 from Calinou/decal-light-projector-only-allow-valid-types
Only allow valid types in Decal, Light3D projector, PointLight2D texture and CSGMesh3D mesh
2024-12-17 22:59:08 +01:00
kobewi
0ffdb6b993 Fix Timer error on startup 2024-12-17 22:26:54 +01:00
Fredia Huya-Kouadio
2d3f6963b2 Update the visibility for the custom templates for all platforms
Hide the custom template options behind the `Advanced Options` toggle
2024-12-17 13:08:47 -08:00
Anish Mishra
70b24c3d16 Android: Support for base color retrieval 2024-12-18 02:14:48 +05:30
alessand10
9ea97c017b Fix a command buffer leak that occurs in dx12 2024-12-17 14:55:39 -05:00
Hugo Locurcio
7a04d85ec3
Only allow valid types in Decal, Light3D projector, PointLight2D texture and CSGMesh3D mesh
If an invalid type is supplied (which can still be done from a script),
a warning is printed (along with a workaround for ViewportTexture).

This also adds support for "negative" resource hints such as
"Texture2D,-ViewportTexture" to exclude one or more subclasses
from a class hint.

Co-authored-by: Tomasz Chabora <kobewi4e@gmail.com>
2024-12-17 20:41:12 +01:00
K. S. Ernest (iFire) Lee
46b02f08c6 Update the warnings for CSGShape3D. 2024-12-17 11:02:38 -08:00
Zi Ye
5b19f729c2 Fix errors when undoing collision generation for multiple meshes with different parents 2024-12-17 10:14:06 -06:00
clayjohn
7c61252dd7 Optimize PointLight2D shadow rendering by reducing draw calls and RD state changes.
This dramatically reduces the CPU time spent on rendering shadows for PointLight2Ds
2024-12-17 07:41:09 -08:00
Thaddeus Crews
df6ac3973e
SCons: Fix minor show_progress issues 2024-12-17 09:27:32 -06:00
Rémi Verschelde
2b7ea6223b
Merge pull request #100510 from adamscott/tmp-dir-create
Fix non-creation of editor temporary dir
2024-12-17 16:19:41 +01:00