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

snapshot.to_node() panics on empty snapshot. #845

Closed
flxzt opened this issue Jan 22, 2022 · 7 comments · Fixed by #849
Closed

snapshot.to_node() panics on empty snapshot. #845

flxzt opened this issue Jan 22, 2022 · 7 comments · Fixed by #849
Labels
bug Something isn't working gtk
Milestone

Comments

@flxzt
Copy link

flxzt commented Jan 22, 2022

Bug description
Heres an example:

use gtk4::prelude::*;

fn main() {
    let app = gtk4::Application::new(Some("gtk4test.gtk4test"), Default::default());

    app.connect_activate(move |app| {
        let window = gtk4::ApplicationWindow::builder()
            .title("gtk4test")
            .default_width(200)
            .default_height(50)
            .application(app)
            .build();

        let button = gtk4::Button::builder().label("Panic").build();

        button.connect_clicked(move |_button| {
            let snapshot = gtk4::Snapshot::new();
            let _node = snapshot.to_node();
        });

        let button_box = gtk4::Box::builder()
            .orientation(gtk4::Orientation::Vertical)
            .build();
        button_box.append(&button);

        window.set_child(Some(&button_box));
        window.present();
    });
    app.run();
}

Backtrace

    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running `target/debug/gtk4test`
thread 'main' panicked at 'assertion failed: !ptr.is_null()', /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/glib-0.15.2/src/shared.rs:484:9
stack backtrace:
   0:     0x55888d4ba25c - std::backtrace_rs::backtrace::libunwind::trace::h093d4af0eabdfc15
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x55888d4ba25c - std::backtrace_rs::backtrace::trace_unsynchronized::h2b90813d74c759ca
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x55888d4ba25c - std::sys_common::backtrace::_print_fmt::hfaa8856bf3eca13f
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x55888d4ba25c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h0cbaef3adcb5a454
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x55888d4d46ec - core::fmt::write::h35a8eb836b847360
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/fmt/mod.rs:1149:17
   5:     0x55888d4b79e5 - std::io::Write::write_fmt::h45f2b8390f189782
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/io/mod.rs:1697:15
   6:     0x55888d4bb9b0 - std::sys_common::backtrace::_print::h56f62073b0e62985
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x55888d4bb9b0 - std::sys_common::backtrace::print::h152fba05ec38941b
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x55888d4bb9b0 - std::panicking::default_hook::{{closure}}::ha3121a0b8482251f
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:211:50
   9:     0x55888d4bb565 - std::panicking::default_hook::hde5d78c11ae3b8f6
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:228:9
  10:     0x55888d4bc064 - std::panicking::rust_panic_with_hook::he6f55c3e7ed1777c
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:606:17
  11:     0x55888d4bbb12 - std::panicking::begin_panic_handler::{{closure}}::h4b51effcc76f0c14
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:500:13
  12:     0x55888d4ba724 - std::sys_common::backtrace::__rust_end_short_backtrace::haae2fe666128308b
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:139:18
  13:     0x55888d4bbaa9 - rust_begin_unwind
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:498:5
  14:     0x55888d478bf1 - core::panicking::panic_fmt::h6434c641853e4979
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/panicking.rs:107:14
  15:     0x55888d478b3d - core::panicking::panic::h2087754074d8b02f
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/panicking.rs:48:5
  16:     0x55888d488d81 - <glib::shared::Shared<T,MM> as glib::translate::FromGlibPtrFull<*mut T>>::from_glib_full::h1188e896177f5d0a
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/glib-0.15.2/src/shared.rs:484:9
  17:     0x55888d488cff - glib::translate::from_glib_full::h1efa69c926653a15
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/glib-0.15.2/src/translate.rs:1435:5
  18:     0x55888d488def - <gsk4::auto::render_node::RenderNode as glib::translate::FromGlibPtrFull<*mut gsk4_sys::GskRenderNode>>::from_glib_full::h94779fda43087c2c
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/glib-0.15.2/src/shared.rs:170:28
  19:     0x55888d488d1e - glib::translate::from_glib_full::heae0593153271e58
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/glib-0.15.2/src/translate.rs:1435:5
  20:     0x55888d4838de - gtk4::auto::snapshot::Snapshot::to_node::h33ca5d1b5d611e32
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/gtk4-0.4.4/src/auto/snapshot.rs:506:18
  21:     0x55888d47be57 - gtk4test::main::{{closure}}::{{closure}}::hc5c2575c76aeddfa
                               at /mnt/Daten/source/rust/gtk4test/src/main.rs:18:25
  22:     0x55888d479e09 - <O as gtk4::auto::button::ButtonExt>::connect_clicked::clicked_trampoline::h84b6f13f8a792c43
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/gtk4-0.4.4/src/auto/button.rs:614:13
  23:     0x7fc4e30f7a9a - g_signal_emit_valist
  24:     0x7fc4e30f7be3 - g_signal_emit
  25:     0x7fc4e29ee5ff - <unknown>
  26:     0x7fc4e30f7a9a - g_signal_emit_valist
  27:     0x7fc4e30f7be3 - g_signal_emit
  28:     0x7fc4e2aa27b6 - <unknown>
  29:     0x7fc4e30de2f6 - g_cclosure_marshal_VOID__BOXEDv
  30:     0x7fc4e30f7a9a - g_signal_emit_valist
  31:     0x7fc4e30f7be3 - g_signal_emit
  32:     0x7fc4e2aa687b - <unknown>
  33:     0x7fc4e2aa78eb - <unknown>
  34:     0x7fc4e2aa884f - <unknown>
  35:     0x7fc4e2bfcd33 - <unknown>
  36:     0x7fc4e2bfcf4c - <unknown>
  37:     0x7fc4e2d972be - <unknown>
  38:     0x7fc4e2aed14b - <unknown>
  39:     0x7fc4e2c0c42c - <unknown>
  40:     0x7fc4e2ccc247 - <unknown>
  41:     0x7fc4e2cf4b13 - <unknown>
  42:     0x7fc4e30d9c7f - g_closure_invoke
  43:     0x7fc4e30f6106 - <unknown>
  44:     0x7fc4e30f753e - g_signal_emit_valist
  45:     0x7fc4e30f7be3 - g_signal_emit
  46:     0x7fc4e2d90fd3 - <unknown>
  47:     0x7fc4e2d3547e - <unknown>
  48:     0x7fc4e249d130 - g_main_context_dispatch
  49:     0x7fc4e24f2208 - <unknown>
  50:     0x7fc4e249a933 - g_main_context_iteration
  51:     0x7fc4e26623d5 - g_application_run
  52:     0x55888d4798c7 - <O as gio::application::ApplicationExtManual>::run_with_args::h02cec083d8bf3d4d
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/gio-0.15.2/src/application.rs:30:13
  53:     0x55888d4799b6 - <O as gio::application::ApplicationExtManual>::run::h49cbd27ec41a8831
                               at /home/felixz/.cargo/registry/src/github.com-1ecc6299db9ec823/gio-0.15.2/src/application.rs:23:9
  54:     0x55888d47bbf2 - gtk4test::main::hdc11fa1f9c8dcf01
                               at /mnt/Daten/source/rust/gtk4test/src/main.rs:29:5
  55:     0x55888d47a67b - core::ops::function::FnOnce::call_once::h1ba8649113ded518
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/ops/function.rs:227:5
  56:     0x55888d479f3e - std::sys_common::backtrace::__rust_begin_short_backtrace::hac0de60907410364
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:123:18
  57:     0x55888d479f11 - std::rt::lang_start::{{closure}}::hf02da436be984fea
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/rt.rs:145:18
  58:     0x55888d4b9eeb - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h7422298f811ee14d
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/ops/function.rs:259:13
  59:     0x55888d4b9eeb - std::panicking::try::do_call::hcba55cf6d5b5533e
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:406:40
  60:     0x55888d4b9eeb - std::panicking::try::h0b2a05128a4ee609
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:370:19
  61:     0x55888d4b9eeb - std::panic::catch_unwind::he1deef49e02fb06c
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panic.rs:133:14
  62:     0x55888d4b9eeb - std::rt::lang_start_internal::{{closure}}::hf44e73ef18e45ffd
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/rt.rs:128:48
  63:     0x55888d4b9eeb - std::panicking::try::do_call::h894daf8a782b48f4
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:406:40
  64:     0x55888d4b9eeb - std::panicking::try::hd3e4f8d86f3a7fb5
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:370:19
  65:     0x55888d4b9eeb - std::panic::catch_unwind::h2e69404746fb3d50
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panic.rs:133:14
  66:     0x55888d4b9eeb - std::rt::lang_start_internal::hec7f1b06f38d8409
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/rt.rs:128:20
  67:     0x55888d479ee0 - std::rt::lang_start::h6b94f41a367d5944
                               at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/rt.rs:144:17
  68:     0x55888d47bc4c - main
  69:     0x7fc4e2250560 - __libc_start_call_main
  70:     0x7fc4e225060c - __libc_start_main@@GLIBC_2.34
  71:     0x55888d479315 - _start
  72:                0x0 - <unknown>
@flxzt flxzt added the bug Something isn't working label Jan 22, 2022
@bilelmoussaoui
Copy link
Member

Snapshot::to_node should be returning a Option<RenderNode> is the reason of this issue.

@bilelmoussaoui
Copy link
Member

Can you check whether to_paintable panics as well?

@bilelmoussaoui
Copy link
Member

I suppose yes, because to_paintable calls to_node internally

@flxzt
Copy link
Author

flxzt commented Jan 22, 2022

yes indeed

gnomesysadmins pushed a commit to GNOME/gtk that referenced this issue Jan 23, 2022
@bilelmoussaoui
Copy link
Member

Fixed upstream at https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4413, will fix it here and do a minor release tomorrow-ish

@bilelmoussaoui bilelmoussaoui added this to the 0.4 milestone Jan 23, 2022
@flxzt
Copy link
Author

flxzt commented Jan 23, 2022

thank you :) Awesome how fast things get fixed

@bilelmoussaoui
Copy link
Member

0.4.5 should be out now ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working gtk
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants