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

Segfault when hovering tree element and showing tooltip (GCC 7.1.1) #10372

Closed
ghost opened this issue Aug 16, 2017 · 3 comments
Closed

Segfault when hovering tree element and showing tooltip (GCC 7.1.1) #10372

ghost opened this issue Aug 16, 2017 · 3 comments
Milestone

Comments

@ghost
Copy link

ghost commented Aug 16, 2017

Operating system or device - Godot version:
Archlinux
Godot 3.0 - master 603b262

Issue description:
Compiling with

scons -j 8 platform=x11 builtin_openssl=yes target=release_debug

My GCC Version

gcc -v
Utilisation des specs internes.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/lto-wrapper
Cible : x86_64-pc-linux-gnu
Configuré avec: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp
Modèle de thread: posix
gcc version 7.1.1 20170630 (GCC)

GDB backtrace

Thread 1 "godot_gcc" received signal SIGSEGV, Segmentation fault.
__cxxabiv1::__dynamic_cast (src_ptr=0x0, 
    src_type=0x4e0eb12108 <typeinfo for Object>, 
    dst_type=0x4e0eaf04c8 <typeinfo for Control>, src2dst=0)
    at /build/gcc/src/gcc/libstdc++-v3/libsupc++/dyncast.cc:50
50	/build/gcc/src/gcc/libstdc++-v3/libsupc++/dyncast.cc: Aucun fichier ou dossier de ce type.
(gdb) bt
#0  __cxxabiv1::__dynamic_cast (src_ptr=0x0, 
    src_type=0x4e0eb12108 <typeinfo for Object>, 
    dst_type=0x4e0eaf04c8 <typeinfo for Control>, src2dst=0)
    at /build/gcc/src/gcc/libstdc++-v3/libsupc++/dyncast.cc:50
#1  0x0000004e0d046417 in Control::get_root_parent_control() const ()
#2  0x0000004e0cff026e in Viewport::_gui_show_tooltip() ()
#3  0x0000004e0cff89af in Viewport::_notification(int) ()
#4  0x0000004e0d9744c4 in Object::notification(int, bool) ()
#5  0x0000004e0cfd8569 in SceneTree::_notify_group_pause(StringName const&, int) ()
#6  0x0000004e0cfd91af in SceneTree::iteration(float) ()
#7  0x0000004e0c549b03 in Main::iteration() ()
#8  0x0000004e0c536841 in OS_X11::run() ()
#9  0x0000004e0c52fd2c in main ()

Segfault does not occur when compiling with GCC 5.4.0 or Clang 4.0.1

Steps to reproduce:

  • Hover an element in a tree to show its tooltip
  • Hover another tree element
  • Segfault
@Rubonnek
Copy link
Member

I'm able to reproduce this segmentation fault in Arch too.

@Rubonnek
Copy link
Member

Rubonnek commented Aug 20, 2017

Compiling with the -g flag gives the following full backtrace:

(gdb) bt full
#0  __cxxabiv1::__dynamic_cast (src_ptr=0x0, src_type=0x102c70258 <typeinfo for Object>, dst_type=dst_type@entry=0x102c53120 <typeinfo for Control>, src2dst=src2dst@entry=0) at /build/gcc-multilib/src/gcc/libstdc++-v3/libsupc++/dyncast.cc:50
        vtable = <optimized out>
        whole_type = <optimized out>
        result = {dst_ptr = 0x104d7bf00, whole2dst = 30302152, whole2src = __cxxabiv1::__class_type_info::__not_contained, dst2src = 81248352, whole_details = 1}
        whole_vtable = <optimized out>
#1  0x0000000101297987 in Object::cast_to<Control> (this=0x0) at core/object.h:569
No locals.
#2  Control::get_root_parent_control (this=<optimized out>) at scene/gui/control.cpp:2368
        ci = 0x0
        root = 0x0
