The tp_new implementation should initialize the errorhandler field,
otherwise this code could segfault:

  from socket import socket
  s = socket.__new__(socket)
  s.recv(100)
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 21fcab0..1874541 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1690,8 +1690,10 @@
 	PyObject *new;
 
 	new = type->tp_alloc(type, 0);
-	if (new != NULL)
+	if (new != NULL) {
 		((PySocketSockObject *)new)->sock_fd = -1;
+		((PySocketSockObject *)new)->errorhandler = &PySocket_Err;
+	}
 	return new;
 }