Almamu / linux-wallpaperengine

Wallpaper Engine backgrounds for Linux!
GNU General Public License v3.0
1.59k stars 61 forks source link

Always segfaults . Even when trying to `--list-properties` #163

Open uttarayan21 opened 1 year ago

uttarayan21 commented 1 year ago

image

Relevant information: OS: Arch Linux Compositor: Picom DE: bspwm

Monitors setup like.

xrandr --output DP-0 --mode 2560x1440 --refresh 170 --pos 1440x538 --rotate normal --output DP-4 --mode 2560x1440 --pos 0x0 --rotate left --refresh 170

GPU Driver: nvidia-open 530.41.03-9

Here is the attached backtrace from lldb

❯ lldb wallpaperengine
(lldb) target create "wallpaperengine"
Current executable set to '/home/fs0c131y/.local/bin/wallpaperengine' (x86_64).
(lldb) r --list-properties 1845706469
Process 22303 launched: '/home/fs0c131y/.local/bin/wallpaperengine' (x86_64)
Detected "scene.pkg" file at "/home/fs0c131y/.local/share/Steam/steamapps/workshop/content/431960/1845706469/scene.pkg". Adding to list of searchable paths
No "gifscene.pkg" file found at "/home/fs0c131y/.local/share/Steam/steamapps/workshop/content/431960/1845706469/gifscene.pkg". Defaulting to normal folder storage
Cannot find "../share/". This folder is required for wallpaper engine to work
Cannot find "/usr/local/share/linux-wallpaperengine". This folder is required for wallpaper engine to work
WARNING: Shader patches directory cannot be found, this might make some backgrounds not work properly
Cannot find required key (directions) in json: Particle emitter must have direction specified
Cannot find required key (directions) in json: Particle emitter must have direction specified
Cannot find required key (directions) in json: Particle emitter must have direction specified
Cannot find required key (directions) in json: Particle emitter must have direction specified
Cannot find required key (directions) in json: Particle emitter must have direction specified
Cannot find required key (directions) in json: Particle emitter must have direction specified
Cannot find required key (directions) in json: Particle emitter must have direction specified
schemecolor - color
        Description: ui_browse_properties_scheme_color
        R: 0.11 G: 0.137 B: 0.169
Process 22303 stopped
* thread #1, name = 'wallpaperengine', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
    frame #0: 0x0000557f82c39fb2 wallpaperengine`std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>>::_M_mbegin() const + 12
wallpaperengine`std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>>::_M_mbegin:
->  0x557f82c39fb2 <+12>: movq   0x10(%rax), %rax
    0x557f82c39fb6 <+16>: popq   %rbp
    0x557f82c39fb7 <+17>: retq

wallpaperengine`std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Core::CProject*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Core::CProject*>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Core::CProject*>>>::lower_bound:
    0x557f82c39fb8 <+0>:  pushq  %rbp
(lldb) bt all
* thread #1, name = 'wallpaperengine', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
  * frame #0: 0x0000557f82c39fb2 wallpaperengine`std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>>::_M_mbegin() const + 12
    frame #1: 0x0000557f82c39aaa wallpaperengine`std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>>::_M_begin() + 24
    frame #2: 0x0000557f82c38d0a wallpaperengine`std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>>::~_Rb_tree() + 24
    frame #3: 0x0000557f82c38ba6 wallpaperengine`std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, WallpaperEngine::Render::CWallpaper*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, WallpaperEngine::Render::CWallpaper*>>>::~map() + 24
    frame #4: 0x0000557f82c38bc6 wallpaperengine`WallpaperEngine::Render::CRenderContext::~CRenderContext() + 28
    frame #5: 0x0000557f82c37098 wallpaperengine`WallpaperEngine::Application::CWallpaperApplication::~CWallpaperApplication() + 34
    frame #6: 0x0000557f82c2bb49 wallpaperengine`main + 218
    frame #7: 0x00007fd3afe39850 libc.so.6`___lldb_unnamed_symbol3141 + 128
    frame #8: 0x00007fd3afe3990a libc.so.6`__libc_start_main + 138
    frame #9: 0x0000557f82c2b885 wallpaperengine`_start + 37
(lldb)
Almamu commented 1 year ago

I cannot reproduce the issue with any background, and the stack trace doesn't really help either... Is the segfault happening in the same place when you try to use it as a desktop background? Can you try building a debug version and running it in window mode? Something like this should be enough:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
linux-wallpaperengine 1845706469

A stack trace of that last command should give a bit more info.

uttarayan21 commented 1 year ago

Hmm weird. It seems to work on window mode. Trying to --list-properties fails image Running without any arguments causes segfaults as well. image

Also using --screen-root causes a black screen but doesn't cause a segfault. ./linux-wallpaperengine --screen-root DP-4 1845706469 ( I made sure to kill picom before running )

Edit: I'll attach the backtrace soon.

trainzkid commented 8 months ago

@uttarayan21 the no-args-segfault has been fixed in a recent update, can this be retested with the latest version?

uttarayan21 commented 8 months ago

Ah sorry about that. I've switched from xorg to wayland quite a while ago. I'll try and see if my xorg still works and let you know.