Xpra-org / xpra

Persistent remote applications for X11; screen sharing for X11, MacOS and MSWindows.
https://xpra.org/
GNU General Public License v2.0
1.92k stars 165 forks source link

system tray forwarding causes crash #4335

Closed totaam closed 1 month ago

totaam commented 1 month ago

Reproducible semi-reliably by creating new system trays and destroying them, repeatedly. I used tests/xpra/test_apps/test_system_tray.py. With -d tray the last messages shown are:

2024-08-19 14:12:23,738 tray docking request from 0xc00003
2024-08-19 14:12:23,738 tray docking window <GdkX11.X11Window object at 0x7fff992c23c0 (GdkX11Window at 0x55555661eb00)>
2024-08-19 14:12:23,739 dock_tray(c00003)
2024-08-19 14:12:23,739 tray geometry=1x1
2024-08-19 14:12:23,739 adjusted geometry=(x=0, y=0, width=1, height=1), title='test'
2024-08-19 14:12:23,739 tray: recording corral window 2000aa, setting tray properties
2024-08-19 14:12:23,739 showing tray window, resizing and reparenting
2024-08-19 14:12:23,740 redrawing new tray container window 2000aa
2024-08-19 14:12:23,740 dock_tray(c00003) done, sending xembed notification
2024-08-19 14:12:23,745 compress:   0.1ms for    1x1    pixels at    0,0    for wid=10    using     rgb32 with ratio 100.0%  (    1KB to     1KB), sequence     1, client_options={'rgb_format': 'RGBA', 'encoder': 'argb', 'flush': 0}, options=typedict({'quality': 100, 'speed': 80, 'rgb_formats': ('RGB', 'RGBX', 'RGBA'), 'lz4': True, 'damage-time': 105062.782284665, 'process-damage-time': 105062.783586738})
2024-08-19 14:12:23,746 client   1 @17.313 tray 10 metadata=typedict({'xid': 12582915, 'has-alpha': True, 'parent-xid': 2097322, 'client-machine': 'fedora', 'pid': 191343, 'title': 'test', 'command': 'python3 ./tests/xpra/test_apps/test_system_tray.py', 'class-instance': ('test', 'Test_system_tray.py'), 'tray': True})
2024-08-19 14:12:23,747 client   1 @17.313 make_system_tray(10, None, 'test', '', <function WindowClient.setup_system_tray.<locals>.tray_geometry at 0x00000251a4b963e0>, <function WindowClient.setup_system_tray.<locals>.tray_click at 0x00000251a4b96340>, <function WindowClient.setup_system_tray.<locals>.tray_mouseover at 0x00000251a4b959e0>, <function WindowClient.setup_system_tray.<locals>.tray_exit at 0x00000251a4b962a0>) system tray classes=[<class 'xpra.platform.win32.tray.Win32Tray'>, <class 'xpra.client.gtk3.statusicon_tray.GTKStatusIconTray'>]
2024-08-19 14:12:23,748 client   1 @17.313 calculate_offset() x=0, y=0
2024-08-19 14:12:23,748 client   1 @17.313 win32NotifyIcon: app_id=10, title='test'
2024-08-19 14:12:23,748 client   1 @17.313 create_tray_window()
2024-08-19 14:12:23,748 client   1 @17.313 CreateWindowExA(0, 49650, 'test StatusIcon Window', 524288, -2147483648, -2147483648, 0, 0, 0, 0, 140698812874752, 0)
2024-08-19 14:12:23,749 client   1 @17.313 NotifyIconWndProc(1246574, 36, 0, 991898358560) instance=None, message(36)=None
2024-08-19 14:12:23,749 client   1 @17.313 NotifyIconWndProc(1246574, 129, 0, 991898358512) instance=None, message(129)=None
2024-08-19 14:12:23,750 client   1 @17.313 NotifyIconWndProc(1246574, 131, 0, 991898358592) instance=None, message(131)=None
2024-08-19 14:12:23,751 client   1 @17.328 NotifyIconWndProc(1246574, 1, 0, 991898358496) instance=None, message(1)=None
2024-08-19 14:12:23,751 client   1 @17.328 create_window() hwnd=0x13056e
2024-08-19 14:12:23,752 client   1 @17.328 TASKBAR_CREATED=49239
2024-08-19 14:12:23,758 client   1 @17.328 make_nid(..)=<xpra.platform.win32.NotifyIcon.getNOTIFYICONDATAClass.<locals>._NOTIFYICONDATA object at 0x00000251a37739b0> tooltip='test', app_id=10, actual flags=MESSAGE, ICON, TIP, GUID
2024-08-19 14:12:23,758 client   1 @17.328 Shell_NotifyIcon ADD=1
2024-08-19 14:12:23,758 client   1 @17.328 setup_system_tray(gtk3.client, 10, 10, 1, 1, 'test') tray_widget=Tray(10:test)
2024-08-19 14:12:23,759 client   1 @17.328 ClientTray(gtk3.client, 10, 1, 1, Tray(10:test), False, <mmap.mmap closed=False, access=ACCESS_DEFAULT, length=536875008, pos=0, offset=0>)
2024-08-19 14:12:23,759 client   1 @17.328 process_new_tray(('new-tray', 10, 1, 1, {'xid': 12582915, 'has-alpha': True, 'parent-xid': 2097322, 'client-machine': 'fedora', 'pid': 191343, 'title': 'test', 'command': 'python3 ./tests/xpra/test_apps/test_system_tray.py', 'class-instance': ('test', 'Test_system_tray.py'), 'tray': True})) tray=ClientTray(10:test)
2024-08-19 14:12:23,759 client   1 @17.328 NotifyIconWndProc(1246574, 799, 1, 0) instance=win32NotifyIcon(0xa), message(799)=None
2024-08-19 14:12:23,760 client   1 @17.328 ClientTray(10:test).draw_region(0, 0, 1, 1, 'rgb32', '4 bytes', 4, typedict({'rgb_format': 'RGBA', 'encoder': 'argb', 'flush': 0}), [<function WindowClient._do_draw.<locals>.record_decode_time at 0x00000251a3611b20>])
2024-08-19 14:12:23,761 client   1 @17.328 ClientTray(10:test).reconfigure(False) geometry=None
2024-08-19 14:12:23,762 client   1 @17.328 ClientTray(10:test).reconfigure() guessing location using size=(20, 20)
2024-08-19 14:12:23,762 client   1 @17.328 ClientTray(10:test).reconfigure(False) sending configure for geometry=[0, 0, 20, 20] : (0, 0, 20, 20, {'encoding.transparency': True, 'encodings.rgb_formats': ['RGBA', 'RGB', 'RGBX']})
2024-08-19 14:12:23,764 client   1 @17.328 ClientTray(10:test).after_draw_update_tray(True, )
2024-08-19 14:12:23,764 client   1 @17.328 tray backing=<xpra.client.gui.client_tray.TrayBacking object at 0x00000251a365a4d0>, data: True
2024-08-19 14:12:23,764 client   1 @17.328 ClientTray(10:test).set_tray_icon(RGBA, 1, 1, 4, 4 bytes)
2024-08-19 14:12:23,764 SystemTray.do_x11_unmap_event(<X11:UnmapNotify {'serial': '0x1805', 'delivered_to': '0xc00003', 'window': '0xc00003', 'from_configure': 'False'}>) gdk window=<GdkX11.X11Window object at 0x7fff93fea700 (GdkX11Window at 0x55555661eb00)>, container window=<GdkX11.X11Window object at 0x7fff992c23c0 (GdkX11Window at 0x5555568ceb40)>
2024-08-19 14:12:23,764 client   1 @17.328 set_icon_from_data('4 pixels', True, 1, 1, 4, typedict({'rgb_format': 'RGBA', 'encoder': 'argb', 'flush': 0, 'encoding': 'rgb32'}))
2024-08-19 14:12:23,765 client   1 @17.328 resizing tray icon to 20x20
2024-08-19 14:12:23,765 compress:   2.1ms for  499x316  pixels at    0,0    for wid=1     using      webp with ratio   0.9%  (  616KB to     6KB), sequence    59, client_options={'rgb_format': 'BGRX', 'quality': 100, 'encoder': 'webp', 'flush': 0}, options=typedict({'quality': 100, 'speed': 82, 'rgb_formats': ('BGRX', 'RGBX', 'BGR', 'RGB', 'r210', 'BGR565'), 'lz4': True, 'alpha': False, 'content-type': 'text', 'window-size': (499, 316), 'damage-time': 105062.798579165, 'process-damage-time': 105062.801340958})
2024-08-19 14:12:23,767 client   1 @17.344 do_set_icon(0x19200501)
2024-08-19 14:12:23,767 tray docking request from 0xc00007
2024-08-19 14:12:23,767 client   1 @17.344 make_nid(..)=<xpra.platform.win32.NotifyIcon.getNOTIFYICONDATAClass.<locals>._NOTIFYICONDATA object at 0x00000251a3773890> tooltip='test', app_id=10, actual flags=ICON, GUID
2024-08-19 14:12:23,767 tray docking window <GdkX11.X11Window object at 0x7fff992c2f40 (GdkX11Window at 0x55555661eb00)>
2024-08-19 14:12:23,769 client   1 @17.344 ClientTray(10:test).reconfigure(False) geometry=None