#3  0x00000001010e456e in Viewport::_gui_show_tooltip (this=this@entry=0x103a6fe10) at scene/main/viewport.cpp:1459
        tooltip = {<Vector<wchar_t>> = {_ptr = 0x1079ba700 L"ball\nType: Sprite"}, <No data fields>}
        rp = <optimized out>
        ttp = {reference = 0x0}
        r = {position = {{x = 78, width = 78}, {y = 112, height = 112}}, size = {{x = 0, width = 0}, {y = 0, height = 0}}}
        vr = <optimized out>
#4  0x00000001010ecc87 in Viewport::_notification (this=0x103a6fe10, p_what=<optimized out>) at scene/main/viewport.cpp:473
No locals.
#5  0x0000000101a408e4 in Object::notification (this=0x103a6fe10, p_notification=16, p_reversed=<optimized out>) at core/object.cpp:954
No locals.
#6  0x000000010114c519 in SceneTree::_notify_group_pause (this=this@entry=0x103ab2e90, p_group=..., p_notification=p_notification@entry=16) at scene/main/scene_tree.cpp:907
        n = 0x103a6fe10
        i = <optimized out>
        E = <optimized out>
        nodes_copy = {_ptr = 0x105f31870}
        node_count = <optimized out>
        nodes = <optimized out>
#7  0x000000010114d13f in SceneTree::iteration (this=0x103ab2e90, p_time=<optimized out>) at scene/main/scene_tree.cpp:466
No locals.
#8  0x000000010069cb13 in Main::iteration () at main/main.cpp:1574
        fixed_begin = 5848024
        ticks = 5848024
        ticks_elapsed = <optimized out>
        step = 0.01677
        frame_slice = <optimized out>
        fixed_process_ticks = 0
        idle_process_ticks = 0
        time_scale = <optimized out>
        exit = false
        iters = <optimized out>
        idle_begin = <optimized out>
        frame_time = <optimized out>
        target_fps = <optimized out>
