Where would I find

Pekka Paalanen ppaalanen at gmail.com
Fri Sep 10 09:06:28 UTC 2021


On Thu, 9 Sep 2021 17:29:21 +0000
David Deyo <ddeyo at tireprofiles.com> wrote:

> Hello all,
> 
> I am trying to track down a  bug I’ve either created or revealed.
> 
> I’ve implemented a patch to Weston-9 to allow me to rotate my display.
> 
> It mostly works.  Occasionally it fails and crashes because the new
> screen size (1315) requested is too large.
> 
> Does anyone know where would I find the functions below, like
> wl_shm_pool at 21.create_buffer<mailto:wl_shm_pool at 21.create_buffer>?

Hi,

that particular one is implemented in
https://gitlab.freedesktop.org/wayland/wayland/-/blob/bf98c1a8f2872d3da2be895d9a7f56ada65d43d5/src/wayland-shm.c#L174

That function is plugged into struct wl_shm_pool_interface in
shm_create_pool(). That one in turn is plugged into struct
wl_shm_interface in bind_shm(), which gets called for wl_registry.bind
request when the wl_shm global is the argument.

Weston installs this machinery by calling wl_display_init_shm().

> 
> I’ve searched through the git folder of weston.  I’ve been able to
> find weston_desktop_xdg_surface_protocol_set_window_geometry, but
> when I try a simple printf, I never get it in stdout. But, I can put
> a wl_resource_post_error in the same place and it definitely crashes.
>  How would I add a log statement and actually get it?

I don't see why the printf would not come through, but in Weston it's
often better to use weston_log() instead.

stdout is buffered - maybe it's not flushed on crash? Hence preferring
strerr for ad hoc printf instead.

> 
> I’ve set WAYLAND_DEBUG to 1 and I believe below is the protocol log.
> 
> [2077634.996] wl_callback at 21.done(156952735)
> [2077645.484]  -> wl_shm at 9.create_pool(new id wl_shm_pool at 21, fd 10, 10099200)
> [2077645.654]  -> wl_shm_pool at 21.create_buffer(new id wl_buffer at 15, 0, 1920, 1315, 7680, 0)
> [2077673.186]  -> wl_surface at 27.attach(wl_buffer at 15, 0, 0)
> [2077673.303]  -> wl_surface at 27.set_buffer_scale(1)
> [2077673.320]  -> wl_surface at 27.damage(0, 0, 1920, 1315)
> [2077673.350]  -> xdg_toplevel at 31.set_min_size(686, 1315)
> [2077673.369]  -> xdg_toplevel at 31.set_max_size(0, 0)
> [2077673.388]  -> xdg_surface at 29.set_window_geometry(0, 0, 1920, 1315)
> [2077673.419]  -> wl_compositor at 4.create_region(new id wl_region at 23)
> [2077673.437]  -> wl_region at 23.add(0, 0, 1920, 1315)
> [2077673.465]  -> wl_surface at 27.set_opaque_region(wl_region at 23)
> [2077673.479]  -> wl_region at 23.destroy()
> [2077673.492]  -> wl_compositor at 4.create_region(new id wl_region at 20)
> [2077673.509]  -> wl_region at 20.add(-10, -10, 1940, 1335)
> [2077673.537]  -> wl_surface at 27.set_input_region(wl_region at 20)
> [2077673.551]  -> wl_region at 20.destroy()
> [2077673.611]  -> wl_surface at 27.frame(new id wl_callback at 30)
> [2077673.659]  -> wl_surface at 27.commit()
> [2077678.019] wl_display at 1.delete_id(26)
> [2077678.091] wl_display at 1.delete_id(3)
> [2077678.107] wl_display at 1.delete_id(23)
> [2077678.121] wl_display at 1.delete_id(20)
> [2077678.134] wl_display at 1.error(xdg_wm_base at 18, 4, "xdg_surface buffer (1920 x 1315) is larger than the configured fullscreen state (1920 x 1088)")

You should be getting a configure event with 1920x1088 in the client.
Then you need to use that size when you ack the configuration.

However, this is a protocol error sent to the client. It doesn't crash
the compositor per se.


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20210910/17e60e20/attachment.sig>


More information about the wayland-devel mailing list