gdb:

Thread 1 "python3.12" received signal SIGSEGV, Segmentation fault.
0x00007fffe8dac9d2 in g_type_check_instance_is_fundamentally_a () from /lib64/libgobject-2.0.so.0
(gdb) bt
#0  0x00007fffe8dac9d2 in g_type_check_instance_is_fundamentally_a () at /lib64/libgobject-2.0.so.0
#1  0x00007fffe8d910cb in g_object_get_qdata () at /lib64/libgobject-2.0.so.0
#2  0x00007fffe8f7bbe6 in pygobject_dealloc.lto_priv () at /usr/lib64/python3.12/site-packages/gi/_gi.cpython-312-x86_64-linux-gnu.so
#3  0x00007ffff79b42f5 in subtype_dealloc () at /lib64/libpython3.12.so.1.0
#4  0x00007ffff7968797 in free_keys_object () at /lib64/libpython3.12.so.1.0
#5  0x00007ffff7968531 in dict_dealloc () at /lib64/libpython3.12.so.1.0
#6  0x00007ffff7968797 in free_keys_object () at /lib64/libpython3.12.so.1.0
#7  0x00007ffff7968531 in dict_dealloc () at /lib64/libpython3.12.so.1.0
#8  0x00007fffe8f7bc85 in pygobject_dealloc.lto_priv () at /usr/lib64/python3.12/site-packages/gi/_gi.cpython-312-x86_64-linux-gnu.so
#9  0x00007ffff79b42f5 in subtype_dealloc () at /lib64/libpython3.12.so.1.0
#10 0x00007ffff79771b0 in _PyEval_EvalFrameDefault () at /lib64/libpython3.12.so.1.0
#11 0x00007ffff79b07b2 in method_vectorcall () at /lib64/libpython3.12.so.1.0
#12 0x00007fffe8f932e2 in _pygi_closure_handle () at /usr/lib64/python3.12/site-packages/gi/_gi.cpython-312-x86_64-linux-gnu.so
#13 0x00007fffe8d6bb71 in ffi_closure_unix64_inner () at /lib64/libffi.so.8
#14 0x00007fffe8d6c278 in ffi_closure_unix64 () at /lib64/libffi.so.8
#15 0x00007fffe8e5a69d in g_idle_dispatch () at /lib64/libglib-2.0.so.0
#16 0x00007fffe8e53e8c in g_main_context_dispatch_unlocked.lto_priv () at /lib64/libglib-2.0.so.0
#17 0x00007fffe8eb5c98 in g_main_context_iterate_unlocked.isra () at /lib64/libglib-2.0.so.0
#18 0x00007fffe8e59f37 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#19 0x00007fffe6fefb35 in gtk_main () at /lib64/libgtk-3.so.0
#20 0x00007fffe8d6c056 in ffi_call_unix64 () at /lib64/libffi.so.8
#21 0x00007fffe8d686a0 in ffi_call_int.lto_priv () at /lib64/libffi.so.8
#22 0x00007fffe8d6b4ee in ffi_call () at /lib64/libffi.so.8
#23 0x00007fffe8f94f5b in pygi_invoke_c_callable () at /usr/lib64/python3.12/site-packages/gi/_gi.cpython-312-x86_64-linux-gnu.so
#24 0x00007fffe8f94018 in _wrap_g_callable_info_invoke () at /usr/lib64/python3.12/site-packages/gi/_gi.cpython-312-x86_64-linux-gnu.so
#25 0x00007ffff799e049 in _PyObject_Call () at /lib64/libpython3.12.so.1.0
#26 0x00007ffff7976e45 in _PyEval_EvalFrameDefault () at /lib64/libpython3.12.so.1.0
#27 0x00007ffff79fdef4 in PyEval_EvalCode () at /lib64/libpython3.12.so.1.0
#28 0x00007ffff7a2215a in run_eval_code_obj () at /lib64/libpython3.12.so.1.0
#29 0x00007ffff7a1c8be in run_mod () at /lib64/libpython3.12.so.1.0
#30 0x00007ffff7a370f3 in pyrun_file () at /lib64/libpython3.12.so.1.0
#31 0x00007ffff7a363ec in _PyRun_SimpleFileObject () at /lib64/libpython3.12.so.1.0
#32 0x00007ffff7a3600f in _PyRun_AnyFileObject () at /lib64/libpython3.12.so.1.0
#33 0x00007ffff7a2e7c3 in Py_RunMain () at /lib64/libpython3.12.so.1.0
#34 0x00007ffff79e606c in Py_BytesMain () at /lib64/libpython3.12.so.1.0
#35 0x00007ffff7639088 in __libc_start_call_main () at /lib64/libc.so.6
#36 0x00007ffff763914b in __libc_start_main_impl () at /lib64/libc.so.6
#37 0x0000555555555095 in _start ()

This feels like #3822 all over again. And the tray window is still creating GdkX11.X11Window.

Unfortunately, changing tray_window.destroy() to tray_window.unrealize() does not help.

totaam commented 1 month ago
(gdb) bt
#0  0x00007fffe8dac9d2 in g_type_check_instance_is_fundamentally_a (type_instance=0x5555568fe6a0, fundamental_type=0x50) at ../gobject/gtype.c:4154
#1  0x00007fffe8d910cb in g_object_get_qdata (object=0x5555568fe6a0, quark=63) at ../gobject/gobject.c:4541
#2  0x00007fffe8f7bbe6 in pygobject_get_inst_data (self=0x7fff990c8600) at ../gi/pygobject-object.c:163
#3  pygobject_dealloc (self=0x7fff990c8600) at ../gi/pygobject-object.c:1128
#4  0x00007ffff79b42f5 in subtype_dealloc (self=0x7fff990c8600) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/typeobject.c:2054
#5  0x00007ffff7968797 in _Py_Dealloc (op=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/object.c:2625
#6  Py_DECREF (op=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Include/object.h:705
#7  Py_XDECREF (op=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Include/object.h:798
#8  free_keys_object (interp=0x7ffff7d70cb8 <_PyRuntime+76440>, keys=0x7fff99467d20) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/dictobject.c:673
#9  0x00007ffff7968531 in dictkeys_decref (interp=0x7ffff7d70cb8 <_PyRuntime+76440>, dk=0x7fff99467d20) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/dictobject.c:333
#10 dict_dealloc (mp=0x7fff9946d440) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/dictobject.c:2374
#11 0x00007ffff7968797 in _Py_Dealloc (op=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/object.c:2625
#12 Py_DECREF (op=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Include/object.h:705
#13 Py_XDECREF (op=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Include/object.h:798
#14 free_keys_object (interp=0x7ffff7d70cb8 <_PyRuntime+76440>, keys=0x7fff993724c0) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/dictobject.c:673
#15 0x00007ffff7968531 in dictkeys_decref (interp=0x7ffff7d70cb8 <_PyRuntime+76440>, dk=0x7fff993724c0) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/dictobject.c:333
#16 dict_dealloc (mp=0x7fff9908bd00) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/dictobject.c:2374
#17 0x00007fffe8f7bc85 in Py_DECREF (op=<optimized out>) at /usr/include/python3.12/object.h:706
#18 pygobject_clear (self=<optimized out>) at ../gi/pygobject-object.c:1243
#19 pygobject_dealloc (self=0x7fff99121000) at ../gi/pygobject-object.c:1129
#20 0x00007ffff79b42f5 in subtype_dealloc (self=0x7fff99121000) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/typeobject.c:2054
#21 0x00007ffff79771b0 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/bytecodes.c:2002
#22 0x00007ffff79b07b2 in _PyFunction_Vectorcall (func=0x7fff994f74c0, stack=0x7fffffffcf88, nargsf=1, kwnames=0x0) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/call.c:419
#23 _PyObject_VectorcallTstate (tstate=0x7ffff7dce5d8 <_PyRuntime+459704>, callable=0x7fff994f74c0, args=0x7fffffffcf88, nargsf=1, kwnames=0x0)
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Include/internal/pycore_call.h:92
#24 method_vectorcall (method=<optimized out>, args=0x7ffff7d70c50 <_PyRuntime+76336>, nargsf=0, kwnames=0x0) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/classobject.c:69
#25 0x00007fffe8f932e2 in _pygi_closure_handle (cif=<optimized out>, result=<optimized out>, args=<optimized out>, data=<optimized out>) at ../gi/pygi-closure.c:582
#26 0x00007fffe8d6bb71 in ffi_closure_unix64_inner
    (cif=<optimized out>, fun=<optimized out>, user_data=<optimized out>, rvalue=<optimized out>, reg_args=<optimized out>, argp=<optimized out>) at ../src/x86/ffi64.c:899
#27 0x00007fffe8d6c278 in ffi_closure_unix64 () at ../src/x86/unix64.S:303
#28 0x00007fffe8e5a69d in g_idle_dispatch (source=0x7fff64002100, callback=0x7ffff7dd09b0, user_data=0x7fff64002170) at ../glib/gmain.c:6150
#29 0x00007fffe8e53e8c in g_main_dispatch (context=0x55555589bd60) at ../glib/gmain.c:3344
#30 g_main_context_dispatch_unlocked (context=0x55555589bd60) at ../glib/gmain.c:4152
#31 0x00007fffe8eb5c98 in g_main_context_iterate_unlocked.isra.0 (context=0x55555589bd60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4217
#32 0x00007fffe8e59f37 in g_main_loop_run (loop=0x55555589a840) at ../glib/gmain.c:4419
#33 0x00007fffe6fefb35 in gtk_main () at ../gtk/gtkmain.c:1329
#34 0x00007fffe8d6c056 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#35 0x00007fffe8d686a0 in ffi_call_int (cif=cif@entry=0x55555589a5f8, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0)
    at ../src/x86/ffi64.c:673
#36 0x00007fffe8d6b4ee in ffi_call (cif=cif@entry=0x55555589a5f8, fn=<optimized out>, rvalue=rvalue@entry=0x7fffffffd668, avalue=<optimized out>) at ../src/x86/ffi64.c:710
#37 0x00007fffe8f94f5b in pygi_invoke_c_callable (function_cache=0x55555589a550, state=<optimized out>, py_args=<optimized out>, py_kwargs=<optimized out>) at ../gi/pygi-invoke.c:684
#38 0x00007fffe8f94018 in pygi_function_cache_invoke (function_cache=<optimized out>, py_args=0x7ffff7d70c38 <_PyRuntime+76312>, py_kwargs=0x7fffe9369300) at ../gi/pygi-cache.c:862
#39 pygi_callable_info_invoke (info=<optimized out>, py_args=0x7ffff7d70c38 <_PyRuntime+76312>, kwargs=0x7fffe9369300, cache=<optimized out>, user_data=0x0) at ../gi/pygi-invoke.c:727
#40 _wrap_g_callable_info_invoke (self=<optimized out>, py_args=0x7ffff7d70c38 <_PyRuntime+76312>, kwargs=0x7fffe9369300) at ../gi/pygi-invoke.c:764
#41 0x00007ffff799e049 in _PyObject_Call (tstate=0x7ffff7dce5d8 <_PyRuntime+459704>, callable=0x7fffe7932fb0, args=0x7ffff7d70c38 <_PyRuntime+76312>, kwargs=<optimized out>)
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/call.c:367
#42 0x00007ffff7976e45 in PyCFunction_Call (callable=0x7fffe7932fb0, args=0x7ffff7d70c38 <_PyRuntime+76312>, kwargs=0x7fffe9369300)
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Objects/call.c:387
#43 _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/bytecodes.c:3262
#44 0x00007ffff79fdef4 in PyEval_EvalCode (co=0x5555555f9b50, globals=<optimized out>, locals=0x7fffe99f9c40) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Python/ceval.c:578
#45 0x00007ffff7a2215a in run_eval_code_obj
    (tstate=tstate@entry=0x7ffff7dce5d8 <_PyRuntime+459704>, co=co@entry=0x5555555f9b50, globals=globals@entry=0x7fffe99f9c40, locals=locals@entry=0x7fffe99f9c40)
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Python/pythonrun.c:1722
#46 0x00007ffff7a1c8be in run_mod
    (mod=mod@entry=0x555555642ec0, filename=filename@entry=0x7fffe98a4e70, globals=globals@entry=0x7fffe99f9c40, locals=locals@entry=0x7fffe99f9c40, flags=flags@entry=0x7fffffffdc00, arena=arena@entry=0x7fffe991be30) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Python/pythonrun.c:1743
