Index: twisted/internet/test/test_process.py
===================================================================
--- twisted/internet/test/test_process.py	(revision 31670)
+++ twisted/internet/test/test_process.py	(working copy)
@@ -792,15 +792,16 @@
     def test_inaccurateDevFDResults(self):
         """
         If there is no proc filesystem and /dev/fd returns inaccurate
-        information, L{_process._fallbackFDImplementation} is selected.  This is
+        information, one of L{_process._resourceFDImplementation} or
+        L{_process._fallbackFDImplementation} is selected.  This is
         like FreeBSD without I{fdescfs} mounted.
         """
         self.procfs = False
         self.devfs = True
         self.accurateDevFDResults = False
-        self.assertEquals(
+        self.assertIn(
             self.detector._getImplementation().func_name,
-            '_fallbackFDImplementation')
+            ('_fallbackFDImplementation', '_resourceFDImplementation'))
 
 
     def test_procFilesystem(self):
Index: twisted/internet/process.py
===================================================================
--- twisted/internet/process.py	(revision 31670)
+++ twisted/internet/process.py	(working copy)
@@ -502,25 +502,25 @@
         /proc/%d/fd exists, if so use that.
         
         Otherwise, ask resource.getrlimit, if that throws an exception, then
-        fallback to _fallbackFDImplementation.
+        fallback to either _resourceFDImplementation if the resource module works
+        or _fallbackFDImplementation as last resort.
         """
         try:
             self.listdir("/dev/fd")
             if self._checkDevFDSanity(): # FreeBSD support :-)
                 return self._devFDImplementation
-            else:
-                return self._fallbackFDImplementation
         except:
             try:
                 self.listdir("/proc/%d/fd" % (self.getpid(),))
                 return self._procFDImplementation
             except:
-                try:
-                    self._resourceFDImplementation() # Imports resource
-                    return self._resourceFDImplementation
-                except:
-                    return self._fallbackFDImplementation
+                pass
 
+        try:
+            self._resourceFDImplementation() # Imports resource
+            return self._resourceFDImplementation
+        except:
+            return self._fallbackFDImplementation
 
     def _checkDevFDSanity(self):
         """
