try some alternate, hard numbers when resetting open file limits on OS X
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 10 Dec 2014 20:27:22 +0000 (15:27 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 10 Dec 2014 20:27:32 +0000 (15:27 -0500)
libs/ardour/globals.cc

index 44367b8cf32cf055109e6de84cd21008e1ad6ddd..c36748612aa187cae8ce7594b695ed0cae87d7fd 100644 (file)
@@ -218,7 +218,30 @@ lotsa_files_please ()
 
                if (setrlimit (RLIMIT_NOFILE, &rl) != 0) {
                        if (rl.rlim_cur == RLIM_INFINITY) {
+#if __APPLE__
+                               /* For some reason, Apple doesn't do this the
+                                * same way as Linux, and asking for
+                                * RLIM_INFINITY even though that is
+                                * rl.rlim_cur doesn't work.
+                                * 
+                                * So try some actual large numbers in the hope
+                                * that one of them will work.
+                                */
+
+                               rl.rlim_cur = 10000;
+                               if (setrlimit (RLIMIT_NOFILE, &rl) != 0) {
+                                       rl.rlim_cur = 4096;
+                                       if (setrlimit (RLIMIT_NOFILE, &rl) != 0) {
+                                               rl.rlim_cur = 1000;
+                                               if (setrlimit (RLIMIT_NOFILE, &rl) != 0) {
+                                                       error << _("Could not set system open files limit to a reasonable value. Be careful!") << endmsg;
+                                               }
+                                       }
+                               }
+                               info << string_compose ("Configured system open file limit to %1", rl.rlim_cur) << endmsg;
+#else
                                error << _("Could not set system open files limit to \"unlimited\"") << endmsg;
+#endif                         
                        } else {
                                error << string_compose (_("Could not set system open files limit to %1"), rl.rlim_cur) << endmsg;
                        }