GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Use the API C of 'Py-NewInterpreterFromConfig' to exit unexpectedly in multiple threads. · Issue #111751 · python/cpython

Use the API C of 'Py-NewInterpreterFromConfig' to exit unexpectedly in multiple threads. #111751

New issue
Copy link
New issue
Copy link
Closed
Closed
Use the API C of 'Py-NewInterpreterFromConfig' to exit unexpectedly in multiple threads.#111751
Copy link
Labels
type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error

Description

@williamhu020
williamhu020
opened on Nov 5, 2023
Issue body actions

Bug report

Bug description:

Use the API C of 'Py-NewInterpreterFromConfig' to exit unexpectedly in multiple threads.

PyInterpreterConfig config = {
			    .use_main_obmalloc = 0,
			    .allow_fork = 0,
			    .allow_exec = 0,
			    .allow_threads = 1,
			    .allow_daemon_threads = 0,
			    .check_multi_interp_extensions = 1,
			    .gil = PyInterpreterConfig_OWN_GIL,
			};
			
PyStatus pstatus = Py_NewInterpreterFromConfig(&Sub_GIL_ThreadState, &config);
if (PyStatus_Exception(pstatus)) {
			return FALSE;
}

CPython versions tested on:

3.13, CPython main branch

Operating systems tested on:

Linux

Activity

  1. williamhu020
    added
    type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
    on Nov 5, 2023
  2. williamhu020 commented on Nov 5, 2023

    @williamhu020
    williamhu020
    on Nov 5, 2023
    Author
    More actions

    GDB Debug logs

    Case1
    Ensure on sub interpreter: 0x7fff60000cf0
    *[13:54:37:138]PyThreadState:0x7fff60066760
    Ensure on sub interpreter: 0x7fff9424a060
    *[13:54:37:138]PyThreadState:0x7fff942afad0
    ======= Backtrace: =========
    /lib64/libc.so.6(+0x81329)[0x7ffff1946329]
    /lib/libpython3.13.so.1.0(+0x16e471)[0x7ffff250f471]
    /lib/libpython3.13.so.1.0(PyMem_RawFree+0x46)[0x7ffff2510557]
    /lib/libpython3.13.so.1.0(+0x170b93)[0x7ffff2511b93]
    /lib/libpython3.13.so.1.0(PyObject_Free+0x46)[0x7ffff25109ed]
    /lib/libpython3.13.so.1.0(+0x18bd7f)[0x7ffff252cd7f]
    /lib/libpython3.13.so.1.0(_Py_Dealloc+0x29)[0x7ffff250f265]
    /lib/libpython3.13.so.1.0(+0x10d08f)[0x7ffff24ae08f]
    /lib/libpython3.13.so.1.0(+0x1116af)[0x7ffff24b26af]
    /lib/libpython3.13.so.1.0(+0x25402d)[0x7ffff25f502d]
    /lib/libpython3.13.so.1.0(+0x254082)[0x7ffff25f5082]
    /lib/libpython3.13.so.1.0(_PyEval_EvalFrameDefault+0x4d71)[0x7ffff25e101f]
    /lib/libpython3.13.so.1.0(+0x23a080)[0x7ffff25db080]
    /lib/libpython3.13.so.1.0(+0x254794)[0x7ffff25f5794]
    /lib/libpython3.13.so.1.0(+0x109899)[0x7ffff24aa899]
    /lib/libpython3.13.so.1.0(+0x109484)[0x7ffff24aa484]
    /lib/libpython3.13.so.1.0(+0x1096cb)[0x7ffff24aa6cb]
    /lib/libpython3.13.so.1.0(PyObject_CallObject+0xa2)[0x7ffff24aaa67]
    
    (gdb) bt
    #0  0x00007ffff18fb387 in raise () from /lib64/libc.so.6
    #1  0x00007ffff18fca78 in abort () from /lib64/libc.so.6
    #2  0x00007ffff193df67 in __libc_message () from /lib64/libc.so.6
    #3  0x00007ffff1946329 in _int_free () from /lib64/libc.so.6
    #4  0x00007ffff250f471 in _PyMem_RawFree (_unused_ctx=0x0, ptr=0x7fff57bcf3c0) at Objects/obmalloc.c:79
    #5  0x00007ffff2510557 in PyMem_RawFree (ptr=0x7fff57bcf3c0) at Objects/obmalloc.c:818
    #6  0x00007ffff2511b93 in _PyObject_Free (ctx=0x0, p=0x7fff57bcf3c0) at Objects/obmalloc.c:2023
    #7  0x00007ffff25109ed in PyObject_Free (ptr=0x7fff57bcf3c0) at Objects/obmalloc.c:963
    #8  0x00007ffff252cd7f in object_dealloc (self=0x7fff57bcf3c0) at Objects/typeobject.c:5552
    #9  0x00007ffff250f265 in _Py_Dealloc (op=0x7fff57bcf3c0) at Objects/object.c:2858
    #10 0x00007ffff24ae08f in Py_DECREF (op=<optimized out>) at ./Include/object.h:870
    #11 Py_XDECREF (op=0x7fff57bcf3c0) at ./Include/object.h:963
    #12 0x00007ffff24b26af in code_dealloc (co=0x7fff57d12d30) at Objects/codeobject.c:1726
    #13 0x00007ffff25f502d in clear_thread_frame (tstate=0x7fff60066760, frame=0x7ffff7e1d3a8) at Python/ceval.c:1504
    #14 0x00007ffff25f5082 in _PyEval_FrameClearAndPop (tstate=0x7fff60066760, frame=0x7ffff7e1d3a8) at Python/ceval.c:1530
    #15 0x00007ffff25e101f in _PyEval_EvalFrameDefault (tstate=0x7fff60066760, frame=0x7ffff7e1d3a8, throwflag=0)
        at Python/generated_cases.c.h:1148
    #16 0x00007ffff25db080 in _PyEval_EvalFrame (tstate=0x7fff60066760, frame=0x7ffff7e1d020, throwflag=0)
        at ./Include/internal/pycore_ceval.h:113
    #17 0x00007ffff25f5794 in _PyEval_Vector (tstate=0x7fff60066760, func=0x7fff57be1440, locals=0x0, args=0x7fff4ffcd618, argcount=1, 
        kwnames=0x0) at Python/ceval.c:1639
    #18 0x00007ffff24aa899 in _PyFunction_Vectorcall (func=0x7fff57be1440, stack=0x7fff4ffcd618, nargsf=1, kwnames=0x0)
        at Objects/call.c:413
    #19 0x00007ffff24aa484 in _PyVectorcall_Call (tstate=0x7fff60066760, func=0x7ffff24aa822 <_PyFunction_Vectorcall>, 
        callable=0x7fff57be1440, tuple=0x7fff4ffcd600, kwargs=0x0) at Objects/call.c:273
    #20 0x00007ffff24aa6cb in _PyObject_Call (tstate=0x7fff60066760, callable=0x7fff57be1440, args=0x7fff4ffcd600, kwargs=0x0)
        at Objects/call.c:348
    #21 0x00007ffff24aaa67 in PyObject_CallObject (callable=0x7fff57be1440, args=0x7fff4ffcd600) at Objects/call.c:472
    Case2
    *Ensure on sub interpreter: 0x7fff80000cf0
    *[14:01:22:740]PyThreadState:0x7fff80066760
    *Ensure on sub interpreter: 0x7fff78000cf0
    *[14:01:22:741]PyThreadState:0x7fff78066760
    
    (gdb) bt
    #0  0x00007ffff24b77a1 in _PyGCHead_SET_NEXT (gc=<optimized out>, next=<optimized out>) at ./Include/internal/pycore_gc.h:74
    #1  _PyObject_GC_UNTRACK (op=<optimized out>) at ./Include/internal/pycore_object.h:358
    #2  descr_dealloc (descr=0x7fffa4e2c3b0) at Objects/descrobject.c:24
    #3  0x00007ffff25f04e9 in _PyEval_EvalFrameDefault (tstate=0x7fff78066760, frame=0x7ffff7e291f0, throwflag=0)
        at Python/generated_cases.c.h:5022
    #4  0x00007ffff25db080 in _PyEval_EvalFrame (tstate=0x7fff78066760, frame=0x7ffff7e29020, throwflag=0)
        at ./Include/internal/pycore_ceval.h:113
    #5  0x00007ffff25f5794 in _PyEval_Vector (tstate=0x7fff78066760, func=0x7fffa4c1d440, locals=0x0, args=0x7fffa4e89618, argcount=1, 
        kwnames=0x0) at Python/ceval.c:1639
    #6  0x00007ffff24aa899 in _PyFunction_Vectorcall (func=0x7fffa4c1d440, stack=0x7fffa4e89618, nargsf=1, kwnames=0x0)
        at Objects/call.c:413
    #7  0x00007ffff24aa484 in _PyVectorcall_Call (tstate=0x7fff78066760, func=0x7ffff24aa822 <_PyFunction_Vectorcall>, 
        callable=0x7fffa4c1d440, tuple=0x7fffa4e89600, kwargs=0x0) at Objects/call.c:273
    #8  0x00007ffff24aa6cb in _PyObject_Call (tstate=0x7fff78066760, callable=0x7fffa4c1d440, args=0x7fffa4e89600, kwargs=0x0)
        at Objects/call.c:348
    #9  0x00007ffff24aaa67 in PyObject_CallObject (callable=0x7fffa4c1d440, args=0x7fffa4e89600) at Objects/call.c:472
    
    
    *Ensure on sub interpreter: 0x7fffa0000cf0
    *[ 14:03:44:915]PyThreadState:0x7fffa0066760
    *Ensure on sub interpreter: 0x7fff6c000cf0
    *[ 14:03:44:915]PyThreadState:0x7fff6c066760
    (gdb) bt
    #0  0x0000000000000064 in ?? ()
    #1  0x00007ffff250ca97 in PyObject_GetAttr (v=0x7fffa4d43920, name=0x7ffff2b3fb10 <_PyRuntime+43920>) at Objects/object.c:1150
    #2  0x00007ffff250d387 in _PyObject_GetMethod (obj=0x7fffa4d43920, name=0x7ffff2b3fb10 <_PyRuntime+43920>, method=0x7fffef6c87a0)
        at Objects/object.c:1438
    #3  0x00007ffff25e70f3 in _PyEval_EvalFrameDefault (tstate=0x7fffa0066760, frame=0x7ffff7fe53a8, throwflag=0)
        at Python/generated_cases.c.h:2655
    #4  0x00007ffff25db080 in _PyEval_EvalFrame (tstate=0x7fffa0066760, frame=0x7ffff7fe5020, throwflag=0)
        at ./Include/internal/pycore_ceval.h:113
    #5  0x00007ffff25f5794 in _PyEval_Vector (tstate=0x7fffa0066760, func=0x7fffa4c1d440, locals=0x0, args=0x7fffb2b8d618, argcount=1, 
        kwnames=0x0) at Python/ceval.c:1639
    #6  0x00007ffff24aa899 in _PyFunction_Vectorcall (func=0x7fffa4c1d440, stack=0x7fffb2b8d618, nargsf=1, kwnames=0x0)
        at Objects/call.c:413
    #7  0x00007ffff24aa484 in _PyVectorcall_Call (tstate=0x7fffa0066760, func=0x7ffff24aa822 <_PyFunction_Vectorcall>, 
        callable=0x7fffa4c1d440, tuple=0x7fffb2b8d600, kwargs=0x0) at Objects/call.c:273
    #8  0x00007ffff24aa6cb in _PyObject_Call (tstate=0x7fffa0066760, callable=0x7fffa4c1d440, args=0x7fffb2b8d600, kwargs=0x0)
        at Objects/call.c:348
    #9  0x00007ffff24aaa67 in PyObject_CallObject (callable=0x7fffa4c1d440, args=0x7fffb2b8d600) at Objects/call.c:472
    Case3
    *Ensure on sub interpreter: 0x7fff68000cf0
    *[ 14:09:29:850]PyThreadState:0x7fff68066760
    *Ensure on sub interpreter: 0x7fff50000cf0
    *[ 14:09:29:851]PyThreadState:0x7fff50066760
    
    
    _PyObject_VectorcallTstate (tstate=0x7fff68066760, callable=0x7fffcb36c3b0, args=0x7ffff7e1d398, nargsf=9223372036854775810, 
        kwnames=0x0) at ./Include/internal/pycore_call.h:138
    138     PyTypeObject *tp = Py_TYPE(callable);
    (gdb) bt
    #0  _PyObject_VectorcallTstate (tstate=0x7fff68066760, callable=0x7fffcb36c3b0, args=0x7ffff7e1d398, nargsf=9223372036854775810, 
        kwnames=0x0) at ./Include/internal/pycore_call.h:138
    #1  0x00007ffff24aa67b in PyObject_Vectorcall (callable=0x7fffcb36c3b0, args=0x7ffff7e1d398, nargsf=9223372036854775810, kwnames=0x0)
        at Objects/call.c:327
    #2  0x00007ffff25ed14c in _PyEval_EvalFrameDefault (tstate=0x7fff68066760, frame=0x7ffff7e1d1f0, throwflag=0)
        at Python/generated_cases.c.h:4265
    #3  0x00007ffff25db080 in _PyEval_EvalFrame (tstate=0x7fff68066760, frame=0x7ffff7e1d020, throwflag=0)
        at ./Include/internal/pycore_ceval.h:113
    #4  0x00007ffff25f5794 in _PyEval_Vector (tstate=0x7fff68066760, func=0x7fffcb155440, locals=0x0, args=0x7fff4ffcd618, argcount=1, 
        kwnames=0x0) at Python/ceval.c:1639
    #5  0x00007ffff24aa899 in _PyFunction_Vectorcall (func=0x7fffcb155440, stack=0x7fff4ffcd618, nargsf=1, kwnames=0x0)
        at Objects/call.c:413
    #6  0x00007ffff24aa484 in _PyVectorcall_Call (tstate=0x7fff68066760, func=0x7ffff24aa822 <_PyFunction_Vectorcall>, 
        callable=0x7fffcb155440, tuple=0x7fff4ffcd600, kwargs=0x0) at Objects/call.c:273
    #7  0x00007ffff24aa6cb in _PyObject_Call (tstate=0x7fff68066760, callable=0x7fffcb155440, args=0x7fff4ffcd600, kwargs=0x0)
        at Objects/call.c:348
    #8  0x00007ffff24aaa67 in PyObject_CallObject (callable=0x7fffcb155440, args=0x7fff4ffcd600) at Objects/call.c:472
    Case4
    *Ensure on sub interpreter: 0x7fff94000cf0
    *[14:13:13:655]PyThreadState:0x7fff94066760
    *Ensure on sub interpreter: 0x7fff90000cf0
    *[14:13:13:655]PyThreadState:0x7fff90066760
    
    ======= Backtrace: =========
    /lib64/libc.so.6(+0x81329)[0x7ffff1946329]
    /lib/libpython3.13.so.1.0(+0x16e471)[0x7ffff250f471]
    /lib/libpython3.13.so.1.0(PyMem_RawFree+0x46)[0x7ffff2510557]
    /lib/libpython3.13.so.1.0(+0x170b93)[0x7ffff2511b93]
    /lib/libpython3.13.so.1.0(PyObject_Free+0x46)[0x7ffff25109ed]
    /lib/libpython3.13.so.1.0(+0x1b5009)[0x7ffff2556009]
    /lib/libpython3.13.so.1.0(_Py_Dealloc+0x29)[0x7ffff250f265]
    /lib/libpython3.13.so.1.0(+0x17e4b8)[0x7ffff251f4b8]
    /lib/libpython3.13.so.1.0(+0x17ee43)[0x7ffff251fe43]
    /lib/libpython3.13.so.1.0(_Py_Dealloc+0x29)[0x7ffff250f265]
    /lib/libpython3.13.so.1.0(+0x10d08f)[0x7ffff24ae08f]
    /lib/libpython3.13.so.1.0(+0x11167f)[0x7ffff24b267f]
    /lib/libpython3.13.so.1.0(_Py_Dealloc+0x29)[0x7ffff250f265]
    /lib/libpython3.13.so.1.0(+0x136208)[0x7ffff24d7208]
    /lib/libpython3.13.so.1.0(_Py_Dealloc+0x29)[0x7ffff250f265]
    /lib/libpython3.13.so.1.0(+0x29864d)[0x7ffff263964d]
    /lib/libpython3.13.so.1.0(+0x297f8a)[0x7ffff2638f8a]
    /lib/libpython3.13.so.1.0(+0x298514)[0x7ffff2639514]
    /lib/libpython3.13.so.1.0(+0x253fe8)[0x7ffff25f4fe8]
    /lib/libpython3.13.so.1.0(+0x254082)[0x7ffff25f5082]
    /lib/libpython3.13.so.1.0(_PyEval_EvalFrameDefault+0x4d71)[0x7ffff25e101f]
    /lib/libpython3.13.so.1.0(+0x23a080)[0x7ffff25db080]
    /lib/libpython3.13.so.1.0(+0x254794)[0x7ffff25f5794]
    /lib/libpython3.13.so.1.0(+0x109899)[0x7ffff24aa899]
    /lib/libpython3.13.so.1.0(+0x109484)[0x7ffff24aa484]
    /lib/libpython3.13.so.1.0(+0x1096cb)[0x7ffff24aa6cb]
    /lib/libpython3.13.so.1.0(PyObject_CallObject+0xa2)[0x7ffff24aaa67]
    
    (gdb) bt
    #0  0x00007ffff18fb387 in raise () from /lib64/libc.so.6
    #1  0x00007ffff18fca78 in abort () from /lib64/libc.so.6
    #2  0x00007ffff193df67 in __libc_message () from /lib64/libc.so.6
    #3  0x00007ffff1946329 in _int_free () from /lib64/libc.so.6
    #4  0x00007ffff250f471 in _PyMem_RawFree (_unused_ctx=0x0, ptr=0x7fffb1200870) at Objects/obmalloc.c:79
    #5  0x00007ffff2510557 in PyMem_RawFree (ptr=0x7fffb1200870) at Objects/obmalloc.c:818
    #6  0x00007ffff2511b93 in _PyObject_Free (ctx=0x0, p=0x7fffb1200870) at Objects/obmalloc.c:2023
    #7  0x00007ffff25109ed in PyObject_Free (ptr=0x7fffb1200870) at Objects/obmalloc.c:963
    #8  0x00007ffff2556009 in unicode_dealloc (unicode=0x7fffb1200870) at Objects/unicodeobject.c:1599
    #9  0x00007ffff250f265 in _Py_Dealloc (op=0x7fffb1200870) at Objects/object.c:2858
    #10 0x00007ffff251f4b8 in Py_DECREF (op=<optimized out>) at ./Include/object.h:870
    #11 Py_XDECREF (op=0x7fffb1200870) at ./Include/object.h:963
    #12 0x00007ffff251fe43 in tupledealloc (op=0x7fffb139f6a0) at Objects/tupleobject.c:208
    #13 0x00007ffff250f265 in _Py_Dealloc (op=0x7fffb139f6a0) at Objects/object.c:2858
    #14 0x00007ffff24ae08f in Py_DECREF (op=<optimized out>) at ./Include/object.h:870
    #15 Py_XDECREF (op=0x7fffb139f6a0) at ./Include/object.h:963
    #16 0x00007ffff24b267f in code_dealloc (co=0x7fffb1459fb0) at Objects/codeobject.c:1723
    #17 0x00007ffff250f265 in _Py_Dealloc (op=0x7fffb1459fb0) at Objects/object.c:2858
    #18 0x00007ffff24d7208 in Py_DECREF (op=<optimized out>) at ./Include/object.h:870
    #19 func_dealloc (op=0x7fffb04b9120) at Objects/funcobject.c:929
    #20 0x00007ffff250f265 in _Py_Dealloc (op=0x7fffb04b9120) at Objects/object.c:2858
    #21 0x00007ffff263964d in Py_DECREF (op=<optimized out>) at ./Include/object.h:870
    #22 Py_XDECREF.part.6 (op=0x7fffb04b9120) at ./Include/object.h:963
    #23 0x00007ffff2638f8a in Py_XDECREF (op=0x7fffb04b9120) at ./Include/object.h:962
    #24 0x00007ffff2639514 in _PyFrame_ClearExceptCode (frame=0x7ffff7e2d378) at Python/frame.c:140
    #25 0x00007ffff25f4fe8 in clear_thread_frame (tstate=0x7fff90066760, frame=0x7ffff7e2d378) at Python/ceval.c:1503
    #26 0x00007ffff25f5082 in _PyEval_FrameClearAndPop (tstate=0x7fff90066760, frame=0x7ffff7e2d378) at Python/ceval.c:1530
    #27 0x00007ffff25e101f in _PyEval_EvalFrameDefault (tstate=0x7fff90066760, frame=0x7ffff7e2d378, throwflag=0)
        at Python/generated_cases.c.h:1148
    #28 0x00007ffff25db080 in _PyEval_EvalFrame (tstate=0x7fff90066760, frame=0x7ffff7e2d020, throwflag=0)
        at ./Include/internal/pycore_ceval.h:113
    #29 0x00007ffff25f5794 in _PyEval_Vector (tstate=0x7fff90066760, func=0x7fffb1229440, locals=0x0, args=0x7fffb0491618, argcount=1, 
        kwnames=0x0) at Python/ceval.c:1639
    #30 0x00007ffff24aa899 in _PyFunction_Vectorcall (func=0x7fffb1229440, stack=0x7fffb0491618, nargsf=1, kwnames=0x0)
        at Objects/call.c:413
    #31 0x00007ffff24aa484 in _PyVectorcall_Call (tstate=0x7fff90066760, func=0x7ffff24aa822 <_PyFunction_Vectorcall>, 
        callable=0x7fffb1229440, tuple=0x7fffb0491600, kwargs=0x0) at Objects/call.c:273
    #32 0x00007ffff24aa6cb in _PyObject_Call (tstate=0x7fff90066760, callable=0x7fffb1229440, args=0x7fffb0491600, kwargs=0x0)
        at Objects/call.c:348
    #33 0x00007ffff24aaa67 in PyObject_CallObject (callable=0x7fffb1229440, args=0x7fffb0491600) at Objects/call.c:472
  3. williamhu020
    closed this as completedon Nov 7, 2023
  4. williamhu020 commented on Nov 7, 2023

    @williamhu020
    williamhu020
    on Nov 7, 2023
    Author
    More actions

    Compile with

    --disable-gil

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

    type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      You are visitor 01402503 — GeezerVison does not store the pages you look up.
      Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.