<html><head><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>Hi,<br><br>Le jeudi 27 avril 2023 à 14:47 +0200, Jérôme Laheurte via gstreamer-devel a écrit :</div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div>Hello everybody. There seems to be a file descriptor leak in the device monitor API on ARM; using this sample program:</div><div><br></div><div><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">#include <unistd.h></span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">#include <gst/gst.h></span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77); min-height: 14px;"><span style="font-variant-ligatures: no-common-ligatures"></span><br></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">int main(int argc, char *argv[]) {</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">  gst_init(&argc, &argv);</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77); min-height: 14px;"><span style="font-variant-ligatures: no-common-ligatures"></span><br></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">  while (1) {</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">    GstDeviceMonitor* monitor = gst_device_monitor_new();</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">    if (!gst_device_monitor_start(monitor))</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">      return 1;</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">    gst_device_monitor_stop(monitor);</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">    gst_object_unref(monitor);</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77); min-height: 14px;"><span style="font-variant-ligatures: no-common-ligatures"></span><br></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">    sleep(1);</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">  }</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77); min-height: 14px;"><span style="font-variant-ligatures: no-common-ligatures"></span><br></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">  return 0;</span></p><p style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; line-height: normal; font-family: "Andale Mono"; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(47, 255, 18); background-color: rgba(0, 0, 0, 0.77);"><span style="font-variant-ligatures: no-common-ligatures">}</span></p></div><div><span style="font-variant-ligatures: no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures: no-common-ligatures">and monitoring /proc/[pid]/fd, there’s one new file descriptor every second created by eventfd2. Funny thing this only happens on a Raspberry Pi 4B (Raspbian). Versions tested:</span></div></blockquote><div><br></div><div>Thank you very much for the report, this little test was very handy. I have made a merge request to fix this leak, the eventfd is from a leaked GMainLoop.</div><div><br></div><div><a href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4521">https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4521</a></div><div><br></div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div><span style="font-variant-ligatures: no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures: no-common-ligatures">  * GStreamer 1.14.4 RPi: leak</span></div><div><span style="font-variant-ligatures: no-common-ligatures">  * GStreamer 1.18.4 RPi: leak</span></div><div><span style="font-variant-ligatures: no-common-ligatures">  * GStreamer 1.18.4 Intel: no leak</span></div><div><span style="font-variant-ligatures: no-common-ligatures">  * GStreamer 1.16.3 Intel: no leak</span></div><div><span style="font-variant-ligatures: no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures: no-common-ligatures">The only device provider is v4l2, with gudev enabled. I can provide more logs and test more recent versions if necessary, though it will take some time. A quick search in the issues didn’t turn out anything but I wanted to make sure before opening a new one: is this known ?</span></div><div><span style="font-variant-ligatures: no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures: no-common-ligatures">Best regards</span></div><div><span style="font-variant-ligatures: no-common-ligatures">Jérôme Laheurte</span></div><div><span style="font-variant-ligatures: no-common-ligatures"><br></span></div></blockquote><div><br></div><div><span></span></div></body></html>