See the above 2 logs. I added plenty of tracing output and recompiled.
It seems things probably go wrong somewhere in dix/devices.c in or below EnableDevice(). In the healthy log the second call to enable device seems to trigger the connect_hook() callback in config/hal.c. In the broken PS3 trace this never happens.
I investigated DeviceSetProperty() in dix/devices.c but it seemed to be behaving itself - returned Success on each call.
I will try recompiling the evdev driver without properties support, but looking at the logs I have it doesn't look like evdev is even loaded as that happens after the config/hal.c has done its work.
Progress ...
See the above 2 logs. I added plenty of tracing output and recompiled.
It seems things probably go wrong somewhere in dix/devices.c in or below EnableDevice(). In the healthy log the second call to enable device seems to trigger the connect_hook() callback in config/hal.c. In the broken PS3 trace this never happens.
I investigated DeviceSetProperty() in dix/devices.c but it seemed to be behaving itself - returned Success on each call.
I will try recompiling the evdev driver without properties support, but looking at the logs I have it doesn't look like evdev is even loaded as that happens after the config/hal.c has done its work.
Continuing ...