Go to file
Lubomir Rintel ddc2b1ec32 pixman: Destroy pixman images when underlying buffer is destroyed
While the pixman image might be attached, the underlying buffer might be
already gone under certain circumstances. This is easily reproduced by
attempting to resize gnome-terminal on a fbdev backend.

$ WAYLAND_DEBUG=1 strace -emunmap weston --backend=fbdev-backend.so
...
[1524826.942] wl_shm@7.create_pool(new id wl_shm_pool@23, fd 40, 1563540)
[1524827.315] wl_shm_pool@23.create_buffer(new id wl_buffer@24, 0, 759, 515, 3036, 0)
...
[1524829.488] wl_surface@14.attach(wl_buffer@24, 0, 0)
[1524829.766] wl_surface@14.set_buffer_scale(1)
[1524829.904] wl_surface@14.damage(0, 0, 759, 515)
[1524830.248] wl_surface@14.frame(new id wl_callback@25)
[1524830.450] wl_surface@14.commit()
...
[1524846.706] wl_shm@7.create_pool(new id wl_shm_pool@26, fd 40, 1545000)
[1524847.215] wl_shm_pool@26.create_buffer(new id wl_buffer@27, 0, 750, 515, 3000, 0)
[1524847.735] wl_buffer@24.destroy()
[1524847.953]  -> wl_display@1.delete_id(24)
[1524848.144] wl_shm_pool@23.destroy()
munmap(0xb5b2e000, 1563540)             = 0
[1524849.021]  -> wl_display@1.delete_id(23)
[1524849.425] wl_surface@14.attach(wl_buffer@27, 0, 0)
[1524849.730] wl_surface@14.set_buffer_scale(1)
[1524849.821] wl_surface@14.damage(0, 0, 750, 515)
<No commit yet, so drawing is attempted from older buffer that used to be
 attached to the surface, which happens to come from a destroyed pool,
 resulting it an invalid read from address 0xb5b2e000>

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
2013-12-22 13:40:11 -08:00
clients nested: Add EGL_WL_create_wayland_buffer_from_image compat defines 2013-12-17 10:40:01 -08:00
data window.c: frame_button: Maximize, minimize, close, icon buttons in window frame 2012-05-10 16:19:33 -04:00
desktop-shell Add a weston_surface_set_size function 2013-12-16 17:23:09 -08:00
man Make the default desktop shell client configurable 2013-12-02 15:44:49 -08:00
protocol protocol: crop & scale RFC v3 2013-12-16 22:35:56 -08:00
shared os: use posix_fallocate in creating sharable buffers 2013-12-02 16:20:27 -08:00
src pixman: Destroy pixman images when underlying buffer is destroyed 2013-12-22 13:40:11 -08:00
tests tests: Test whether a simple EGL main loop uses too many buffers 2013-12-07 22:26:23 -08:00
wcap Add more missing config.h #includes 2013-08-26 14:59:14 -07:00
xwayland Update .gitignore 2013-12-09 12:15:41 -08:00
.gitignore Automatically generate weston.ini with the right paths 2013-11-27 22:49:31 -08:00
autogen.sh Update autotools configuration 2010-11-06 21:04:03 -04:00
configure.ac configure.ac: Bump version to 1.3.91 for alpha release 2013-12-16 23:32:53 -08:00
COPYING Add COPYING 2012-04-25 10:17:42 -04:00
Makefile.am Makefile.am: Clean generated weston.ini on make clean 2013-12-16 23:12:46 -08:00
notes.txt Add informal notes file 2012-10-25 15:00:42 -04:00
README Flesh out README a bit, link to building instructions 2012-07-20 12:26:23 -04:00
wayland-scanner.mk autotools: Don't use wayland-scanner.m4 2013-08-20 11:15:19 -07:00
weston.ini.in Automatically generate weston.ini with the right paths 2013-11-27 22:49:31 -08:00

Weston

Weston is the reference implementation of a Wayland compositor, and a
useful compositor in its own right.  Weston has various backends that
lets it run on Linux kernel modesetting and evdev input as well as
under X11.  Weston ships with a few example clients, from simple
clients that demonstrate certain aspects of the protocol to more
complete clients and a simplistic toolkit.  There is also a quite
capable terminal emulator (weston-terminal) and an toy/example desktop
shell.  Finally, weston also provides integration with the Xorg server
and can pull X clients into the Wayland desktop and act as a X window
manager.

Refer to http://wayland.freedesktop.org/building.html for buiding
weston and its dependencies.