Browsers-software/browsers

Persistently crashing on KDE Neon 22.04

Closed this issue · 5 comments

Describe the bug
Persistently crashing on KDE Neon (Ubuntu derivative).

To Reproduce
Steps to reproduce the behaviour:

  1. Open a URL or run browsers from terminal. Looks like an app initialisation issue.

Expected behavior
It should not crash.

Screenshots

Stacktrace below.

~$ RUST_BACKTRACE=full .local/bin/browsers
2023-03-22T18:55:30.046157185Z  INFO browsers: Starting Browsers
2023-03-22T18:55:30.046178349Z  INFO browsers: Logging to /home/dkorah/.local/state/software.Browsers/logs/browsers.log
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/linux_utils.rs:145:31
stack backtrace:
   0:     0x55ded53f9e20 - std::backtrace_rs::backtrace::libunwind::trace::h595f06c70adcc478
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x55ded53f9e20 - std::backtrace_rs::backtrace::trace_unsynchronized::h177a0149c76cdde9
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x55ded53f9e20 - std::sys_common::backtrace::_print_fmt::hc0701fd2c3530c58
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x55ded53f9e20 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hd4cd115d8750fd6c
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x55ded530b6ce - core::fmt::write::h93e2f5923c7eca08
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/core/src/fmt/mod.rs:1213:17
   5:     0x55ded53cebf4 - std::io::Write::write_fmt::h8162dbb45f0b9e62
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/io/mod.rs:1682:15
   6:     0x55ded53fb59f - std::sys_common::backtrace::_print::h1835ef8a8f9066da
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x55ded53fb59f - std::sys_common::backtrace::print::hcb5e6388b9235f41
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x55ded53fb22f - std::panicking::default_hook::{{closure}}::h9c084969ccf9a722
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:267:22
   9:     0x55ded53fc24c - std::panicking::default_hook::h68fa2ba3c3c6c12f
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:286:9
  10:     0x55ded53fc24c - std::panicking::rust_panic_with_hook::h8d5c434518ef298c
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:688:13
  11:     0x55ded53fbcd4 - std::panicking::begin_panic_handler::{{closure}}::hf33414f5dabf6faf
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:577:13
  12:     0x55ded53fbc6c - std::sys_common::backtrace::__rust_end_short_backtrace::hc50389427413bb75
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x55ded53fbc41 - rust_begin_unwind
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:575:5
  14:     0x55ded51c0f22 - core::panicking::panic_fmt::h2de7a7938f816de8
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/core/src/panicking.rs:64:14
  15:     0x55ded51c101c - core::panicking::panic::h90931f06a97cc5e0
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/core/src/panicking.rs:114:5
  16:     0x55ded52c0182 - browsers::utils::OSAppFinder::get_installed_browsers::h4b0ffc42d8c99b5d
  17:     0x55ded52774c6 - browsers::generate_all_browser_profiles::hba51cad9bfc18633
  18:     0x55ded5280e75 - browsers::basically_main::h72baa66db969b663
  19:     0x55ded52fe12c - browsers::main::h85cbb5953f3628db
  20:     0x55ded52f00a3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h9ee69c2e79fe5cb6
  21:     0x55ded52fc189 - main
  22:     0x7f1143629d90 - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  23:     0x7f1143629e40 - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:392:3
  24:     0x55ded51cbbee - _start
  25:                0x0 - <unknown>

Desktop (please complete the following information):

  • OS: KDE Neon (based on Ubuntu) 22.04
  • Browser: chrome, opera, firefox
  • Version: N/A

Smartphone (please complete the following information):

  • N/A

Additional context
None

liias commented

Hi Dino.

Thanks for reporting the issue.

I'm glad there are linux users using this!

Apparently the library I use to find app icons can't find icon on one or more browsers in your system. I changed it so that it should just show no icon in that case instead of crashing.

I don't have a good linux machine myself right now to test this, so I am doing changes a little in the blind.
If you are willing, could you try out this build:
https://github.com/Browsers-software/browsers/suites/11744355282/artifacts/611806752

(it has two archives inside, doesn't matter if you pick .tar.gz or .tar.xz)
Thanks!

Bingo!

That resolves the problem, and you are right. I have a poor man's version of your browsers app, which is a shell script that I have set up as a web browser. You can find that here https://github.com/codemedic/bash-ninja/blob/master/open-url . The setup does not have an icon.

Great work @liias so far! I love it already.

Any plans for preferences / settings? I have a list of features that I would absolutely love to see in browsers.

  1. Ability to hide certain browsers & browser profiles - Hide dodgy browsers like mine, or browser profiles that are not meant for regular use.
  2. Ability to have a predefined browser (or browser profile) per URL prefix / regexp - Work related URLs always in work profile. Perhaps an option to remember choice by domain name from the selection window.
  3. Ability to open with one of the current running browsers, based on a preference order. This was the reason for creating open-url, to reduce the resource usage by a second browser when a perfectly usable browser was already active.
  4. Ability to choose between 3 (above) and the current behaviour of browsers i.e. to present all existing browsers to choose from.

If you'd rather have these as individual issues, I can!

liias commented

Hey. Glad to hear the issue got fixed! I will make official release for that soon as well then (though it would be literally the same except version number in about menu, so no need to update).

About settings:

  1. You can already hide browsers/profiles by right clicking on it, see https://browsers.software/#how-to-use. I tried to avoid a settings screen unless there's no good way to fit a setting into the main ui. (opening rules will probably go to settings though)
  2. Definitely in plans. Please create an issue nevertheless on what you want to see there. There is a hidden setting for it already though. In config.json (see ...->About to see configuration path) you can add edit the rules section. url_pattern can currently detect only the domain (no wildcards), profile has to be in form of <browser binary path>#<the profile id>. You can find it in the cache file (again see the About dialog for path) or in that same config file if you have changed order for the browser explicitly.
rules: [
{
    "url_pattern": "https://exact.domain.com"
    "profile": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome#Profile 1"
}
]

That interface is not stable though, so might change in future.

  1. Currently I don't plan this feature, because you can always choose a browser that is already running, but of course you need to know it is running. Please create an issue nevertheless, maybe enough people want it.
  2. You can add this together with the issue for 3rd point. I think my additional idea is to have an indicator which shows if its running, even if all browsers are shown. Might be tricky to detect which browser profile/container is running though.

Thanks for reporting! Our of curiosity, how did you find this app? I have spread it very minimally for linux so far (I want to have some small linux userbase present before making proper deb/rpm/Pacman packages).

Thanks @liias

I will take a look at those and see how they work out for me.

I have been keeping an eye out for a replacement for my open-url script. I found it through alternativeto.net.