Try a blind fix to nismodule which fails on the solaris10 3.0 buildbot:
the GIL must be re-acquired in the callback function
diff --git a/Modules/nismodule.c b/Modules/nismodule.c
index 0811430..9c1cd00 100644
--- a/Modules/nismodule.c
+++ b/Modules/nismodule.c
@@ -98,6 +98,7 @@
 struct ypcallback_data {
 	PyObject	*dict;
 	int			fix;
+	PyThreadState *state;
 };
 
 static int
@@ -109,6 +110,7 @@
 		PyObject *val;
 		int err;
 
+		PyEval_RestoreThread(indata->state);
 		if (indata->fix) {
 		    if (inkeylen > 0 && inkey[inkeylen-1] == '\0')
 			inkeylen--;
@@ -127,10 +129,11 @@
 		err = PyDict_SetItem(indata->dict, key, val);
 		Py_DECREF(key);
 		Py_DECREF(val);
-		if (err != 0) {
+		if (err != 0)
 			PyErr_Clear();
-			return 1;
-		}
+		indata->state = PyEval_SaveThread();
+		if (err != 0)
+		  	return 1;
 		return 0;
 	}
 	return 1;
@@ -206,9 +209,9 @@
 	data.dict = dict;
 	map = nis_mapname (map, &data.fix);
 	cb.data = (char *)&data;
-	Py_BEGIN_ALLOW_THREADS
+	data.state = PyEval_SaveThread();
 	err = yp_all (domain, map, &cb);
-	Py_END_ALLOW_THREADS
+	PyEval_RestoreThread(data.state);
 	if (err != 0) {
 		Py_DECREF(dict);
 		return nis_error(err);