Go to file
Dominique Martinet d5e14ab247 wayland backend: fix use-after free on output destroy
==12021==ERROR: AddressSanitizer: heap-use-after-free on address 0x617000015698 at pc 0x7f1a9abe1c09 bp 0x7ffe9068f6b0 sp 0x7ffe9068f6a0
WRITE of size 4 at 0x617000015698 thread T0
    #0 0x7f1a9abe1c08 in pointer_handle_leave ../backend/wayland/wl_seat.c:40
    #1 0x7f1a96ae7d1d in ffi_call_unix64 (/lib64/libffi.so.6+0x5d1d)
    #2 0x7f1a96ae768e in ffi_call (/lib64/libffi.so.6+0x568e)
    #3 0x7f1a988e0d8a  (/lib64/libwayland-client.so.0+0x8d8a)
    #4 0x7f1a988dd927  (/lib64/libwayland-client.so.0+0x5927)
    #5 0x7f1a988debe3 in wl_display_dispatch_queue_pending (/lib64/libwayland-client.so.0+0x6be3)
    #6 0x7f1a9abdd6d6 in dispatch_events ../backend/wayland/backend.c:28
    #7 0x7f1a9a968c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11)
    #8 0x7f1a9a967449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449)
    #9 0x418dff in main ../rootston/main.c:81
    #10 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29)
    #11 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9)

0x617000015698 is located 664 bytes inside of 696-byte region [0x617000015400,0x6170000156b8)
freed by thread T0 here:
    #0 0x7f1a9af754b8 in __interceptor_free (/lib64/libasan.so.4+0xde4b8)
    #1 0x7f1a9abe01ee in wlr_wl_output_destroy ../backend/wayland/output.c:194
    #2 0x7f1a9ac12918 in wlr_output_destroy ../types/wlr_output.c:299
    #3 0x7f1a9abe061b in xdg_toplevel_handle_close ../backend/wayland/output.c:255
    #4 0x7f1a96ae7d1d in ffi_call_unix64 (/lib64/libffi.so.6+0x5d1d)
    #5 0x7f1a96ae768e in ffi_call (/lib64/libffi.so.6+0x568e)
    #6 0x7f1a988e0d8a  (/lib64/libwayland-client.so.0+0x8d8a)
    #7 0x7f1a988dd927  (/lib64/libwayland-client.so.0+0x5927)
    #8 0x7f1a988debe3 in wl_display_dispatch_queue_pending (/lib64/libwayland-client.so.0+0x6be3)
    #9 0x7f1a9abdd6d6 in dispatch_events ../backend/wayland/backend.c:28
    #10 0x7f1a9a968c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11)
    #11 0x7f1a9a967449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449)
    #12 0x418dff in main ../rootston/main.c:81
    #13 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29)
    #14 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9)

previously allocated by thread T0 here:
    #0 0x7f1a9af75a38 in __interceptor_calloc (/lib64/libasan.so.4+0xdea38)
    #1 0x7f1a9abe0703 in wlr_wl_output_create ../backend/wayland/output.c:272
    #2 0x7f1a9abdd8eb in wlr_wl_backend_start ../backend/wayland/backend.c:55
    #3 0x7f1a9abbeb49 in wlr_backend_start ../backend/backend.c:28
    #4 0x7f1a9abd8ce1 in multi_backend_start ../backend/multi/backend.c:24
    #5 0x7f1a9abbeb49 in wlr_backend_start ../backend/backend.c:28
    #6 0x418c32 in main ../rootston/main.c:58
    #7 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29)
    #8 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9)
2018-03-22 21:27:49 +01:00
backend wayland backend: fix use-after free on output destroy 2018-03-22 21:27:49 +01:00
examples render: split render.h into wlr_renderer.h and wlr_texture.h 2018-03-19 23:16:29 +01:00
include wayland backend: fix use-after free on output destroy 2018-03-22 21:27:49 +01:00
protocol Add initial linux_dmabuf protocol support 2018-03-15 12:40:18 +01:00
render gles2: Honor alpha in fragment_src_external 2018-03-20 14:30:30 +01:00
rootston rootston/output: fix leak in damage_from_surface 2018-03-22 21:25:41 +01:00
types xdg_popup_grab: add listener on seat destroy 2018-03-22 21:25:41 +01:00
util Rename _strip_path to wlr_strip_path 2018-02-21 10:25:52 +01:00
xcursor Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
xwayland xwm.h: fix guard ifdef and remove wlr_ prefix from xwm_atoms_contains 2018-03-04 11:16:18 +01:00
.build.yml Change .build.yml upstream to GitHub 2018-03-03 23:11:06 -05:00
.editorconfig Add wlr_primary_selection_device_manager and wlr_primary_selection_source 2017-12-22 19:20:12 +01:00
.gitignore update .gitignore 2018-03-03 15:23:26 +01:00
CONTRIBUTING.md Update CONTRIBUTING.md 2017-12-27 10:39:53 -05:00
LICENSE Initial commit 2017-04-25 11:32:52 -04:00
README.md Remove Travis in favor of builds.sr.ht 2018-03-04 16:33:45 -05:00
glgen.sh Change glapi.sh to generate both files 2017-11-22 14:04:29 +13:00
meson.build meson: use current_source_dir instead of source_root 2018-03-12 12:15:26 +01:00
meson_options.txt xcb errors: optional dependency with improved messages 2018-03-03 11:46:04 +01:00
wlroots.syms add _wlr_vlog to syms global 2018-02-24 12:12:05 -05:00

README.md

wlroots

Pluggable, composable modules for building a Wayland compositor.

This is a WIP: status

Contributing

See CONTRIBUTING.md

Building

Install dependencies:

  • wayland
  • wayland-protocols
  • EGL
  • GLESv2
  • DRM
  • GBM
  • libinput
  • udev
  • pixman
  • systemd (optional, for logind support)
  • elogind (optional, for logind support on systems without systemd)
  • libcap (optional, for capability support)
  • asciidoc (optional, for man pages)

Run these commands:

meson build
ninja -C build

(On FreeBSD, you need to pass an extra flag to prevent a linking error: meson build -D b_lundef=false)

Running the Reference Compositor

wlroots comes with a reference compositor called rootston that demonstrates the features of the library.

After building, run rootston from a terminal or VT with:

./build/rootston/rootston

Now you can run windows in the compositor from the command line or by configuring bindings in your rootston.ini file.