Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Python 3.11a4 _PyErr_StackItem #4672

Closed
wants to merge 1 commit into from
Closed

Support Python 3.11a4 _PyErr_StackItem #4672

wants to merge 1 commit into from

Conversation

vstinner
Copy link
Contributor

@vstinner vstinner commented Mar 2, 2022

Python 3.11 alpha 4 removed exc_type and exc_traceback fields the the
_PyErr_StackItem structure:

Python 3.11 alpha 4 removed exc_type and exc_traceback fields the the
_PyErr_StackItem structure:

* python/cpython@396b583
* https://bugs.python.org/issue45711
* #4500
@vstinner
Copy link
Contributor Author

vstinner commented Mar 2, 2022

Currently, lxml does crash on Python 3.11 with the current Cython 0.29.x branch. The #4500 issue is now fully fixed in 0.29.x yet.

I wrote this large change to use exc_value rather than exc_type and exc_traceback. But wait, it seems like it has already been fixed in master? 7769570 Oh!

@da-woods
Copy link
Contributor

da-woods commented Mar 2, 2022

So my belief was that I essentially fixed this in 0.29.x with #4610 (by just turning off a couple of defines). The master branch has a more thorough fix.

Looking at the most recent CI run for 0.29.x (https://github.com/cython/cython/runs/5323367319?check_suite_focus=true) there's one tracing test failing, (and a few division tests failing because the exception message has changed) but nothing I can see that suggests serious issues.

@scoder
Copy link
Contributor

scoder commented Mar 2, 2022

The original PR for the master branch is here: #4584

We disabled the two feature flags because I'd rather try to avoid backporting the whole thing to 0.29.x. It's a rather big change for a legacy release branch. I haven't looked into what's failing in lxml yet. Do you have the compiler output?

@scoder
Copy link
Contributor

scoder commented Mar 2, 2022

The PR looks ok, though. Since we have it right there, let's just get it merged into 0.29.x.

@da-woods
Copy link
Contributor

da-woods commented Mar 2, 2022

All the C++ checks seem to be failing at the moment though...

async_iter_pep492.cpp:1476:24: error: ‘PyException_GetTraceback’ was not declared in this scope
         PyObject *tb = PyException_GetTraceback(value);

is a fairly typical example of what's going wrong

#if PY_VERSION_HEX >= 0x030B00A4
tb = __Pyx__ExceptionGetTraceback(exc_state->exc_value);
#else
tb = exc_state->exc_traceback;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs a cast in C++

/////////////// _ExceptionGetTraceback.proto ///////////////

// Used by __Pyx__ExceptionSave() and __Pyx__ExceptionSwap() on Python 3.11a6
static CYTHON_INLINE PyObject* __Pyx__ExceptionGetTraceback(PyObject *value) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And this needs to be defined on Python 3.4+ only. On C++ the lack of declaration for PyException_GetTraceback is causing it to fail

#if PY_VERSION_HEX >= 0x030B00A4
tb = __Pyx__ExceptionGetTraceback(exc_state->exc_value);
#else
tb = exc_state->exc_traceback;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
tb = exc_state->exc_traceback;
tb = (PyTracebackObject *) exc_state->exc_traceback;

PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback;
PyTracebackObject *tb;
#if PY_VERSION_HEX >= 0x030B00A4
tb = __Pyx__ExceptionGetTraceback(exc_state->exc_value);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
tb = __Pyx__ExceptionGetTraceback(exc_state->exc_value);
tb = (PyTracebackObject *) __Pyx__ExceptionGetTraceback(exc_state->exc_value);

Comment on lines +504 to +506
/////////////// _ExceptionGetType.proto ///////////////

static CYTHON_INLINE PyObject* __Pyx__ExceptionGetType(PyObject *value) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The naming convention is to use double underscores for internal variants of "regular" helper functions, e.g. after handling special cases in an inline function. These functions should just have a single underscore as name separator.

#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
#elif !defined(CYTHON_FAST_THREAD_STATE)
#if !defined(CYTHON_FAST_THREAD_STATE)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#if !defined(CYTHON_FAST_THREAD_STATE)
#ifndef CYTHON_FAST_THREAD_STATE

#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
#elif !defined(CYTHON_USE_EXC_INFO_STACK)
#if !defined(CYTHON_USE_EXC_INFO_STACK)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#if !defined(CYTHON_USE_EXC_INFO_STACK)
#ifndef CYTHON_USE_EXC_INFO_STACK

@vstinner
Copy link
Contributor Author

vstinner commented Mar 2, 2022

So my belief was that I essentially fixed this in 0.29.x with #4610 (by just turning off a couple of defines).

I'm aware of this change, it's now possible to build numpy and lxml, but lxml does crash on Python 3.11 :-( It seems like exc_info must be handled on Python 3.11, that's why I wrote that PR.

@vstinner
Copy link
Contributor Author

vstinner commented Mar 2, 2022

The PR looks ok, though. Since we have it right there, let's just get it merged into 0.29.x.

I can address all of your remarks, but first: do you prefer that I backport the change from master, or to have a different change (this current PR) in the 0.29.x branch?

@vstinner
Copy link
Contributor Author

vstinner commented Mar 2, 2022

In Python, testing exc_type != NULL to check if an exception was raised was replaced with testing exc_value != NULL. In this PR, I added exc_type != Py_None tests: I don't know if it's required.

In __Pyx__ExceptionGetTraceback(), I added a PyExceptionInstance_Check() check to prevent a crash if exc_value is Py_None or ... something else which is not an exception instance. Again, I am not sure if it's needed to add some many sanity checks.

@scoder
Copy link
Contributor

scoder commented Mar 2, 2022

I can address all of your remarks, but first: do you prefer that I backport the change from master, or to have a different change (this current PR) in the 0.29.x branch?

I was thinking that this was based on the change in master, but apparently, it's not.

What I would prefer is the minimal change to make this work. I thought that this was disabling the feature flags, but it seems that that was not enough.

In any case, having two different sets of changes in master and legacy branch is the worst choice, IMHO, because it increases the chance of independent breakage of either of the two and makes later bug fixing unnecessarily difficult.

@da-woods
Copy link
Contributor

da-woods commented Mar 4, 2022

Do we have any details about what's crashing on lxml/what we need to do to reproduce the crash? Is it https://bugzilla.redhat.com/show_bug.cgi?id=2051510 ?

The main reason I think it's worth looking at is that the code paths in 0.29.x are largely the fallbacks that are used on PyPy I think. So if there's a reference counting error there it's probably worth fixing, irrespective of what we do with 0.29.x and Python 3.11.

(Plus there's clearly something that isn't tested properly in Cython...)

@iritkatriel
Copy link

@da-woods @scoder Is there still a problem with the exc_info change?

@da-woods
Copy link
Contributor

da-woods commented Apr 15, 2022

@da-woods @scoder Is there still a problem with the exc_info change?

Not sure. The issue reported was the there was an issue with lxml+Cython 0.29. But it was never clear to me what that issue was (or whether that issue was related to exc_info).

As far as I can see the vast majority of Cython code is working fine. But obviously there may be little issues remaining that haven't yet been found/reported in sufficient detail.

Cython's own test suite is running pretty well (but not absolutely perfectly) in Py3.11. Line tracing seems to be broken on the 0.29.x branch (which isn't a core feature but will need fixing eventually). But beyond that the errors look pretty minor (e.g. exception messages have changed slightly so doctests don't write match)

@vstinner
Copy link
Contributor Author

It seems like this change is no longer needed. I don't understand why previously, lxml required it and now it just works, but at the end, I'm happy that it just works :-)

@vstinner vstinner closed this Jun 21, 2022
@vstinner vstinner deleted the pyerr_stackitem_py311a4 branch June 21, 2022 08:24
@EwoutH
Copy link
Contributor

EwoutH commented Oct 9, 2022

Over at statsmodels we experience an issue with Python 3.11 and exc_type/exc_traceback, resulting in a lot of errors like:

error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’

This was using Cython 0.29.32 on Python 3.11.0rc2 The error log from the CI is attached below.

Could these errors be related to the PR above?

Error log building Statsmodels with Python 3.11 on Ubuntu:
    UPDATING build/lib.linux-x86_64-cpython-311/statsmodels/_version.py
      set build/lib.linux-x86_64-cpython-311/statsmodels/_version.py to '0.13.2'
      running build_ext
      building 'statsmodels.tsa._stl' extension
      Warning: Can't read registry to find the necessary compiler setting
      Make sure that Python modules winreg, win32api or win32con are installed.
      INFO: C compiler: gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
      
      creating build/temp.linux-x86_64-cpython-311
      creating build/temp.linux-x86_64-cpython-311/statsmodels
      creating build/temp.linux-x86_64-cpython-311/statsmodels/tsa
      INFO: compile options: '-DCYTHON_TRACE_NOGIL=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11 -c'
      INFO: gcc: statsmodels/tsa/_stl.c
      INFO: gcc -pthread -shared -Wl,--rpath=/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib -Wl,--rpath=/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib build/temp.linux-x86_64-cpython-311/statsmodels/tsa/_stl.o -L/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/lib -L/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib -lnpymath -lm -o build/lib.linux-x86_64-cpython-311/statsmodels/tsa/_stl.cpython-311-x86_64-linux-gnu.so
      building 'statsmodels.tsa.holtwinters._exponential_smoothers' extension
      INFO: C compiler: gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
      
      creating build/temp.linux-x86_64-cpython-311/statsmodels/tsa/holtwinters
      INFO: compile options: '-DCYTHON_TRACE_NOGIL=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11 -c'
      INFO: gcc: statsmodels/tsa/holtwinters/_exponential_smoothers.c
      INFO: gcc -pthread -shared -Wl,--rpath=/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib -Wl,--rpath=/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib build/temp.linux-x86_64-cpython-311/statsmodels/tsa/holtwinters/_exponential_smoothers.o -L/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/lib -L/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib -lnpymath -lm -o build/lib.linux-x86_64-cpython-311/statsmodels/tsa/holtwinters/_exponential_smoothers.cpython-311-x86_64-linux-gnu.so
      building 'statsmodels.tsa.exponential_smoothing._ets_smooth' extension
      INFO: C compiler: gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
      
      creating build/temp.linux-x86_64-cpython-311/statsmodels/tsa/exponential_smoothing
      INFO: compile options: '-DCYTHON_TRACE_NOGIL=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11 -c'
      INFO: gcc: statsmodels/tsa/exponential_smoothing/_ets_smooth.c
      INFO: gcc -pthread -shared -Wl,--rpath=/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib -Wl,--rpath=/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib build/temp.linux-x86_64-cpython-311/statsmodels/tsa/exponential_smoothing/_ets_smooth.o -L/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/lib -L/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/lib -lnpymath -lm -o build/lib.linux-x86_64-cpython-311/statsmodels/tsa/exponential_smoothing/_ets_smooth.cpython-311-x86_64-linux-gnu.so
      building 'statsmodels.tsa._innovations' extension
      INFO: C compiler: gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
      
      INFO: compile options: '-DCYTHON_TRACE_NOGIL=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11 -c'
      INFO: gcc: statsmodels/tsa/_innovations.c
      statsmodels/tsa/_innovations.c:16924:3: warning: excess elements in struct initializer
      16924 |   0, /*tp_inline_values_offset*/
            |   ^
      statsmodels/tsa/_innovations.c:16924:3: note: (near initialization for ‘__pyx_type___pyx_array’)
      statsmodels/tsa/_innovations.c:17046:3: warning: excess elements in struct initializer
      17046 |   0, /*tp_inline_values_offset*/
            |   ^
      statsmodels/tsa/_innovations.c:17046:3: note: (near initialization for ‘__pyx_type___pyx_MemviewEnum’)
      statsmodels/tsa/_innovations.c:17310:3: warning: excess elements in struct initializer
      17310 |   0, /*tp_inline_values_offset*/
            |   ^
      statsmodels/tsa/_innovations.c:17310:3: note: (near initialization for ‘__pyx_type___pyx_memoryview’)
      statsmodels/tsa/_innovations.c:17459:3: warning: excess elements in struct initializer
      17459 |   0, /*tp_inline_values_offset*/
            |   ^
      statsmodels/tsa/_innovations.c:17459:3: note: (near initialization for ‘__pyx_type___pyx_memoryviewslice’)
      statsmodels/tsa/_innovations.c: In function ‘__Pyx_PyBytes_Equals’:
      statsmodels/tsa/_innovations.c:19791:13: warning: ‘ob_shash’ is deprecated [-Wdeprecated-declarations]
      19791 |             hash1 = ((PyBytesObject*)s1)->ob_shash;
            |             ^~~~~
      In file included from /opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11/bytesobject.h:62,
                       from /opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11/Python.h:50,
                       from statsmodels/tsa/_innovations.c:39:
      /opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
          7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
            |                                   ^~~~~~~~
      statsmodels/tsa/_innovations.c:19792:13: warning: ‘ob_shash’ is deprecated [-Wdeprecated-declarations]
      19792 |             hash2 = ((PyBytesObject*)s2)->ob_shash;
            |             ^~~~~
      In file included from /opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11/bytesobject.h:62,
                       from /opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11/Python.h:50,
                       from statsmodels/tsa/_innovations.c:39:
      /opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
          7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
            |                                   ^~~~~~~~
      statsmodels/tsa/_innovations.c: In function ‘__Pyx_PyErr_GetTopmostException’:
      statsmodels/tsa/_innovations.c:20057:21: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20057 |     while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
            |                     ^~
      statsmodels/tsa/_innovations.c:20057:51: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20057 |     while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
            |                                                   ^~
      statsmodels/tsa/_innovations.c: In function ‘__Pyx__ExceptionSave’:
      statsmodels/tsa/_innovations.c:20071:21: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20071 |     *type = exc_info->exc_type;
            |                     ^~
      statsmodels/tsa/_innovations.c:20073:19: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20073 |     *tb = exc_info->exc_traceback;
            |                   ^~
      statsmodels/tsa/_innovations.c: In function ‘__Pyx__ExceptionReset’:
      statsmodels/tsa/_innovations.c:20087:24: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20087 |     tmp_type = exc_info->exc_type;
            |                        ^~
      statsmodels/tsa/_innovations.c:20089:22: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20089 |     tmp_tb = exc_info->exc_traceback;
            |                      ^~
      statsmodels/tsa/_innovations.c:20090:13: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20090 |     exc_info->exc_type = type;
            |             ^~
      statsmodels/tsa/_innovations.c:20092:13: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20092 |     exc_info->exc_traceback = tb;
            |             ^~
      statsmodels/tsa/_innovations.c: In function ‘__Pyx__GetException’:
      statsmodels/tsa/_innovations.c:20149:28: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20149 |         tmp_type = exc_info->exc_type;
            |                            ^~
      statsmodels/tsa/_innovations.c:20151:26: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20151 |         tmp_tb = exc_info->exc_traceback;
            |                          ^~
      statsmodels/tsa/_innovations.c:20152:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20152 |         exc_info->exc_type = local_type;
            |                 ^~
      statsmodels/tsa/_innovations.c:20154:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20154 |         exc_info->exc_traceback = local_tb;
            |                 ^~
      statsmodels/tsa/_innovations.c: In function ‘__Pyx__ExceptionSwap’:
      statsmodels/tsa/_innovations.c:20187:24: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20187 |     tmp_type = exc_info->exc_type;
            |                        ^~
      statsmodels/tsa/_innovations.c:20189:22: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20189 |     tmp_tb = exc_info->exc_traceback;
            |                      ^~
      statsmodels/tsa/_innovations.c:20190:13: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
      20190 |     exc_info->exc_type = *type;
            |             ^~
      statsmodels/tsa/_innovations.c:20192:13: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
      20192 |     exc_info->exc_traceback = *tb;
            |             ^~
      statsmodels/tsa/_innovations.c: In function ‘__Pyx_AddTraceback’:
      statsmodels/tsa/_innovations.c:465:62: error: dereferencing pointer to incomplete type ‘PyFrameObject’ {aka ‘struct _frame’}
        465 |   #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
            |                                                              ^~
      statsmodels/tsa/_innovations.c:20798:5: note: in expansion of macro ‘__Pyx_PyFrame_SetLineNumber’
      20798 |     __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      error: Command "gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DCYTHON_TRACE_NOGIL=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-a7od52yy/overlay/lib/python3.11/site-packages/numpy/core/include -I/opt/hostedtoolcache/Python/3.11.0-rc.2/x64/include/python3.11 -c statsmodels/tsa/_innovations.c -o build/temp.linux-x86_64-cpython-311/statsmodels/tsa/_innovations.o" failed with exit status 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for statsmodels

@da-woods
Copy link
Contributor

da-woods commented Oct 9, 2022

There looks to be a change in __Pyx_PyErr_GetTopmostException that we haven't got in 0.29.x and have got in master that I think we need.

What's slightly puzzling is that our CI seems to pass all the tests for 3.11. So that suggests this bit of code is pretty much untested.

I'll have an investigate

@da-woods
Copy link
Contributor

da-woods commented Oct 9, 2022

I've replied on the other issue, but the fix for 0.29.x was to disable the code via

#if PY_VERSION_HEX >= 0x030B00A4
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
#elif !defined(CYTHON_USE_EXC_INFO_STACK)

As far as I can see all of it is guarded so really should be being compiled

@da-woods
Copy link
Contributor

da-woods commented Oct 9, 2022

@EwoutH See statsmodels/statsmodels#8287 (comment) - I think this is outdated c files rather than a current Cython bug

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants