[Cython] except clause on nogil functions

mark florisson markflorisson88 at gmail.com
Sat Aug 20 11:55:19 CEST 2011


On 20 August 2011 00:34, mark florisson <markflorisson88 at gmail.com> wrote:
> Hey,
>
> I think I found a rather serious bug: if an error label is used in a
> nogil function, it tries to build a traceback. So if the GIL is
> released you will immediately segfault, and otherwise it will work
> fine! Here is a snippet:
>
> cdef int with_gil_func() except 0 with gil:
>    raise Exception("error!")
>
> cdef int nogil_func() nogil except 0:
>    with_gil_func()
>
> with nogil:
>    nogil_func()
>
>
> [0] [00:03] ~  ➤ python -c 'import test'
> [1]    6888 segmentation fault  python -c 'import test'
>
> I've tried as far back as 0.12 but all versions down to 0.12 have it.
>
> BTW, it's really weird that the except clause on the function has to
> come after nogil but before with gil, and otherwise it's a syntax
> error.
>
> Should we fix it and do a bugfix release?
>

Ok I made a pull request for the fix: https://github.com/cython/cython/pull/56
Considering that it has been around this long and nobody has reported
it (?), I assume nobody has had a problem with it, so it's perhaps not
as urgent as I previously stated.

What about the syntax issue though? Should we fix that?


More information about the cython-devel mailing list