start() and stop() methods: return None where there is no exception;
returning NULL causes the interpreter to raise a SystemError.
Noted by Anthony Baxter at Python 10.
diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c
index ebaf37c..f88629d 100644
--- a/Modules/_hotshot.c
+++ b/Modules/_hotshot.c
@@ -1180,8 +1180,11 @@
     PyObject *result = NULL;
 
     if (PyArg_ParseTuple(args, ":start")) {
-        if (is_available(self))
+        if (is_available(self)) {
             do_start(self);
+            result = Py_None;
+            Py_INCREF(result);
+        }
     }
     return result;
 }
@@ -1198,8 +1201,11 @@
     if (PyArg_ParseTuple(args, ":stop")) {
         if (!self->active)
             PyErr_SetString(ProfilerError, "profiler not active");
-        else
+        else {
             do_stop(self);
+            result = Py_None;
+            Py_INCREF(result);
+        }
     }
     return result;
 }