#9  0x0000000100696271 in OS_X11::run (this=0x7fffffffda50) at platform/x11/os_x11.cpp:2113
No locals.
#10 0x000000010068f70c in main (argc=4, argv=0x7fffffffdf78) at platform/x11/godot_x11.cpp:52
        os = {<OS_Unix> = {<OS> = {_vptr.OS = 0x102c24000 <vtable for OS_X11+16>, static singleton = 0x7fffffffda50, _execpath = {<Vector<wchar_t>> = {_ptr = 0x102d42800 L"/opt/godot/bin/godot.x11.opt.tools.64"}, <No data fields>}, _cmdline = {_data = 0x102d42920}, _keep_screen_on = true, 
              low_processor_usage_mode = true, _verbose_stdout = false, _local_clipboard = {<Vector<wchar_t>> = {_ptr = 0x0}, <No data fields>}, _msec_splash = 139730317721296, _no_window = false, _exit_code = 0, _orientation = 0, _allow_hidpi = true, last_error = 0x104c95a30 "child is not a child of this node.", 
              _stack_bottom = 0x7fffffffda00, _render_thread_mode = OS::RENDER_THREAD_SAFE}, ticks_start = 1503270295724094, stdin_buf = {<Vector<wchar_t>> = {_ptr = 0x0}, <No data fields>}}, wm_delete = 345, xdnd_enter = 468, xdnd_position = 471, xdnd_status = 474, xdnd_action_copy = 461, xdnd_drop = 467, 
          xdnd_finished = 469, xdnd_selection = 473, requested = 0, xdnd_version = 0, context_gl = 0x102d76af0, visual_server = 0x102f20060, current_videomode = {width = 1024, height = 600, fullscreen = false, resizable = true, borderless_window = false}, args = {_data = 0x102d49740}, x11_window = 27262978, 
          xdnd_source_window = 140737488346264, main_loop = 0x103ab2e90, x11_display = 0x102d497a0, xmbstring = 0x0, xmblen = -2110899456, last_timestamp = 19358915, last_keyrelease_time = 0, xic = 0x102f8e000, xim = 0x102d63c60, xim_style = 1032, last_mouse_pos = {{x = 868, width = 868}, {y = 215, height = 215}}, 
          last_mouse_pos_valid = true, last_click_pos = {{x = 0, width = 0}, {y = 0, height = 0}}, last_click_ms = 0, last_button_state = 0, physics_server = 0x1035614e0, physics_2d_server = 0x103588a40, mouse_mode = OS::MOUSE_MODE_VISIBLE, center = {{x = 0, width = 0}, {y = 0, height = 0}}, ip_unix = 0xffffffff, 
          force_quit = false, minimized = false, window_has_focus = true, do_mouse_warp = false, cursor_theme = 0x101f0277e "default", cursor_size = 22, img = {0x102f907c0, 0x102f910f0, 0x102f91a20, 0x102f92350, 0x102f93ab0, 0x102f943e0, 0x102f92c80, 0x102f94d10, 0x102f95640, 0x102f95f70, 0x102f968a0, 0x102f971d0, 
            0x102f97b00, 0x102f98430, 0x102f98d60, 0x102f99690, 0x102f99fc0}, cursors = {27262986, 27262990, 27262994, 27262998, 27263002, 27263006, 27263010, 27263014, 27263018, 27263022, 27263026, 27263030, 27263034, 27263038, 27263042, 27263046, 27263050}, null_cursor = 27263053, 
          current_cursor = OS::CURSOR_ARROW, input = 0x1035cb8f0, joypad = 0x103609e20, driver_alsa = {<AudioDriver> = {_vptr.AudioDriver = 0x102bfd630 <vtable for AudioDriverALSA+16>, static singleton = 0x7fffffffdd80, _last_mix_time = 0, _mix_amount = 0}, thread = 0x0, mutex = 0x0, pcm_handle = 0x0, 
            samples_in = 0x7f15802939a8 <vtable for std::basic_ostream<wchar_t, std::char_traits<wchar_t> >>, samples_out = 0x7f157ffa1421 <__cxxabiv1::__dynamic_cast(void const*, __cxxabiv1::__class_type_info const*, __cxxabiv1::__class_type_info const*, ptrdiff_t)+129>, mix_rate = 64, 
            speaker_mode = (AudioDriver::SPEAKER_SURROUND_51 | unknown: 32532), buffer_size = 1088, period_size = 1040, channels = 16, active = false, thread_exited = false, exit_thread = false, pcm_open = false}, driver_pulseaudio = {<AudioDriver> = {
              _vptr.AudioDriver = 0x102bfd698 <vtable for AudioDriverPulseAudio+16>, static singleton = 0x7fffffffdd80, _last_mix_time = 5834301, _mix_amount = 251904}, thread = 0x102f63f20, mutex = 0x102f64220, pulse = 0x102f60960, samples_in = 0x102f8a7e0, samples_out = 0x102f8c800, mix_rate = 44100, 
            speaker_mode = AudioDriver::SPEAKER_MODE_STEREO, buffer_size = 1024, channels = 2, active = true, thread_exited = false, exit_thread = false, pcm_open = false, latency = 0}, driver_dummy = {<AudioDriver> = {_vptr.AudioDriver = 0x102c1b268 <vtable for AudioDriverDummy+16>, 
              static singleton = 0x7fffffffdd80, _last_mix_time = 0, _mix_amount = 0}, thread = 0x0, mutex = 0x0, samples_in = 0x7f157f9e5ba0 <initial>, buffer_size = 46781760, mix_rate = 1, speaker_mode = (unknown: 4), channels = 0, active = 48, thread_exited = 203, exit_thread = 190, pcm_open = true}, 
          net_wm_icon = 4341595272, power_manager = 0x1035e5500, audio_driver_index = 0, capture_idle = 1, maximized = true, xrr_get_monitors = 0x7f15817c9940 <XRRGetMonitors>, xrr_free_monitors = 0x7f15817c9ec0 <XRRFreeMonitors>, xrandr_handle = 0x7f15822f3eb0, xrandr_ext_ok = 1}
        cwd = 0x102cbb7a0 "/opt/godot"
        err = <optimized out>

@reduz
Copy link
Member

reduz commented Aug 21, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants