'src/greenlet/greenlet.h:42:5: error: unknown type name ‘CFrame’

What does this mean? How do I fix it?

            gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/jm/pycharm_projects/circus/venv_3_11_dev/include -I/home/jm/.pyenv/versions/3.11-dev/include/python3.11 -c src/greenlet/greenlet.c -o build/temp.linux-x86_64-3.11/src/greenlet/greenlet.o
            In file included from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.h:42:5: error: unknown type name ‘CFrame’
               42 |     CFrame* cframe;
                  |     ^~~~~~
            src/greenlet/greenlet.c: In function ‘green_clear_exc’:
            src/greenlet/greenlet.c:173:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
              173 |     g->exc_state.exc_type = NULL;
                  |                 ^
            src/greenlet/greenlet.c:175:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
              175 |     g->exc_state.exc_traceback = NULL;
                  |                 ^
            src/greenlet/greenlet.c: In function ‘g_switchstack’:
            src/greenlet/greenlet.c:528:44: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
              528 |         current->recursion_depth = tstate->recursion_depth;
                  |                                            ^~~~~~~~~~~~~~~
                  |                                            recursion_limit
            src/greenlet/greenlet.c:529:38: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
              529 |         current->top_frame = tstate->frame;
                  |                                      ^~~~~
                  |                                      cframe
            src/greenlet/greenlet.c:552:25: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} [-Wincompatible-pointer-types]
              552 |         current->cframe = tstate->cframe;
                  |                         ^
            src/greenlet/greenlet.c:577:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
              577 |         tstate->recursion_depth = target->recursion_depth;
                  |                 ^~~~~~~~~~~~~~~
                  |                 recursion_limit
            src/greenlet/greenlet.c:578:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
              578 |         tstate->frame = target->top_frame;
                  |                 ^~~~~
                  |                 cframe
            src/greenlet/greenlet.c:601:24: warning: assignment to ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} from incompatible pointer type ‘int *’ [-Wincompatible-pointer-types]
              601 |         tstate->cframe = target->cframe;
                  |                        ^
            src/greenlet/greenlet.c: In function ‘g_initialstub’:
            src/greenlet/greenlet.c:813:5: error: unknown type name ‘CFrame’
              813 |     CFrame trace_info;
                  |     ^~~~~~
            src/greenlet/greenlet.c:857:18: error: incompatible types when assigning to type ‘int’ from type ‘_PyCFrame’ {aka ‘struct _PyCFrame’}
              857 |     trace_info = *PyThreadState_GET()->cframe;
                  |                  ^
            src/greenlet/greenlet.c:864:17: error: request for member ‘previous’ in something not a structure or union
              864 |     self->cframe->previous = &PyThreadState_GET()->root_cframe;
                  |                 ^~
            src/greenlet/greenlet.c:878:50: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
              878 |     self->recursion_depth = PyThreadState_GET()->recursion_depth;
                  |                                                  ^~~~~~~~~~~~~~~
                  |                                                  recursion_limit
            src/greenlet/greenlet.c: In function ‘green_new’:
            src/greenlet/greenlet.c:1018:34: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} [-Wincompatible-pointer-types]
             1018 |         ((PyGreenlet*)o)->cframe = &PyThreadState_GET()->root_cframe;
                  |                                  ^
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:45,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c: In function ‘green_traverse’:
            src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1124 |     Py_VISIT(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
              199 |         if (op) {                                                       \
                  |             ^~
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:44,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1124 |     Py_VISIT(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1124:5: note: in expansion of macro ‘Py_VISIT’
             1124 |     Py_VISIT(self->exc_state.exc_type);
                  |     ^~~~~~~~
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:45,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1126 |     Py_VISIT(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
              199 |         if (op) {                                                       \
                  |             ^~
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:44,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1126 |     Py_VISIT(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1126:5: note: in expansion of macro ‘Py_VISIT’
             1126 |     Py_VISIT(self->exc_state.exc_traceback);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c: In function ‘green_clear’:
            src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1162 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1162:5: note: in expansion of macro ‘Py_CLEAR’
             1162 |     Py_CLEAR(self->exc_state.exc_type);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1162 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1164 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1164:5: note: in expansion of macro ‘Py_CLEAR’
             1164 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1164 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c: In function ‘green_dealloc’:
            src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1256 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1256:5: note: in expansion of macro ‘Py_CLEAR’
             1256 |     Py_CLEAR(self->exc_state.exc_type);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1256 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1258 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1258:5: note: in expansion of macro ‘Py_CLEAR’
             1258 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1258 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c: In function ‘PyGreenlet_New’:
            src/greenlet/greenlet.c:1777:15: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} [-Wincompatible-pointer-types]
             1777 |     g->cframe = &PyThreadState_GET()->root_cframe;
                  |               ^
            error: command '/usr/bin/gcc' failed with exit code 1
            [end of output]

Version info:

  • ubuntu 20.04
  • python 3.11-dev

Looks related:



Solution 1:[1]

Looks like there was an issue between versions:

Versions of greenlet prior to 2.0a2 (released yesterday) do not work with Python 3.11a6.

However it also appears that 2.0.a2 of greenlet was released the day after surfacing the issue.

Thanks @jamadden

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jmunsch