wayland/tests
Derek Foreman c05f4f86ea client: Don't disconnect on receipt of object events destined for zombies
Server side objects give protocol designers exciting ways to break clients.
For example, if a client deletes an object at the same time the server is
sending an event containing a new object to that object, then we currently
silently drop that event. If a following event in the buffer from an
object that has not yet been deleted also contains a new object, the wl_map
constraint that new objects must be 1 higher than the current highest
object count is violated.  This results in a disconnect.

Instead, let's augment the zombie accounting code to keep the entire proxy
around on deletion, for both client and server generated objects.

This way we can create and immediately delete objects that are destined for
zombie proxies - thus creating zombie descendants.

We can go no further to clean this up in the client library - we can't call
a destructor because the protocol might dictate that child objects will be
automatically destroyed on the destruction of the parent.

So we turn a situation that would lead to an erroneous disconnect into one
that may or may not leak object ids depending on protocol definition.

Fixes #74
for some definition of "fix" anyway.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2021-08-26 07:38:28 -05:00
..
data scanner: Use the new atomic marshal/destroy function 2021-08-07 11:53:23 +00:00
array-test.c Avoid pointer arithmetic on void * 2019-06-05 10:01:07 +00:00
client-test.c Use wl_container_of internally 2019-06-05 09:58:14 +00:00
compositor-introspection-test.c Add a resource creation signal 2016-08-12 11:43:02 +03:00
connection-test.c connection-test: Pad out strings with null bytes 2021-07-22 22:27:45 +00:00
cpp-compile-test.cpp tests: C++ compilation test 2015-01-27 11:17:42 +00:00
display-test.c client: Don't disconnect on receipt of object events destined for zombies 2021-08-26 07:38:28 -05:00
event-loop-test.c event-loop-test: Add test to verify timer ordering 2020-01-21 11:31:35 +00:00
exec-fd-leak-checker.c tests: Require base 10 for the string specifying the number of open fd's 2016-07-11 13:32:15 -07:00
fixed-benchmark.c fixed-benchmark: remove unused arguments in main 2015-07-10 17:17:46 -07:00
fixed-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
headers-protocol-core-test.c tests: Check for client/server-core.h inclusion 2016-05-19 14:31:18 -07:00
headers-protocol-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
headers-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
interface-test.c tests: Test wl_interface_equal 2016-11-18 16:21:19 +02:00
list-test.c tests: Add test for wl_list_length 2016-09-05 15:10:43 +03:00
map-test.c util: Avoid undefined behaviour in for_each_helper 2021-07-21 11:42:42 +00:00
meson.build meson: only require cpp for tests 2021-04-16 03:04:56 -06:00
message-test.c tests: Add nullable check to wl_message_count_arrays 2016-11-18 16:59:23 +02:00
newsignal-test.c tests: fix typos 2020-12-17 16:03:14 -05:00
os-wrappers-test.c os-wrappers-test: Make syscall intercepts work with sanitizers 2021-07-22 22:27:45 +00:00
protocol-logger-test.c Add API to install protocol loggers on the server wl_display 2016-08-12 11:59:46 +03:00
proxy-test.c tests: fix memory leak in proxy-test 2020-01-28 20:57:52 +00:00
queue-test.c (multiple): Include stdint.h 2016-07-25 18:39:32 -07:00
resources-test.c tests: Add free-without-remove test 2018-04-20 13:19:13 -05:00
sanity-test.c tests: Remove memory leak checking infrastructure 2018-08-29 09:59:04 +01:00
scanner-test.sh tests: Verify that wayland_scanner can catch bad identifiers 2019-05-02 17:42:59 +00:00
signal-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
socket-test.c tests: Overly elaborate compiler warning workaround 2018-08-29 09:59:04 +01:00
test-compositor.c tests: Fix race condition in send overflow test 2020-01-15 13:18:56 +00:00
test-compositor.h tests: Fix race condition in send overflow test 2020-01-15 13:18:56 +00:00
test-helpers.c Support running tests from different build directories 2020-01-10 23:42:59 +01:00
test-runner.c log: remove "%m" from format strings by using strerror(errno) 2019-05-02 22:14:53 +02:00
test-runner.h tests: Remove memory leak checking infrastructure 2018-08-29 09:59:04 +01:00