Hi,
On 03-07-15 20:56, Hans de Goede wrote:
Hi Dave,
I've been working on a kms driver for a mini projector
which uses usb for its video transport. During the
development of this I've hit this problem where once
used from within Xorg to extend my regular gnome-desktop,
the module keeps a refcount of 1 after unplugging the
projector, so I cannot unload it which makes development
somewhat awkward.
I've reproduced the problem with an udl device and the
udl kms driver to make sure this is not a problem with
my driver.
So I've spend a day debugging this, I quickly found a
leaked fd for /dev/dri/card1 in /proc/<xorg-pid>/fd/
and after looking for an extra open() it turns out this
comes from a dup(). I've managed to pinpoint the source
of this, and just send a patch to fix the fd leak:
"glamor_egl: Properly free resources on init-error and exit"
After this I see no more fd leak, but sadly the problem is
still there. It is different now though, if I plug in an
udl device wait for X to see it load the modesetting driver,
etc., and then plug it out, everything is good. This is
different then before and shows my fd-leak patch helps.
But if I then go into the gnome control-panel, and change
the state of the udl attached monitor from "off" to
"secondary", and then unplug the udl, somehow somewhere
X still keeps a reference (like through a dma-buf object
or some such).
Just realized I forgot one important detail, if I completely
kill the Xserver at this point, then the reference does
get cleared and I can unload the udl kmod, so this seems to
be a userspace problem.
Regards,
Hans
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel