pluginloader: handle fsync interrupted by signal (EINTR)
authorPeter Seiderer <ps.report@gmx.net>
Thu, 12 Dec 2019 10:39:56 +0000 (11:39 +0100)
committerPeter Seiderer <ps.report@gmx.net>
Thu, 12 Dec 2019 19:49:36 +0000 (20:49 +0100)
According to [1] EINTR is a possible errno for fsync(),
so handle it as all other EINTR (do/while(errno == EINTR)).

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
gst/gstpluginloader.c

index a933a4bc4efca1e47e1fd000ebdfa30b4072be22..d1e404d98edd444a0d847fbba6a5d470ade7fda0 100644 (file)
@@ -171,8 +171,11 @@ plugin_loader_free (GstPluginLoader * loader)
 {
   GList *cur;
   gboolean got_plugin_details;
+  gint fsync_ret;
 
-  fsync (loader->fd_w.fd);
+  do {
+    fsync_ret = fsync (loader->fd_w.fd);
+  } while (fsync_ret < 0 && errno == EINTR);
 
   if (loader->child_running) {
     put_packet (loader, PACKET_EXIT, 0, NULL, 0);