diff --git a/Lib/collections.py b/Lib/collections.py
index 56ae2a3..1126fb1 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -41,6 +41,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:
@@ -95,10 +96,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,)
@@ -167,9 +168,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 7beb061..514dc39 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -951,6 +951,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)
diff --git a/Misc/NEWS b/Misc/NEWS
index ab4a06f..c49c96e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -32,6 +32,9 @@
 Library
 -------
 
+- Issue #9826: OrderedDict.__repr__ can now handle self-referential
+  values:   d['x'] = d.
+
 - Issue #9825: Using __del__ in the definition of collections.OrderedDict made
   it possible for the user to create self-referencing ordered dictionaries
   which become permanently uncollectable GC garbage. Reinstated the Py3.1
