Okay, I can confirm this would appear to fix the problem.
Test procedure:
1. Log in remotely to the affected machine using ssh, run the following
command:
$ sudo watch ls -l /proc/$( pidof gdm-binary )/fd
2. Start a remote X session with that host (through Xnest, plain X,
whatever)... observe that new files are opened.
3. Close the X session, observe that the files are not removed from the
list. In my case, this looked like this:
Vanilla Ubuntu gdm build.
After initial start-up.
total 0
lrwx-- 1 root root 64 2012-09-20 14:34 0 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:34 1 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:34 2 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:34 3 - socket:[78942]
lr-x-- 1 root root 64 2012-09-20 14:34 4 - pipe:[78945]
l-wx-- 1 root root 64 2012-09-20 14:34 5 - pipe:[78945]
lr-x-- 1 root root 64 2012-09-20 14:34 6 - inotify
lr-x-- 1 root root 64 2012-09-20 14:34 7 - pipe:[78952]
l-wx-- 1 root root 64 2012-09-20 14:34 8 - pipe:[78952]
lrwx-- 1 root root 64 2012-09-20 14:34 9 -
/var/run/gdm/auth-for-gdm-omI8J6/database
lr-x-- 1 root root 64 2012-09-20 14:34 10 - pipe:[78971]
l-wx-- 1 root root 64 2012-09-20 14:34 11 - pipe:[78971]
lr-x-- 1 root root 64 2012-09-20 14:34 12 - pipe:[78937]
lrwx-- 1 root root 64 2012-09-20 14:34 13 - socket:[78973]
lrwx-- 1 root root 64 2012-09-20 14:34 14 - socket:[78974]
After a few logins...
total 0
lrwx-- 1 root root 64 2012-09-20 14:38 0 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:38 1 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:38 2 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:38 3 - socket:[78942]
lr-x-- 1 root root 64 2012-09-20 14:38 4 - pipe:[78945]
l-wx-- 1 root root 64 2012-09-20 14:38 5 - pipe:[78945]
lr-x-- 1 root root 64 2012-09-20 14:38 6 - inotify
lr-x-- 1 root root 64 2012-09-20 14:38 7 - pipe:[78952]
l-wx-- 1 root root 64 2012-09-20 14:38 8 - pipe:[78952]
lrwx-- 1 root root 64 2012-09-20 14:38 9 -
/var/run/gdm/auth-for-gdm-omI8J6/database
lr-x-- 1 root root 64 2012-09-20 14:38 10 - pipe:[78971]
l-wx-- 1 root root 64 2012-09-20 14:38 11 - pipe:[78971]
lr-x-- 1 root root 64 2012-09-20 14:38 12 - pipe:[78937]
lrwx-- 1 root root 64 2012-09-20 14:38 13 - socket:[78973]
lrwx-- 1 root root 64 2012-09-20 14:38 14 - socket:[78974]
lrwx-- 1 root root 64 2012-09-20 14:38 15 -
/var/run/gdm/auth-for-gdm-bqKAEb/database
lrwx-- 1 root root 64 2012-09-20 14:38 16 -
/var/run/gdm/auth-for-gdm-QC37Jk/database
lrwx-- 1 root root 64 2012-09-20 14:38 17 -
/var/run/gdm/auth-for-vrtadmin-4oPw6L/database
lrwx-- 1 root root 64 2012-09-20 14:38 18 -
/var/run/gdm/auth-for-gdm-ePg83T/database
lrwx-- 1 root root 64 2012-09-20 14:38 19 -
/var/run/gdm/auth-for-vrtadmin-YMcsem/database
Now, build gdm with the given patch here, re-start gdm, and try again
with the same procedure. In my case, I see:
Patched gdm build.
After initial start-up.
total 0
lrwx-- 1 root root 64 2012-09-20 14:49 0 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:49 1 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:49 2 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:49 3 - socket:[102450]
lr-x-- 1 root root 64 2012-09-20 14:49 4 - pipe:[102453]
l-wx-- 1 root root 64 2012-09-20 14:49 5 - pipe:[102453]
lr-x-- 1 root root 64 2012-09-20 14:49 6 - inotify
lr-x-- 1 root root 64 2012-09-20 14:49 7 - pipe:[102460]
l-wx-- 1 root root 64 2012-09-20 14:49 8 - pipe:[102460]
lrwx-- 1 root root 64 2012-09-20 14:49 9 -
/var/run/gdm/auth-for-gdm-kjZfwe/database
lr-x-- 1 root root 64 2012-09-20 14:49 10 - pipe:[102479]
l-wx-- 1 root root 64 2012-09-20 14:49 11 - pipe:[102479]
lr-x-- 1 root root 64 2012-09-20 14:49 12 - pipe:[102445]
lrwx-- 1 root root 64 2012-09-20 14:49 13 - socket:[102481]
lrwx-- 1 root root 64 2012-09-20 14:49 14 - socket:[102482]
During a remote X session
total 0
lrwx-- 1 root root 64 2012-09-20 14:51 0 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:51 1 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:51 2 - /dev/null
lrwx-- 1 root root 64 2012-09-20 14:51 3 - socket:[102450]
lr-x-- 1 root root 64 2012-09-20 14:51 4 - pipe:[102453]
l-wx-- 1 root root 64 2012-09-20 14:51 5 - pipe:[102453]
lr-x-- 1 root root 64 2012-09-20 14:51 6 - inotify
lr-x-- 1 root root 64 2012-09-20 14:51 7 - pipe:[102460]
l-wx-- 1 root root 64 2012-09-20 14:51 8 - pipe:[102460]
lrwx-- 1 root root 64 2012-09-20 14:51 9 -
/var/run/gdm/auth-for-gdm-kjZfwe/database
lr-x-- 1 root root 64 2012-09-20 14:51 10 - pipe:[102479]
l-wx-- 1 root root 64 2012-09-20 14:51 11 - pipe:[102479]
lr-x-- 1 root root 64 2012-09-20 14:51 12 - pipe:[102445]
lrwx-- 1 root root 64 2012-09-20 14:51 13 - socket:[102481]
lrwx-- 1 root root 64 2012-09-20 14:51 14 - socket:[102482]
lrwx-- 1 root root 64 2012-09-20 14:51 15 -