diff --git a/Lib/collections.py b/Lib/collections.py
index f255919..4ac50d8 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -43,6 +43,7 @@
         '''
         if len(args) > 1:
             raise TypeError('expected at most 1 arguments, got %d' % len(args))
+        self.__in_repr = False              # detects recursive repr
         try:
             self.__root
         except AttributeError:
@@ -100,10 +101,10 @@
     def __reduce__(self):
         'Return state information for pickling'
         items = [[k, self[k]] for k in self]
-        tmp = self.__map, self.__root
-        del self.__map, self.__root
+        tmp = self.__map, self.__root, self.__in_repr
+        del self.__map, self.__root, self.__in_repr
         inst_dict = vars(self).copy()
-        self.__map, self.__root = tmp
+        self.__map, self.__root, self.__in_repr = tmp
         if inst_dict:
             return (self.__class__, (items,), inst_dict)
         return self.__class__, (items,)
@@ -128,9 +129,16 @@
 
     def __repr__(self):
         'od.__repr__() <==> repr(od)'
+        if self.__in_repr:
+            return '...'
         if not self:
             return '%s()' % (self.__class__.__name__,)
-        return '%s(%r)' % (self.__class__.__name__, list(self.items()))
+        self.__in_repr = True
+        try:
+            result = '%s(%r)' % (self.__class__.__name__, list(self.items()))
+        finally:
+            self.__in_repr = False
+        return result
 
     def copy(self):
         'od.copy() -> a shallow copy of od'
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 5e22afc..d435330 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -908,6 +908,13 @@
         self.assertEqual(eval(repr(od)), od)
         self.assertEqual(repr(OrderedDict()), "OrderedDict()")
 
+    def test_repr_recursive(self):
+        # See issue #9826
+        od = OrderedDict.fromkeys('abc')
+        od['x'] = od
+        self.assertEqual(repr(od),
+            "OrderedDict([('a', None), ('b', None), ('c', None), ('x', ...)])")
+
     def test_setdefault(self):
         pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
         shuffle(pairs)
