hyprland-wiki/pages/Crashes and Bugs/_index.md

108 lines
3.4 KiB
Markdown
Raw Normal View History

# Getting the log
2022-08-12 20:46:36 +02:00
If you are in a TTY, and the hyprland session that crashed was the last one you
launched, the log will be printed with
```sh
2022-08-12 20:46:36 +02:00
cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 1)/hyprland.log
```
feel free to save it to a file, save, copy, etc.
2022-08-12 20:46:36 +02:00
if you are in a Hyprland session, and you want the log of the last session, use
```sh
2022-08-12 20:46:36 +02:00
cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 2 | tail -n 1)/hyprland.log
```
# Crashes at launch
2022-08-12 20:46:36 +02:00
Diagnose the issue by what is in the log:
- `sWLRBackend was NULL!` -> launch in the TTY and refer to the wlr logs in RED.
- `Monitor X has NO PREFERRED MODE, and an INVALID one was requested` -> your
monitor is bork.
- Other -> see the coredump. Use `coredumpctl`, find the latest one's PID and do
`coredumpctl info PID`.
- failing on a driver (e.g. `radeon`) -> try compiling with
`make legacyrenderer`, if that doesn't help, report an issue.
- failing on `wlr-xxx` -> try compiling with `make legacyrenderer`, if that
doesn't help, report an issue, and also refer to the TTY wlr logs in RED like
in the first point.
- failing on `Hyprland` -> report an issue.
# Crashes not at launch
2022-08-12 20:46:36 +02:00
2022-10-10 16:22:57 +02:00
Report an issue on GitHub or on the Discord server.
2022-08-12 20:46:36 +02:00
# Bugs
2022-08-12 20:46:36 +02:00
First of all, **_READ THE [FAQ PAGE](../FAQ)_**
2022-08-12 20:46:36 +02:00
If your bug is not listed there, you can ask on the Discord server or open an
2022-10-10 16:22:57 +02:00
issue on GitHub.
2023-10-05 02:05:55 +02:00
# Building the Wayland stack with ASan
If requested, this is the deepest level of memory issue debugging possible.
Prepare yourself mentally, and then:
recommended to do in tty
clone wayland (`git clone --recursive https://gitlab.freedesktop.org/wayland/wayland`)
clone hyprland (`git clone --recursive https://github.com/hyprwm/Hyprland`)
add these envs to your Hyprland config to reset ASAN_OPTIONS for children and set LD_PRELOAD:
2023-10-05 02:05:55 +02:00
```
2024-01-18 21:53:22 +01:00
env = ASAN_OPTIONS,detect_odr_violation=0
env = LD_PRELOAD,/usr/lib/libasan.so.8.0.0
2023-10-05 02:05:55 +02:00
```
2024-01-18 21:53:22 +01:00
_Please note to check the asan .so version on your system with `ls /usr/lib | grep libasan`_
2023-10-05 02:05:55 +02:00
wayland:
```
meson ./build --prefix=/usr --buildtype=debug -Db_sanitize=address
sudo ninja -C build install
```
The Wayland build will likely fail citing missing dependencies such as Doxygen, these
dependencies will likely be available from your distros package manager.
2023-10-05 02:05:55 +02:00
hyprland:
```
2023-10-14 19:52:53 +02:00
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DWITH_ASAN:STRING=True -S . -B ./build -G Ninja
cmake --build ./build --config Debug --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
2023-11-11 21:56:42 +01:00
cd ./subprojects/wlroots
rm -rf ./build
meson ./build --prefix=/usr --buildtype=debug -Db_sanitize=address
ninja -C build
cd ../..
2023-11-11 21:55:02 +01:00
sudo make install
2023-10-05 02:05:55 +02:00
```
Exit Hyprland to a TTY, cd to the cloned hyprland, and launch it:
```
ASAN_OPTIONS="detect_odr_violation=0,log_path=asan.log" ./build/Hyprland -c ~/.config/hypr/hyprland.conf
```
open your terminal
Do whatever you used to do in order to crash the compositor.
2024-01-18 21:53:22 +01:00
Please note many apps will refuse to launch. Notably complex applications, like e.g. browsers.
Once it crashes, go to `~` or `cwd` and look for `asan.log.XXXXX` files. Zip all and attach to the issue.
2023-10-05 02:05:55 +02:00
once you are done, to revert your horribleness of no app opening without the ld preload just go to the cloned wayland and do
```
sudo rm -rf ./build
meson ./build --prefix=/usr --buildtype=release
sudo ninja -C build install
```
2023-11-11 21:57:37 +01:00
To revert the changes to hyprland and wlroots, do inside the cloned hyprland:
```
make all && sudo make install
2024-01-18 21:53:22 +01:00
```