@ -843,24 +843,16 @@ faulthandler_read_null(PyObject *self, PyObject *args)
{
volatile int * x ;
volatile int y ;
int release_gil = 0 ;
if ( ! PyArg_ParseTuple ( args , " |i:_read_null " , & release_gil ) )
return NULL ;
faulthandler_suppress_crash_report ( ) ;
x = NULL ;
if ( release_gil ) {
Py_BEGIN_ALLOW_THREADS
y = * x ;
Py_END_ALLOW_THREADS
} else
y = * x ;
y = * x ;
return PyLong_FromLong ( y ) ;
}
static PyObject *
faulthandler_sigsegv ( PyObject * self , PyObject * args )
static void
faulthandler_raise_ sigsegv ( void )
{
faulthandler_suppress_crash_report ( ) ;
# if defined(MS_WINDOWS)
@ -880,6 +872,22 @@ faulthandler_sigsegv(PyObject *self, PyObject *args)
# else
raise ( SIGSEGV ) ;
# endif
}
static PyObject *
faulthandler_sigsegv ( PyObject * self , PyObject * args )
{
int release_gil = 0 ;
if ( ! PyArg_ParseTuple ( args , " |i:_read_null " , & release_gil ) )
return NULL ;
if ( release_gil ) {
Py_BEGIN_ALLOW_THREADS
faulthandler_raise_sigsegv ( ) ;
Py_END_ALLOW_THREADS
} else {
faulthandler_raise_sigsegv ( ) ;
}
Py_RETURN_NONE ;
}
@ -1020,12 +1028,12 @@ static PyMethodDef module_methods[] = {
" 'signum' registered by register() " ) } ,
# endif
{ " _read_null " , faulthandler_read_null , METH_VAR ARGS ,
PyDoc_STR ( " _read_null(release_gil=False ): read from NULL, raise "
{ " _read_null " , faulthandler_read_null , METH_NO ARGS ,
PyDoc_STR ( " _read_null(): read from NULL, raise "
" a SIGSEGV or SIGBUS signal depending on the platform " ) } ,
{ " _sigsegv " , faulthandler_sigsegv , METH_VARARGS ,
PyDoc_STR ( " _sigsegv(): raise a SIGSEGV signal " ) } ,
{ " _sigabrt " , faulthandler_sigabrt , METH_VAR ARGS ,
PyDoc_STR ( " _sigsegv(release_gil=False ): raise a SIGSEGV signal " ) } ,
{ " _sigabrt " , faulthandler_sigabrt , METH_NO ARGS ,
PyDoc_STR ( " _sigabrt(): raise a SIGABRT signal " ) } ,
{ " _sigfpe " , ( PyCFunction ) faulthandler_sigfpe , METH_NOARGS ,
PyDoc_STR ( " _sigfpe(): raise a SIGFPE signal " ) } ,