Bug 1198863 - X doesn't release event devices
Summary: X doesn't release event devices
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: xorg-x11-drv-wacom
Version: 21
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: X/OpenGL Maintenance List
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-03-05 00:17 UTC by Samuel Sieb
Modified: 2015-07-29 01:52 UTC (History)
3 users (show)

Fixed In Version: xorg-x11-drv-wacom-0.25.0-3.fc21
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-07-29 01:52:07 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
Xorg log (239.43 KB, text/plain)
2015-03-10 05:35 UTC, Samuel Sieb
no flags Details

Description Samuel Sieb 2015-03-05 00:17:37 UTC
After running X for a while, I start getting the error: "Maximum number of clients reached".  Since xlsclients only lists 17 connections, I checked the open file descriptors.

# ls -l /proc/860/fd | grep event17 | wc -l
157
# ls -l /proc/860/fd | grep event17 | grep deleted | wc -l
99
# ls -l /proc/860/fd | grep event15 | wc -l
68
# ls -l /proc/860/fd | grep event15 | grep deleted | wc -l
67

It has event17 and event15 open a total of 225 times, 166 of which are actually deleted.  event15 is a USB mouse and event17 is the touchscreen.  I would suspect that it's related to suspend/resume.

This may actually not be the fault of evdev as there is also /memfd:xshmfence which is open many times all of which are deleted, but I'll start here.

# ls -l /proc/860/fd | grep /memfd:xshmfence | wc -l
45
# ls -l /proc/860/fd | grep /memfd:xshmfence | grep deleted | wc -l
45

Comment 1 Hans de Goede 2015-03-05 08:55:59 UTC
Hi,

Thanks for the bug report.

Do you perhaps have xorg-x11-drv-libinput installed ?

Are you using gdm? If so please do (as the logged in user):

journalctl -e -n 2000 > journal.log

Immediately after logging into X, and attach journal.log here.

Thanks,

Hans

Comment 2 Samuel Sieb 2015-03-10 05:35:33 UTC
Created attachment 999748 [details]
Xorg log

Here is the log of all Xorg output in the journal.  I filtered it, because there were nearly 50000 copies of the following 3 lines:
Mar 09 21:05:47 mylaptop gdm-Xorg-:0[891]: GetModeLine - scrn: 0 clock: 69300
Mar 09 21:05:47 mylaptop gdm-Xorg-:0[891]: GetModeLine - hdsp: 1280 hbeg: 1306 hend: 1328 httl: 1418
Mar 09 21:05:47 mylaptop gdm-Xorg-:0[891]: vdsp: 800 vbeg: 802 vend: 804 vttl: 814 flags: 10