#47 0x00007ffff7a370f3 in pyrun_file
    (fp=fp@entry=0x555555592550, filename=filename@entry=0x7fffe98a4e70, start=start@entry=257, globals=globals@entry=0x7fffe99f9c40, locals=locals@entry=0x7fffe99f9c40, closeit=closeit@entry=1, flags=0x7fffffffdc00) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Python/pythonrun.c:1643
#48 0x00007ffff7a363ec in _PyRun_SimpleFileObject (fp=0x555555592550, filename=0x7fffe98a4e70, closeit=1, flags=0x7fffffffdc00)
--Type <RET> for more, q to quit, c to continue without paging--
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Python/pythonrun.c:433
#49 0x00007ffff7a3600f in _PyRun_AnyFileObject (fp=0x555555592550, filename=0x7fffe98a4e70, closeit=1, flags=0x7fffffffdc00)
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Python/pythonrun.c:78
#50 0x00007ffff7a2e7c3 in pymain_run_file_obj (program_name=0x7fffe98a5df0, filename=0x7fffe98a4e70, skip_source_first_line=0)
    at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Modules/main.c:360
#51 pymain_run_file (config=0x7ffff7d711b8 <_PyRuntime+77720>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Modules/main.c:379
#52 pymain_run_python (exitcode=0x7fffffffdbd4) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Modules/main.c:629
#53 Py_RunMain () at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Modules/main.c:709
#54 0x00007ffff79e606c in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.12-3.12.4-1.fc40.x86_64/Modules/main.c:763
#55 0x00007ffff7639088 in __libc_start_call_main (main=main@entry=0x555555555160 <main>, argc=argc@entry=8, argv=argv@entry=0x7fffffffde68) at ../sysdeps/nptl/libc_start_call_main.h:58
#56 0x00007ffff763914b in __libc_start_main_impl
    (main=0x555555555160 <main>, argc=8, argv=0x7fffffffde68, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffde58)
    at ../csu/libc-start.c:360
#57 0x0000555555555095 in _start ()
totaam commented 1 month ago

The fix above is a little bit too involved for my liking, I will try to find a smaller patch to backport.

totaam commented 1 month ago

Seeing how much smaller the v3.1.x backport is, perhaps the fix for the newer branches could have been made smaller too. But after extensive testing, including python2 builds of v3.1.x (which still runs in 2024!) - I think we're good in all branches.