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

DynamicFont causing Game Crash #15392

Closed
menip opened this issue Jan 6, 2018 · 18 comments

Comments

Projects
None yet
6 participants
@menip
Copy link

commented Jan 6, 2018

Godot version:
8e82404

OS/device including version:
Toaster running Mint

Issue description:
get_tree().change_scene(path) causes game crash when I use a dynamic font as part of my scene in some cases. I'm not sure why it is crashing, and have not been able to create demo project to reproduce yet, but seems like it is a DynamicFont issue.
What happens: my main menu is loaded at game startup. Everything is fine. I am able to navigate through a level select screen that uses DynamicFont, play a level. Crash happens when returning from level to main menu.

handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7fded8e4f4b0] (??:0)
[2] Reference::reference() (GODOTPATH/godot/core/reference.cpp:70)
[3] Reference::init_ref() (GODOTPATH/godot/core/reference.cpp:37)
[4] Ref::ref_pointer(DynamicFontAtSize*) (GODOTPATH/godot/core/reference.h:84 (discriminator 2))
[5] Ref::Ref(DynamicFontAtSize*) (GODOTPATH/godot/core/reference.h:220)
[6] DynamicFontData::_get_dynamic_font_at_size(DynamicFontData::CacheID) (GODOTPATH/godot/scene/resources/dynamic_font.cpp:50)
[7] DynamicFont::set_font_data(Ref const&) (GODOTPATH/godot/scene/resources/dynamic_font.cpp:678)
[8] MethodBind1<Ref const&>::call(Object*, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/method_bind.gen.inc:729 (discriminator 12))
[9] ClassDB::set_property(Object*, StringName const&, Variant const&, bool*) (GODOTPATH/godot/core/class_db.cpp:989)
[10] Object::set(StringName const&, Variant const&, bool*) (GODOTPATH/godot/core/object.cpp:422)
[11] ResourceInteractiveLoaderText::poll() (GODOTPATH/godot/scene/resources/scene_format_text.cpp:529 (discriminator 3))
[12] ResourceFormatLoader::load(String const&, String const&, Error*) (GODOTPATH/godot/core/io/resource_loader.cpp:138)
[13] ResourceLoader::_load(String const&, String const&, String const&, bool, Error*) (GODOTPATH/godot/core/io/resource_loader.cpp:173 (discriminator 7))
[14] ResourceLoader::load(String const&, String const&, bool, Error*) (GODOTPATH/godot/core/io/resource_loader.cpp:219)
[15] SceneTree::change_scene(String const&) (GODOTPATH/godot/scene/main/scene_tree.cpp:1233 (discriminator 2))
[16] MethodBind1R<Error, String const&>::call(Object*, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/./core/method_bind.gen.inc:903 (discriminator 8))
[17] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/object.cpp:914 (discriminator 1))
[18] Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Variant::CallError&) (GODOTPATH/godot/core/variant_call.cpp:1013 (discriminator 1))
[19] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) (GODOTPATH/godot/modules/gdscript/gdscript_function.cpp:811)
[20] GDScriptInstance::call(StringName const&, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/modules/gdscript/gdscript.cpp:1151)
[21] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/object.cpp:893 (discriminator 1))
[22] Object::emit_signal(StringName const&, Variant const**, int) (GODOTPATH/godot/core/object.cpp:1195 (discriminator 1))
[23] Object::emit_signal(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (GODOTPATH/godot/core/object.cpp:1241)
[24] BaseButton::_gui_input(Ref) (GODOTPATH/godot/scene/gui/base_button.cpp:139 (discriminator 2))
[25] MethodBind1<Ref >::call(Object*, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/method_bind.gen.inc:729 (discriminator 12))
[26] Object::call_multilevel(StringName const&, Variant const**, int) (GODOTPATH/godot/core/object.cpp:748 (discriminator 1))
[27] Object::call_multilevel(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (GODOTPATH/godot/core/object.cpp:855)
[28] Viewport::_gui_call_input(Control*, Ref const&) (GODOTPATH/godot/scene/main/viewport.cpp:1480 (discriminator 2))
[29] Viewport::_gui_input_event(Ref) (GODOTPATH/godot/scene/main/viewport.cpp:1830 (discriminator 3))
[30] Viewport::input(Ref const&) (GODOTPATH/godot/scene/main/viewport.cpp:2445 (discriminator 2))
[31] Viewport::_vp_input(Ref const&) (GODOTPATH/godot/scene/main/viewport.cpp:1324)
[32] MethodBind1<Ref const&>::call(Object*, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/method_bind.gen.inc:729 (discriminator 12))
[33] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/object.cpp:914 (discriminator 1))
[34] Object::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (GODOTPATH/godot/core/object.cpp:839)
[35] SceneTree::call_group_flags(unsigned int, StringName const&, StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (GODOTPATH/godot/scene/main/scene_tree.cpp:248)
[36] SceneTree::input_event(Ref const&) (GODOTPATH/godot/scene/main/scene_tree.cpp:404 (discriminator 6))
[37] InputDefault::parse_input_event(Ref const&) (GODOTPATH/godot/main/input_default.cpp:323)
[38] OS_X11::process_xevents() (GODOTPATH/godot/platform/x11/os_x11.cpp:1762 (discriminator 3))
[39] OS_X11::run() (GODOTPATH/godot/platform/x11/os_x11.cpp:2390)
[40] GODOTPATH/godot/bin/godot.x11.tools.64(main+0xd3) [0xe74d49] (GODOTPATH/godot/platform/x11/godot_x11.cpp:56)
[41] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7fded8e3a830] (??:0)
[42] GODOTPATH/godot/bin/godot.x11.tools.64(_start+0x29) [0xe74ba9] (??:?)
-- END OF BACKTRACE --
Nothing read: Connection reset by peer
ERROR: read: Server disconnected!

@akien-mga akien-mga added this to the 3.0 milestone Jan 6, 2018

@menip

This comment has been minimized.

Copy link
Author

commented Jan 7, 2018

I have a little more info. I'm out of time, so unable to create project to replicate the issue, but I did prune my initial project so that it would be easier to navigate:
GodotCrash.zip

To trigger crash, I run the project and press buttons start, 0, and main menu, until there is a crash. This tends to happen after several such cycles. Of note is that when switching back to main menu for the first time, the label is no longer rendered. I've also had times when label wouldn't be visible for several cycles, then appear significantly scaled down.

Here are some crash logs I came across while investigating this: https://gist.github.com/menip/15c32dc57407b060ac6678d87424f9b3

EDIT: updated project to switch scenes automatically.

@Geequlim

This comment has been minimized.

Copy link
Member

commented Jan 7, 2018

Arch Linux x86_64 build with 8c7b6fe
I have run the project you provided more than 10min it change scenes every frame but never crashed.

@poke1024

This comment has been minimized.

Copy link
Contributor

commented Jan 7, 2018

Think I found the problem, fix coming.

@menip

This comment has been minimized.

Copy link
Author

commented Jan 7, 2018

Can confirm that project provided above no longer crashes.
However, I am still able to reliably crash with this project: GodotCrash2.zip

Note that you will need to press the start, 0, and main menu buttons, as I don't have it on auto here.

As you can see below, when first switching back to main scene, the label disappears. After couple cycles, there is a crash and I stop the recording.
godotcrash

@poke1024

This comment has been minimized.

Copy link
Contributor

commented Jan 7, 2018

Are you sure? I can see the problem with GodotCrash2 on the old code, but with the new version I can't reproduce a crash there:

demo

@menip

This comment has been minimized.

Copy link
Author

commented Jan 7, 2018

@poke1024 Just built with 37ca542, still crashing. Managed to trigger a different crash as well. This is same crash as before, while this this is a new one I haven't seen before.

In both mine and your gifs the label with text "tmp" disappears when main menu is loaded from game scene. I'm assuming it is all part of this same issue.

@menip

This comment has been minimized.

Copy link
Author

commented Jan 7, 2018

I'm running Linux Mint 18. Building with scons platform=x11

@poke1024

This comment has been minimized.

Copy link
Contributor

commented Jan 8, 2018

@akien-mga We need to reopen this again. There's still something hiding here (at the same time, the fix we committed definitely was a bug and fixed stuff).

Concerning the new crash log here: no idea what's happening there. I don't see this under macOS, while I see exactly the code and stack trace that crashes on Linux, but without crashes (meaning: it's the same execution path). Since I found nothing that could explain this, here a two wild guesses: (1) a threading problem (I saw that for some reason DynamicFont is mutexed), or (2) a random memory smash originating from the Linux version of FreeType. Need to debug this under Linux, but don't have time at the moment.

@reduz

This comment has been minimized.

Copy link
Member

commented Jan 12, 2018

I can't reproduce either

@menip

This comment has been minimized.

Copy link
Author

commented Jan 13, 2018

I'm getting crash with 30d7943. Will try same project on several machines, see if I can reproduce.

@reduz

This comment has been minimized.

Copy link
Member

commented Jan 18, 2018

I will close this issue, as I think the original one was properly fixed. Please open a new one if you can find proper reproduction steps. As of now, there is nothing that can be done with just a report of a crash and no information or ways to reproduce :(

@reduz reduz closed this Jan 18, 2018

@akien-mga

This comment has been minimized.

Copy link
Member

commented Jan 18, 2018

Well the original stacktrace looks exactly like what #15830 is trying to fix, so I guess the issue is still valid.

@endragor

This comment has been minimized.

Copy link
Contributor

commented Jan 18, 2018

Can confirm the crash also happens somewhat randomly on Android with this stack trace:

SIGSEGV SEGV_MAPERR 0x0000000000000010
0  libgodot_android.so            0xa17f1bd8 Reference::init_ref() (reference.cpp:70)
1  libgodot_android.so            0xa11f8cc4 DynamicFontData::_get_dynamic_font_at_size(DynamicFontData::CacheID) (reference.h:84)
2  libgodot_android.so            0xa11fd274 DynamicFont::set_font_data(Ref<DynamicFontData> const&) (dynamic_font.cpp:679)
3  libgodot_android.so            0xa1208cd8 MethodBind1<Ref<DynamicFontData> const&>::call(Object*, Variant const**, int, Variant::CallError&) (method_bind.gen.inc:729)
4  libgodot_android.so            0xa1737d60 ClassDB::set_property(Object*, StringName const&, Variant const&, bool*) (class_db.cpp:989)
5  libgodot_android.so            0xa17b9684 Object::set(StringName const&, Variant const&, bool*) (object.cpp:422)
6  libgodot_android.so            0xa1804c44 Resource::duplicate_for_local_scene(Node*, Map<Ref<Resource>, Ref<Resource>, Comparator<Ref<Resource> >, DefaultAllocator>&) (resource.cpp:182)
7  libgodot_android.so            0xa12db054 SceneState::instance(SceneState::GenEditState) const (packed_scene.cpp:243)
8  libgodot_android.so            0xa12dd464 PackedScene::instance(PackedScene::GenEditState) const (packed_scene.cpp:1682)
9  libgodot_android.so            0xa12d9e38 SceneState::instance(SceneState::GenEditState) const (packed_scene.cpp:138)
10 libgodot_android.so            0xa12dd464 PackedScene::instance(PackedScene::GenEditState) const (packed_scene.cpp:1682)
11 libgodot_android.so            0xa12f72b8 MethodBind1RC<Node*, PackedScene::GenEditState>::ptrcall(Object*, void const**, void*) (method_bind.gen.inc:1258)

@reduz reduz reopened this Jan 18, 2018

@akien-mga

This comment has been minimized.

Copy link
Member

commented Jan 18, 2018

I can also reproduce the crash in the current master branch using the project in #15392 (comment) (note that the name argument in a method needs to be renamed to prevent conflicts with Node.name).

Stacktrace from gdb:

(gdb) bt
#0  0x000000000273c550 in Reference::reference (this=0x52d5440) at core/reference.cpp:70
#1  0x000000000273c2ec in Reference::init_ref (this=0x52d5440) at core/reference.cpp:37
#2  0x000000000228cff2 in Ref<DynamicFontAtSize>::ref_pointer (this=0x7fffffff9560, p_ref=0x52d5440) at core/reference.h:84
#3  0x000000000228b3d3 in Ref<DynamicFontAtSize>::Ref (this=0x7fffffff9560, p_reference=0x52d5440) at core/reference.h:217
#4  0x0000000002282c27 in DynamicFontData::_get_dynamic_font_at_size (this=0x52df540, p_cache_id=...) at scene/resources/dynamic_font.cpp:50
#5  0x000000000228517a in DynamicFont::set_font_data (this=0x52e3170, p_data=...) at scene/resources/dynamic_font.cpp:679
#6  0x000000000229307c in MethodBind1<Ref<DynamicFontData> const&>::call (this=0x4cf2620, p_object=0x52e3170, p_args=0x7fffffff9648, p_arg_count=1, r_error=...)
    at core/method_bind.gen.inc:729
#7  0x000000000283da11 in ClassDB::set_property (p_object=0x52e3170, p_property=..., p_value=..., r_valid=0x0) at core/class_db.cpp:989
#8  0x0000000002804838 in Object::set (this=0x52e3170, p_name=..., p_value=..., r_valid=0x0) at core/object.cpp:422
#9  0x00000000022ca51f in ResourceInteractiveLoaderText::poll (this=0x52ed430) at scene/resources/scene_format_text.cpp:529
#10 0x0000000002966137 in ResourceFormatLoader::load (this=0x4a69670, p_path=..., p_original_path=..., r_error=0x0) at core/io/resource_loader.cpp:138
#11 0x000000000296631c in ResourceLoader::_load (p_path=..., p_original_path=..., p_type_hint=..., p_no_cache=false, r_error=0x0) at core/io/resource_loader.cpp:173
#12 0x00000000029667b0 in ResourceLoader::load (p_path=..., p_type_hint=..., p_no_cache=false, r_error=0x0) at core/io/resource_loader.cpp:218
#13 0x0000000001d3a9df in SceneTree::change_scene (this=0x4f6af90, p_path=...) at scene/main/scene_tree.cpp:1235
#14 0x000000000103fcff in MethodBind1R<Error, String const&>::call (this=0x4d2e8f0, p_object=0x4f6af90, p_args=0x7fffffffa2c8, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:903
#15 0x000000000280744f in Object::call (this=0x4f6af90, p_method=..., p_args=0x7fffffffa2c8, p_argcount=1, r_error=...) at core/object.cpp:914
#16 0x000000000276db5a in Variant::call_ptr (this=0x7fffffffa280, p_method=..., p_args=0x7fffffffa2c8, p_argcount=1, r_ret=0x0, r_error=...) at core/variant_call.cpp:1013
#17 0x0000000000f81eab in GDScriptFunction::call (this=0x52d79d0, p_instance=0x52db220, p_args=0x7fffffffb270, p_argcount=0, r_err=..., p_state=0x0)
    at modules/gdscript/gdscript_function.cpp:808
#18 0x0000000000fbbce6 in GDScriptInstance::call (this=0x52db220, p_method=..., p_args=0x7fffffffb270, p_argcount=0, r_error=...) at modules/gdscript/gdscript.cpp:1151
#19 0x000000000280732f in Object::call (this=0x5426c00, p_method=..., p_args=0x7fffffffb270, p_argcount=0, r_error=...) at core/object.cpp:893
#20 0x0000000002808c1b in Object::emit_signal (this=0x5427040, p_name=..., p_args=0x7fffffffb270, p_argcount=0) at core/object.cpp:1195
#21 0x0000000002809173 in Object::emit_signal (this=0x5427040, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:1240
#22 0x0000000001db3602 in BaseButton::_gui_input (this=0x5427040, p_event=...) at scene/gui/base_button.cpp:139
#23 0x0000000001821330 in MethodBind1<Ref<InputEvent> >::call (this=0x4ac0c80, p_object=0x5427040, p_args=0x7fffffffc0a0, p_arg_count=1, r_error=...) at core/method_bind.gen.inc:729
#24 0x00000000028067fa in Object::call_multilevel (this=0x5427040, p_method=..., p_args=0x7fffffffc0a0, p_argcount=1) at core/object.cpp:748
#25 0x0000000002807037 in Object::call_multilevel (this=0x5427040, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:854
#26 0x0000000001d0daa5 in Viewport::_gui_call_input (this=0x4f6bdc0, p_control=0x5427040, p_input=...) at scene/main/viewport.cpp:1480
#27 0x0000000001d0f1e6 in Viewport::_gui_input_event (this=0x4f6bdc0, p_event=...) at scene/main/viewport.cpp:1830
---Type <return> to continue, or q <return> to quit---
#28 0x0000000001d129a7 in Viewport::input (this=0x4f6bdc0, p_event=...) at scene/main/viewport.cpp:2445
#29 0x0000000001d0cd45 in Viewport::_vp_input (this=0x4f6bdc0, p_ev=...) at scene/main/viewport.cpp:1325
#30 0x0000000001148184 in MethodBind1<Ref<InputEvent> const&>::call (this=0x4a78750, p_object=0x4f6bdc0, p_args=0x7fffffffcc50, p_arg_count=1, r_error=...) at core/method_bind.gen.inc:729
#31 0x000000000280744f in Object::call (this=0x4f6bdc0, p_method=..., p_args=0x7fffffffcc50, p_argcount=1, r_error=...) at core/object.cpp:914
#32 0x0000000002806f8e in Object::call (this=0x4f6bdc0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:838
#33 0x0000000001d353e8 in SceneTree::call_group_flags (this=0x4f6af90, p_call_flags=2, p_group=..., p_function=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...)
    at scene/main/scene_tree.cpp:250
#34 0x0000000001d360cd in SceneTree::input_event (this=0x4f6af90, p_event=...) at scene/main/scene_tree.cpp:406
#35 0x0000000000eb35cb in InputDefault::parse_input_event (this=0x4999b50, p_event=...) at main/input_default.cpp:346
#36 0x0000000000ea3e02 in OS_X11::process_xevents (this=0x7fffffffd510) at platform/x11/os_x11.cpp:1762
#37 0x0000000000ea6d97 in OS_X11::run (this=0x7fffffffd510) at platform/x11/os_x11.cpp:2388
#38 0x0000000000e9c0fb in main (argc=1, argv=0x7fffffffda28) at platform/x11/godot_x11.cpp:55
@menip

This comment has been minimized.

Copy link
Author

commented Jan 21, 2018

Can confirm still crashing at c58891f

handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7fd1ccae54b0] (??:0)
[2] Reference::unreference() (GODOTPATH/godot/core/reference.cpp:81)
[3] Ref<DynamicFontAtSize>::unref() (GODOTPATH/godot/core/reference.h:261 (discriminator 1))
[4] Ref<DynamicFontAtSize>::~Ref() (GODOTPATH/godot/core/reference.h:280)
[5] DynamicFont::~DynamicFont() (GODOTPATH/godot/scene/resources/dynamic_font.cpp:957 (discriminator 8))
[6] void memdelete<Font>(Font*) (GODOTPATH/godot/core/os/memory.h:119)
[7] Ref<Font>::unref() (GODOTPATH/godot/core/reference.h:265)
[8] Ref<Font>::~Ref() (GODOTPATH/godot/core/reference.h:280)
[9] HashMap<StringName, Ref<Font>, StringNameHasher, HashMapComparatorDefault<StringName>, (unsigned char)3, (unsigned char)8>::Pair::~Pair() (GODOTPATH/godot/core/hash_map.h:61 (discriminator 2))
[10] HashMap<StringName, Ref<Font>, StringNameHasher, HashMapComparatorDefault<StringName>, (unsigned char)3, (unsigned char)8>::Element::~Element() (GODOTPATH/godot/core/hash_map.h:73)
[11] void memdelete<HashMap<StringName, Ref<Font>, StringNameHasher, HashMapComparatorDefault<StringName>, (unsigned char)3, (unsigned char)8>::Element>(HashMap<StringName, Ref<Font>, StringNameHasher, HashMapComparatorDefault<StringName>, (unsigned char)3, (unsigned char)8>::Element*) (GODOTPATH/godot/core/os/memory.h:119)
[12] HashMap<StringName, Ref<Font>, StringNameHasher, HashMapComparatorDefault<StringName>, (unsigned char)3, (unsigned char)8>::clear() (GODOTPATH/godot/core/hash_map.h:536)
[13] HashMap<StringName, Ref<Font>, StringNameHasher, HashMapComparatorDefault<StringName>, (unsigned char)3, (unsigned char)8>::~HashMap() (GODOTPATH/godot/core/hash_map.h:602)
[14] Control::Data::~Data() (GODOTPATH/godot/scene/gui/control.h:146 (discriminator 8))
[15] Control::~Control() (GODOTPATH/godot/scene/gui/control.cpp:2993 (discriminator 2))
[16] Label::~Label() (GODOTPATH/godot/scene/gui/label.cpp:706 (discriminator 6))
[17] void memdelete<Node>(Node*) (GODOTPATH/godot/core/os/memory.h:119)
[18] Node::_notification(int) (GODOTPATH/godot/scene/main/node.cpp:160)
[19] Node::_notificationv(int, bool) (GODOTPATH/godot/./scene/main/node.h:46 (discriminator 14))
[20] CanvasItem::_notificationv(int, bool) (GODOTPATH/godot/./scene/2d/canvas_item.h:138)
[21] Control::_notificationv(int, bool) (GODOTPATH/godot/./scene/gui/control.h:51)
[22] Object::notification(int, bool) (GODOTPATH/godot/core/object.cpp:926)
[23] Object::_predelete() (GODOTPATH/godot/core/object.cpp:387)
[24] predelete_handler(Object*) (GODOTPATH/godot/core/object.cpp:1906)
[25] void memdelete<Node>(Node*) (GODOTPATH/godot/core/os/memory.h:116)
[26] SceneTree::_change_scene(Node*) (GODOTPATH/godot/scene/main/scene_tree.cpp:1224)
[27] MethodBind1<Node*>::call(Object*, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/method_bind.gen.inc:729 (discriminator 12))
[28] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (GODOTPATH/godot/core/object.cpp:914 (discriminator 1))
[29] MessageQueue::_call_function(Object*, StringName const&, Variant const*, int, bool) (GODOTPATH/godot/core/message_queue.cpp:260)
[30] MessageQueue::flush() (GODOTPATH/godot/core/message_queue.cpp:307)
[31] SceneTree::iteration(float) (GODOTPATH/godot/scene/main/scene_tree.cpp:465 (discriminator 2))
[32] Main::iteration() (GODOTPATH/godot/main/main.cpp:1711)
[33] OS_X11::run() (GODOTPATH/godot/platform/x11/os_x11.cpp:2392)
[34] GODOTPATH/godot/bin/godot.x11.tools.64(main+0xd3) [0xe77599] (GODOTPATH/godot/platform/x11/godot_x11.cpp:56)
[35] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7fd1ccad0830] (??:0)
[36] GODOTPATH/godot/bin/godot.x11.tools.64(_start+0x29) [0xe773f9] (??:?)
-- END OF BACKTRACE --

@reduz reduz closed this in 8daf549 Jan 21, 2018

@reduz

This comment has been minimized.

Copy link
Member

commented Jan 21, 2018

I could never reproduce, but Valgrind complained about memory corruption.
Due to how the bug happened, it seems the operator< at

bool DynamicFontData::CacheID::operator<(CacheID right) const {

may not have worked properly.. I did not write this code, but it seemed fine to me. Still.. I rewrote it a bit different and the error in valgrind stopped, so I guess this is fixed, but no idea why it was broke in the first place.

@menip

This comment has been minimized.

Copy link
Author

commented Jan 21, 2018

Can longer reproduce on 8daf549.
That commit message though :D

@poke1024

This comment has been minimized.

Copy link
Contributor

commented Jan 24, 2018

This might actually be an argument for having #15536 in production.

Chaosus added a commit to Chaosus/godot that referenced this issue Jan 27, 2018

fire added a commit to fire/godot that referenced this issue Feb 12, 2018

akien-mga added a commit that referenced this issue Sep 18, 2018

I have no idea why this commit fixes #15392
(cherry picked from commit 8daf549)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.