# ls -l /proc/891/fd 
total 0
l-wx------. 1 root root 64 Mar  9 22:24 0 -> /dev/null
lrwx------. 1 root root 64 Mar  9 22:24 1 -> socket:[19906]
lrwx------. 1 root root 64 Mar  9 22:24 10 -> /dev/dri/card0
lrwx------. 1 root root 64 Mar  9 22:24 100 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 101 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 102 -> socket:[643786]
lrwx------. 1 root root 64 Mar  9 22:24 103 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 104 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 105 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 106 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 107 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 108 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 109 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 11 -> /dev/vga_arbiter
lrwx------. 1 root root 64 Mar  9 22:24 110 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 111 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 112 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 113 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 114 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 115 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 116 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 117 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 118 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 119 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 12 -> socket:[19923]
lrwx------. 1 root root 64 Mar  9 22:24 120 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 121 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 122 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 123 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 124 -> /dev/input/event4
lrwx------. 1 root root 64 Mar  9 22:24 125 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 126 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 127 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 128 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 129 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 13 -> socket:[19925]
lrwx------. 1 root root 64 Mar  9 22:24 130 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 131 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 132 -> /dev/input/event16
lrwx------. 1 root root 64 Mar  9 22:24 14 -> /dev/input/event2
lrwx------. 1 root root 64 Mar  9 22:24 15 -> /dev/input/event6
lrwx------. 1 root root 64 Mar  9 22:24 16 -> /dev/input/event0
lrwx------. 1 root root 64 Mar  9 22:24 17 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 18 -> /dev/input/event15
lrwx------. 1 root root 64 Mar  9 22:24 19 -> /dev/input/event3
lrwx------. 1 root root 64 Mar  9 22:24 2 -> socket:[19902]
lrwx------. 1 root root 64 Mar  9 22:24 20 -> /dev/input/event5
lrwx------. 1 root root 64 Mar  9 22:24 21 -> /dev/input/event7
lrwx------. 1 root root 64 Mar  9 22:24 22 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 23 -> /dev/input/event9
lrwx------. 1 root root 64 Mar  9 22:24 24 -> socket:[21754]
lrwx------. 1 root root 64 Mar  9 22:24 25 -> socket:[28081]
lrwx------. 1 root root 64 Mar  9 22:24 256 -> /sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness
lrwx------. 1 root root 64 Mar  9 22:24 257 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 258 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 259 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 26 -> socket:[28702]
lrwx------. 1 root root 64 Mar  9 22:24 260 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 261 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 262 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 263 -> /dev/shm/shmfd-6pS7uc (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 264 -> /dev/shm/shmfd-IPqZab (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 265 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 266 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 267 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 268 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 269 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 27 -> socket:[26229]
lrwx------. 1 root root 64 Mar  9 22:24 270 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 271 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 272 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 273 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 274 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 275 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 276 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 277 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 278 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 279 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 28 -> socket:[28803]
lrwx------. 1 root root 64 Mar  9 22:24 280 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 281 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 282 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 283 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 284 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 285 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 286 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 287 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 288 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 289 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 29 -> socket:[27131]
lrwx------. 1 root root 64 Mar  9 22:24 290 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 291 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 292 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 293 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 294 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 295 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 296 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 297 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 298 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 299 -> /dev/shm/shmfd-DDYhBE (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 3 -> socket:[19907]
lrwx------. 1 root root 64 Mar  9 22:24 30 -> socket:[28910]
lrwx------. 1 root root 64 Mar  9 22:24 300 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 301 -> /memfd:xshmfence (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 31 -> socket:[28978]
lrwx------. 1 root root 64 Mar  9 22:24 32 -> socket:[26457]
lrwx------. 1 root root 64 Mar  9 22:24 33 -> socket:[26619]
lrwx------. 1 root root 64 Mar  9 22:24 34 -> socket:[28671]
lrwx------. 1 root root 64 Mar  9 22:24 35 -> socket:[31003]
lrwx------. 1 root root 64 Mar  9 22:24 36 -> socket:[29956]
lrwx------. 1 root root 64 Mar  9 22:24 37 -> socket:[32933]
lrwx------. 1 root root 64 Mar  9 22:24 38 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 39 -> socket:[693541]
lr-x------. 1 root root 64 Mar  9 22:24 4 -> /usr/lib64/xorg/protocol.txt
lrwx------. 1 root root 64 Mar  9 22:24 40 -> socket:[33265]
lrwx------. 1 root root 64 Mar  9 22:24 41 -> socket:[35151]
lrwx------. 1 root root 64 Mar  9 22:24 42 -> socket:[35854]
lrwx------. 1 root root 64 Mar  9 22:24 43 -> socket:[693548]
lrwx------. 1 root root 64 Mar  9 22:24 44 -> socket:[693557]
lrwx------. 1 root root 64 Mar  9 22:24 45 -> socket:[43631]
lrwx------. 1 root root 64 Mar  9 22:24 46 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 47 -> socket:[47167]
lrwx------. 1 root root 64 Mar  9 22:24 48 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 49 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 5 -> socket:[19909]
lrwx------. 1 root root 64 Mar  9 22:24 50 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 51 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 52 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 53 -> socket:[56994]
lrwx------. 1 root root 64 Mar  9 22:24 54 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 55 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 56 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 57 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 58 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 59 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 6 -> socket:[22641]
lrwx------. 1 root root 64 Mar  9 22:24 60 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 61 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 62 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 63 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 64 -> socket:[126454]
lrwx------. 1 root root 64 Mar  9 22:24 65 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 66 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 67 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 68 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 69 -> /dev/input/event16 (deleted)
l-wx------. 1 root root 64 Mar  9 22:24 7 -> /proc/mtrr
lrwx------. 1 root root 64 Mar  9 22:24 70 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 71 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 72 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 73 -> /dev/input/event4 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 74 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 75 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 76 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 77 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 78 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 79 -> /dev/input/event16 (deleted)
l-wx------. 1 root root 64 Mar  9 22:24 8 -> /proc/mtrr
lrwx------. 1 root root 64 Mar  9 22:24 80 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 81 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 82 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 83 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 84 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 85 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 86 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 87 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 88 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 89 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 9 -> /dev/tty1
lrwx------. 1 root root 64 Mar  9 22:24 90 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 91 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 92 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 93 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 94 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 95 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 96 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 97 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 98 -> /dev/input/event16 (deleted)
lrwx------. 1 root root 64 Mar  9 22:24 99 -> socket:[695983]

Comment 3 Hans de Goede 2015-03-10 09:03:47 UTC
Hi,

Interesting the "(deleted)" suggests that userspace has closed the fd, but for some reason the kernel is not done yet with cleaning it up, or some such. Does anyone following this bug have more insight into what the "(deleted)" actually means ?

For now I've a feeling this may be a kernel bug, what kernel are you running ?

Regards,

Hans

Comment 4 Samuel Sieb 2015-03-10 15:36:17 UTC
Kernel is 3.18.8-201.fc21.x86_64

The (deleted) happens when a process has a file still open after it has been deleted from the filesystem.  In this case, what appears to be happening is that X has opened /dev/input/event16, then the device has been removed, but X doesn't let it go.  When the device comes back, X sees it appearing and opens it again.  X isn't properly handling the removals.

After further testing, it looks like it's actually the wacom driver.  Every suspend/resume cycle, there is one more event descriptor open.  The reason there is more than one event number in the deleted state is because the wacom can end up on a different number depending on if the USB mouse is plugged in.

Comment 5 Fedora Update System 2015-03-11 03:13:06 UTC
xorg-x11-drv-wacom-0.25.0-3.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/xorg-x11-drv-wacom-0.25.0-3.fc21

Comment 6 Fedora Update System 2015-03-13 16:56:27 UTC
Package xorg-x11-drv-wacom-0.25.0-3.fc21:
* should fix your issue,
* was pushed to the Fedora 21 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing xorg-x11-drv-wacom-0.25.0-3.fc21'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2015-3607/xorg-x11-drv-wacom-0.25.0-3.fc21
then log in and leave karma (feedback).

Comment 7 Samuel Sieb 2015-03-16 18:59:27 UTC
The update fixes it.

Comment 8 Fedora Update System 2015-07-29 01:52:07 UTC
xorg-x11-drv-wacom-0.25.0-3.fc21 has been pushed to the Fedora 21 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.