diff --git a/NEWS b/NEWS
index 21db9dd8..0a5f3dc0 100644
--- a/NEWS
+++ b/NEWS
@@ -38,6 +38,8 @@ What's new in psycopg 2.7.6
   (:ticket:`#746`).
 - Fixed building on modern FreeBSD versions with Python 3.7 (:ticket:`#755`).
 - Fixed hang trying to :sql:`COPY` via `~cursor.execute()` (:ticket:`#781`).
+- Fixed segfault accessing the `connection.readonly` and
+  `connection.deferrable` repeatedly (:ticket:`#790`).
 
 
 What's new in psycopg 2.7.5
diff --git a/psycopg/connection_type.c b/psycopg/connection_type.c
index da421c01..6ac02269 100644
--- a/psycopg/connection_type.c
+++ b/psycopg/connection_type.c
@@ -757,6 +757,7 @@ psyco_conn_readonly_get(connectionObject *self)
             break;
     }
 
+    Py_XINCREF(rv);
     return rv;
 }
 
@@ -803,6 +804,7 @@ psyco_conn_deferrable_get(connectionObject *self)
             break;
     }
 
+    Py_XINCREF(rv);
     return rv;
 }
 
diff --git a/tests/test_connection.py b/tests/test_connection.py
index 498f3513..f9fdff6c 100755
--- a/tests/test_connection.py
+++ b/tests/test_connection.py
@@ -803,6 +803,14 @@ class IsolationLevelsTestCase(ConnectingTestCase):
         self.assertRaises(ValueError, setattr, self.conn, 'isolation_level', 5)
         self.assertRaises(ValueError, setattr, self.conn, 'isolation_level', 'bah')
 
+    def test_attribs_segfault(self):
+        # bug #790
+        for i in range(10000):
+            self.conn.autocommit
+            self.conn.readonly
+            self.conn.deferrable
+            self.conn.isolation_level
+
 
 class ConnectionTwoPhaseTests(ConnectingTestCase):
     def setUp(self):