Skip to content

Removal of private C-API breaks uwsgi compilation #121758

Description

@xrmx

Bug report

Bug description:

Hello,

while trying to port uwsgi to 3.13 got this:

plugins/python/python_plugin.c: In function ‘uwsgi_python_pre_uwsgi_fork’:
plugins/python/python_plugin.c:1376:17: error: implicit declaration of function ‘_PyImport_AcquireLock’ [-Werror=implicit-function-declaration]
 1376 |                 _PyImport_AcquireLock(interp);
      |                 ^~~~~~~~~~~~~~~~~~~~~
plugins/python/python_plugin.c: In function ‘uwsgi_python_post_uwsgi_fork’:
plugins/python/python_plugin.c:1393:25: error: implicit declaration of function ‘_PyImport_ReleaseLock’ [-Werror=implicit-function-declaration]
 1393 |                         _PyImport_ReleaseLock(interp);
      |                         ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

Is there any other available API we can use?

I can make it compile by importing the internal header but does not look like a proper solution:

#if (PY_VERSION_HEX >= 0x030d0000)
#include "internal/pycore_import.h"
#endif

WIP branch is here https://github.com/unbit/uwsgi/tree/wip-py-313

cc @vstinner

CPython versions tested on:

3.13

Operating systems tested on:

Linux

Activity

  1. added
    type-bugAn unexpected behavior, bug, or error
    on Jul 14, 2024
  2. changed the title [-]Removal of private API breaks uwsgi compilation[/-] [+]Removal of private C-API breaks uwsgi compilation[/+] on Jul 14, 2024
  3. vstinner commented on Jul 14, 2024

    @vstinner
    Member

    Why calling _PyImport_AcquireLock() in uwsgi_python_pre_uwsgi_fork(), instead of PyOS_BeforeFork()?

    By the way, I'm not sure that it's safe to call PyOS_AfterFork_Child() in uwsgi_python_post_uwsgi_fork() without calling PyOS_BeforeFork().

  4. xrmx commented on Jul 16, 2024

    @xrmx
    ContributorAuthor

    Why calling _PyImport_AcquireLock() in uwsgi_python_pre_uwsgi_fork(), instead of PyOS_BeforeFork()?

    I think the code predates PyOS_BeforeFork by years 😅 and we didn't give it enough attention until it broke.

    By the way, I'm not sure that it's safe to call PyOS_AfterFork_Child() in uwsgi_python_post_uwsgi_fork() without calling PyOS_BeforeFork().

    Thanks

  5. vstinner commented on Jul 16, 2024

    @vstinner
    Member

    Can you try PyOS_BeforeFork() and tell me how it goes?

  6. xrmx commented on Jul 21, 2024

    @xrmx
    ContributorAuthor

    Opened a PR here, CI passes but haven't tested it unbit/uwsgi#2655

  7. vstinner commented on Aug 27, 2024

    @vstinner
    Member

    @xrmx: Since there is now a pending uwsgi PR, is it still useful to have a Python issue? Or can we close this issue?

  8. xrmx commented on Aug 27, 2024

    @xrmx
    ContributorAuthor

    Closing, thanks @vstinner !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.13only security fixes3.14bugs and security fixestopic-C-APItype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions