[GH-ISSUE #675] [Tray] Segfaults when starting certain applications #8658

Closed
opened 2026-05-23 03:53:23 +01:00 by JakeStanger · 2 comments
Owner

Originally created by @donovanglover on GitHub (Jul 21, 2024).
Original GitHub issue: https://github.com/JakeStanger/ironbar/issues/675

Describe the bug
Ironbar segfaults when starting Mullvad VPN with the tray module enabled

To Reproduce
Steps to reproduce the behavior:

  1. Start ironbar with the tray module
  2. Start Mullvad VPN

Expected behavior
No crash

System information:

Additional context
Likely caused by one of the unsafe blocks involving cairo since the segfault mentions libcairo.so.2

Originally created by @donovanglover on GitHub (Jul 21, 2024). Original GitHub issue: https://github.com/JakeStanger/ironbar/issues/675 **Describe the bug** Ironbar segfaults when starting Mullvad VPN with the tray module enabled **To Reproduce** Steps to reproduce the behavior: 1. Start ironbar with the tray module 2. Start Mullvad VPN **Expected behavior** No crash **System information:** - Distro: NixOS unstable - Compositor: Hyprland - Ironbar version: https://github.com/JakeStanger/ironbar/commit/58190ab079d00dd53babb72346f1da6e1cc9ac72 **Additional context** Likely caused by one of the `unsafe` blocks involving cairo since the segfault mentions `libcairo.so.2`
JakeStanger 2026-05-23 03:53:23 +01:00
  • closed this issue
  • added the
    T:Bug
    label
Author
Owner

@donovanglover commented on GitHub (Aug 1, 2024):

Backtrace:

(ironbar:2997371): GdkPixbuf-CRITICAL **: 18:16:57.867: gdk_pixbuf_new_from_bytes: assertion 'width > 0' failed
2024-08-01T22:16:59.592812Z ERROR ironbar::logging: 48: The application panicked (crashed).
Message:  assertion failed: !ptr.is_null()
Location: /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gdk-pixbuf-0.18.3/src/auto/pixbuf.rs:9

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                 8 frames hidden                                
   9: core::panicking::panic::h8ddd58dc57c2dc00
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panicking.rs:145
  10: <gdk_pixbuf::auto::pixbuf::Pixbuf as glib::translate::FromGlibPtrFull<*mut gdk_pixbuf_sys::GdkPixbuf>>::from_glib_full::h557489d646005ccd
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/object.rs:909
  11: glib::translate::from_glib_full::h86f1cc42d9c5afca
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/translate.rs:1631
  12: gdk_pixbuf::auto::pixbuf::Pixbuf::from_bytes::h748c75f937f3f15b
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gdk-pixbuf-0.18.3/src/auto/pixbuf.rs:50
  13: ironbar::modules::tray::icon::get_image_from_pixmap::h48985c8c61020843
      at /home/user/ironbar/src/modules/tray/icon.rs:106
  14: ironbar::modules::tray::icon::get_image::{{closure}}::had3c8f65d2f3cd7a
      at /home/user/ironbar/src/modules/tray/icon.rs:51
  15: core::result::Result<T,E>::or_else::haa1f229679d74e71
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/result.rs:1383
  16: ironbar::modules::tray::icon::get_image::ha4c79787291de5f4
      at /home/user/ironbar/src/modules/tray/icon.rs:50
  17: ironbar::modules::tray::on_update::h994a7b403e0dfce6
      at /home/user/ironbar/src/modules/tray/mod.rs:190
  18: <ironbar::modules::tray::TrayModule as ironbar::modules::Module<gtk::auto::menu_bar::MenuBar>>::into_widget::{{closure}}::hd1553e718ffdea94
      at /home/user/ironbar/src/modules/tray/mod.rs:161
  19: glib::main_context_futures::<impl glib::auto::main_context::MainContext>::spawn_local_with_priority::{{closure}}::h4586208b1f7f7402
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:564
  20: <futures_task::future_obj::LocalFutureObj<T> as core::future::future::Future>::poll::h4bb27918afceea35
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-task-0.3.30/src/future_obj.rs:84
  21: <glib::main_context_futures::FutureWrapper as core::future::future::Future>::poll::h46ed3dfd8c276289
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:38
  22: glib::main_context_futures::TaskSource::poll::{{closure}}::{{closure}}::h4972e20aeb2a4d89
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:245
  23: core::ops::function::FnOnce::call_once::hb185ba4d807a26f4
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/ops/function.rs:250
  24: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd9a963a43596641e
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panic/unwind_safe.rs:272
  25: std::panicking::try::do_call::he5571af9b8166f49
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:552
  26: __rust_try<unknown>
      at <unknown source file>:<unknown line>
  27: std::panicking::try::hea109a5df98cab07
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:516
  28: std::panic::catch_unwind::hcc3c29dbd6256703
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panic.rs:146
  29: glib::main_context_futures::TaskSource::poll::{{closure}}::he5e599ad2ebaf3aa
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:244
  30: glib::main_context::<impl glib::auto::main_context::MainContext>::with_thread_default::h3b9c5f9cbca81e94
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context.rs:154
  31: glib::main_context_futures::TaskSource::poll::hcc14e6811e50819d
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:236
  32: glib::main_context_futures::TaskSource::dispatch::hc8ef80c5e6bc5ee0
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:74
  33: g_main_dispatch<unknown>
      at <unknown source file>:<unknown line>
  34: g_main_context_iterate_unlocked.isra.0<unknown>
      at <unknown source file>:<unknown line>
  35: g_main_context_iteration<unknown>
      at <unknown source file>:<unknown line>
  36: g_application_run<unknown>
      at <unknown source file>:<unknown line>
  37: gio::application::ApplicationExtManual::run_with_args::h819ecb937cc42a00
      at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gio-0.18.4/src/application.rs:29
  38: ironbar::Ironbar::start::h2aebfcb3f229a716
      at /home/user/ironbar/src/main.rs:265
  39: ironbar::start_ironbar::hd393634ab12a750d
      at /home/user/ironbar/src/main.rs:316
  40: ironbar::run_with_args::hc2751f4d3c42af87
      at /home/user/ironbar/src/main.rs:111
  41: ironbar::main::h00705df8e00e5354
      at /home/user/ironbar/src/main.rs:72
  42: core::ops::function::FnOnce::call_once::hbb8d61e65debbf3d
      at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/ops/function.rs:250
                                 16 frames hidden                               
<!-- gh-comment-id:2264119222 --> @donovanglover commented on GitHub (Aug 1, 2024): Backtrace: ```javascript (ironbar:2997371): GdkPixbuf-CRITICAL **: 18:16:57.867: gdk_pixbuf_new_from_bytes: assertion 'width > 0' failed 2024-08-01T22:16:59.592812Z ERROR ironbar::logging: 48: The application panicked (crashed). Message: assertion failed: !ptr.is_null() Location: /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gdk-pixbuf-0.18.3/src/auto/pixbuf.rs:9 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⋮ 8 frames hidden ⋮ 9: core::panicking::panic::h8ddd58dc57c2dc00 at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panicking.rs:145 10: <gdk_pixbuf::auto::pixbuf::Pixbuf as glib::translate::FromGlibPtrFull<*mut gdk_pixbuf_sys::GdkPixbuf>>::from_glib_full::h557489d646005ccd at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/object.rs:909 11: glib::translate::from_glib_full::h86f1cc42d9c5afca at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/translate.rs:1631 12: gdk_pixbuf::auto::pixbuf::Pixbuf::from_bytes::h748c75f937f3f15b at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gdk-pixbuf-0.18.3/src/auto/pixbuf.rs:50 13: ironbar::modules::tray::icon::get_image_from_pixmap::h48985c8c61020843 at /home/user/ironbar/src/modules/tray/icon.rs:106 14: ironbar::modules::tray::icon::get_image::{{closure}}::had3c8f65d2f3cd7a at /home/user/ironbar/src/modules/tray/icon.rs:51 15: core::result::Result<T,E>::or_else::haa1f229679d74e71 at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/result.rs:1383 16: ironbar::modules::tray::icon::get_image::ha4c79787291de5f4 at /home/user/ironbar/src/modules/tray/icon.rs:50 17: ironbar::modules::tray::on_update::h994a7b403e0dfce6 at /home/user/ironbar/src/modules/tray/mod.rs:190 18: <ironbar::modules::tray::TrayModule as ironbar::modules::Module<gtk::auto::menu_bar::MenuBar>>::into_widget::{{closure}}::hd1553e718ffdea94 at /home/user/ironbar/src/modules/tray/mod.rs:161 19: glib::main_context_futures::<impl glib::auto::main_context::MainContext>::spawn_local_with_priority::{{closure}}::h4586208b1f7f7402 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:564 20: <futures_task::future_obj::LocalFutureObj<T> as core::future::future::Future>::poll::h4bb27918afceea35 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-task-0.3.30/src/future_obj.rs:84 21: <glib::main_context_futures::FutureWrapper as core::future::future::Future>::poll::h46ed3dfd8c276289 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:38 22: glib::main_context_futures::TaskSource::poll::{{closure}}::{{closure}}::h4972e20aeb2a4d89 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:245 23: core::ops::function::FnOnce::call_once::hb185ba4d807a26f4 at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/ops/function.rs:250 24: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd9a963a43596641e at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panic/unwind_safe.rs:272 25: std::panicking::try::do_call::he5571af9b8166f49 at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:552 26: __rust_try<unknown> at <unknown source file>:<unknown line> 27: std::panicking::try::hea109a5df98cab07 at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:516 28: std::panic::catch_unwind::hcc3c29dbd6256703 at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panic.rs:146 29: glib::main_context_futures::TaskSource::poll::{{closure}}::he5e599ad2ebaf3aa at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:244 30: glib::main_context::<impl glib::auto::main_context::MainContext>::with_thread_default::h3b9c5f9cbca81e94 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context.rs:154 31: glib::main_context_futures::TaskSource::poll::hcc14e6811e50819d at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:236 32: glib::main_context_futures::TaskSource::dispatch::hc8ef80c5e6bc5ee0 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/glib-0.18.5/src/main_context_futures.rs:74 33: g_main_dispatch<unknown> at <unknown source file>:<unknown line> 34: g_main_context_iterate_unlocked.isra.0<unknown> at <unknown source file>:<unknown line> 35: g_main_context_iteration<unknown> at <unknown source file>:<unknown line> 36: g_application_run<unknown> at <unknown source file>:<unknown line> 37: gio::application::ApplicationExtManual::run_with_args::h819ecb937cc42a00 at /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gio-0.18.4/src/application.rs:29 38: ironbar::Ironbar::start::h2aebfcb3f229a716 at /home/user/ironbar/src/main.rs:265 39: ironbar::start_ironbar::hd393634ab12a750d at /home/user/ironbar/src/main.rs:316 40: ironbar::run_with_args::hc2751f4d3c42af87 at /home/user/ironbar/src/main.rs:111 41: ironbar::main::h00705df8e00e5354 at /home/user/ironbar/src/main.rs:72 42: core::ops::function::FnOnce::call_once::hbb8d61e65debbf3d at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/ops/function.rs:250 ⋮ 16 frames hidden ⋮ ```
Author
Owner

@JakeStanger commented on GitHub (Aug 4, 2024):

Thanks for reporting. It sounds like Mullvad is helpfully providing an empty byte array for its image, rather than null, which is...helpful.

I've just pushed up a fix that adds a quick check that should help. Are you able to give that a quick test for me and see if that gets it please?

<!-- gh-comment-id:2267529253 --> @JakeStanger commented on GitHub (Aug 4, 2024): Thanks for reporting. It sounds like Mullvad is helpfully providing an empty byte array for its image, rather than null, which is...helpful. I've just pushed up a fix that adds a quick check that should help. Are you able to give that a quick test for me and see if that gets it please?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
JakeStanger/ironbar#8658
No description provided.