<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><br><div><br><blockquote type="cite"><div>Le 1 mai 2023 à 20:06, Nicolas Dufresne <nicolas@ndufresne.ca> a écrit :</div><br class="Apple-interchange-newline"><div><meta charset="UTF-8"><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">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: 0px 0px 0px 0.8ex; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(114, 159, 207); 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><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div></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 style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">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 style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><a href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4521">https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4521</a></div></div></blockquote><br></div>That was quick :) Thanks!<div><br></div><div>Best regards</div><div>Jérôme Laheurte</div><div><br></div></body></html>