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

Reply via email to