# Python 3.14.0 is incompatible with stack-switching systems. What do we do?

**URL:** <https://discuss.python.org/t/python-3-14-0-is-incompatible-with-stack-switching-systems-what-do-we-do/104880>\
**Category:** Core Development\
**Created:** [November 14, 2025, 5:38pm UTC](https://discuss.python.org/t/python-3-14-0-is-incompatible-with-stack-switching-systems-what-do-we-do/104880 "2025-11-14T17:38:19Z")\
**Posts on this page:** 1\
**Showing post:** 24

<div class="post-metadata">

**Author:** ![markshannon](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/markshannon/32/72_2.png) [@markshannon](https://discuss.python.org/u/markshannon)\
**Post date:** [November 17, 2025, 3:14pm UTC](https://discuss.python.org/t/python-3-14-0-is-incompatible-with-stack-switching-systems-what-do-we-do/104880/24 "2025-11-17T15:14:50Z")

</div>

It turns out the fix is almost trivial.

We have the base of the stack (either known or estimated, it doesn’t matter) as well as a limit pointer `c_stack_soft_limit`. [cpython/InternalDocs/stack\_protection.md at main · python/cpython · GitHub](https://github.com/python/cpython/blob/main/InternalDocs/stack_protection.md)

Currently we raise if the stack pointer is less than the the limit pointer, even if we are way outside our stack bounds.

If we instead raise when the stack pointer is less than the the limit pointer **and** greater than the base pointer, then everything works.  
Stack protection works as designed for normal threads, but no exception is raised for user-space threads.  
It isn’t even any slower, as the additional comparison is on the slow path.

I’m working on a PR.

---

_[View the full topic](https://discuss.python.org/t/python-3-14-0-is-incompatible-with-stack-switching-systems-what-do-we-do/104880)._
