|
Bugzilla – Full Text Bug Listing |
| Summary: | Nextcloud nemo integration segfaults while importing gobject after python 3.11 upgrade | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE Tumbleweed | Reporter: | Hadrien Grasland <grasland> |
| Component: | X11 Applications | Assignee: | Dominique Leuenberger <dimstar> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Major | ||
| Priority: | P5 - None | CC: | daniel.garcia, dead_mozay, grasland, mcepl |
| Version: | Current | ||
| Target Milestone: | --- | ||
| Hardware: | x86-64 | ||
| OS: | openSUSE Tumbleweed | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
This causes critical errors in many places, not only this extension and not only nemo, other applications and extensions also began to crash after upgrading to python 3.11. removing libpython3_11-1_0-x86-64-v3 solves the problem This is just the same as bug 1212474. *** This bug has been marked as a duplicate of bug 1212474 *** (In reply to Matej Cepl from comment #3) > This is just the same as bug 1212474. > > *** This bug has been marked as a duplicate of bug 1212474 *** It has nothing to do with that bug at all. this happens not only with nautilus, other applications and libraries also crash due to libpython3_11-1_0-x86-64-v3 all file managers crash, I'm not sure about dolphin. https://bugzilla.suse.com/show_bug.cgi?id=1212474 the fix only affects nautilus You are right, that’s different thing and probably a bug in pygobject, not in Python itself. Let me take a look. It's exactly the same problem that we had with nautilus extensions, the code is very similar and does the same: https://github.com/linuxmint/nemo-extensions/blob/master/nemo-python/src/nemo-python.c#L178-L181 The PYTHON_LIBPATH is calculated at build time and at runtime it's different from the one used for the process. This Request should fix the problem: https://build.opensuse.org/request/show/1098061 (In reply to Daniel Garcia from comment #6) > This Request should fix the problem: > > https://build.opensuse.org/request/show/1098061 that has been merged and released a few months ago |
Since I installed the python 3.11 upgrade yesterday, nemo has been crashing every time I open it (and I also lost my cinnamon desktop icons, which are managed by nemo). A GDB backtrace of nemo shows that this happens while loading python extensions: --- (gdb) bt #0 0x0000000000000000 in () #1 0x00007fffee32613f in Py_XDECREF (op=0x7ffff427b060 <typingmodule>) at ./Include/object.h:602 #2 _PyImport_LoadDynamicModuleWithSpec (fp=<optimized out>, spec=0x7fffeda353d0) at ./Python/importdl.c:246 #3 _imp_create_dynamic_impl (module=<optimized out>, file=<optimized out>, spec=0x7fffeda353d0) at Python/import.c:2385 #4 _imp_create_dynamic (module=<optimized out>, args=<optimized out>, nargs=<optimized out>) at Python/clinic/import.c.h:446 #5 0x00007fffee3d290d in cfunction_vectorcall_FASTCALL (func=0x7ffff40c6840, args=0x7fffedbaa4e8, nargsf=<optimized out>, kwnames=<optimized out>) at ./Include/cpython/methodobject.h:52 #6 0x00007fffee3bd6da in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:5380 #7 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8df0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #8 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #9 0x00007fffee3cc2e6 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffb3d0, callable=0x7ffff408bce0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_call.h:92 #10 object_vacall (tstate=0x7fffee709c18 <_PyRuntime+166328>, base=<optimized out>, callable=0x7ffff408bce0, vargs=0x7fffffffb460) at Objects/call.c:819 #11 0x00007fffee3ee628 in PyObject_CallMethodObjArgs (obj=0x0, name=<optimized out>) at Objects/call.c:878 #12 0x00007fffee3ebd7d in import_find_and_load (abs_name=0x7fffedbe86b0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at Python/import.c:1736 #13 PyImport_ImportModuleLevelObject (name=0x7fffedbe86b0, globals=<optimized out>, locals=<optimized out>, fromlist=0x7fffedba9e40, level=0) at Python/import.c:1835 #14 0x00007fffee3bf424 in import_name (level=0x7fffee6e15a8 <_PyRuntime+840>, fromlist=0x7fffedba9e40, name=0x7fffedbe86b0, frame=<optimized out>, tstate=<optimized out>) at Python/ceval.c:7428 #15 _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3950 #16 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8d30, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #17 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #18 0x00007fffee4388df in PyEval_EvalCode (co=0x5555558d5180, globals=<optimized out>, locals=0x7fffedbb4180) at Python/ceval.c:1154 #19 0x00007fffee44f87e in builtin_exec_impl (module=<optimized out>, closure=<optimized out>, locals=0x7fffedbb4180, globals=0x7fffedbb4180, source=0x5555558d5180) at Python/bltinmodule.c:1077 #20 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:465 #21 0x00007fffee3c6446 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7ffff40c4f90, args=0x7fffedbb5c98, nargsf=<optimized out>, kwnames=0x0) at ./Include/cpython/methodobject.h:52 #22 0x00007fffee3bd6da in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:5380 #23 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8a38, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #24 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #25 0x00007fffee3cc2e6 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffba90, callable=0x7ffff408bce0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_call.h:92 #26 object_vacall (tstate=0x7fffee709c18 <_PyRuntime+166328>, base=<optimized out>, callable=0x7ffff408bce0, vargs=0x7fffffffbb20) at Objects/call.c:819 #27 0x00007fffee3ee628 in PyObject_CallMethodObjArgs (obj=0x0, name=<optimized out>) at Objects/call.c:878 #28 0x00007fffee3ebd7d in import_find_and_load (abs_name=0x7fffee681d60 <const_str_typing>, tstate=0x7fffee709c18 <_PyRuntime+166328>) at Python/import.c:1736 #29 PyImport_ImportModuleLevelObject (name=0x7fffee681d60 <const_str_typing>, globals=<optimized out>, locals=<optimized out>, fromlist=0x7fffedb64200, level=0) at Python/import.c:1835 #30 0x00007fffee3bf424 in import_name (level=0x7fffee6e15a8 <_PyRuntime+840>, fromlist=0x7fffedb64200, name=0x7fffee681d60 <const_str_typing>, frame=<optimized out>, tstate=<optimized out>) at Python/ceval.c:7428 #31 _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3950 #32 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8868, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #33 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #34 0x00007fffee4388df in PyEval_EvalCode (co=0x5555558ef460, globals=<optimized out>, locals=0x7fffedb94ec0) at Python/ceval.c:1154 #35 0x00007fffee44f87e in builtin_exec_impl (module=<optimized out>, closure=<optimized out>, locals=0x7fffedb94ec0, globals=0x7fffedb94ec0, source=0x5555558ef460) at Python/bltinmodule.c:1077 #36 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:465 #37 0x00007fffee3c6446 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7ffff40c4f90, args=0x7fffedb96318, nargsf=<optimized out>, kwnames=0x0) at ./Include/cpython/methodobject.h:52 #38 0x00007fffee3bd6da in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:5380 #39 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8570, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #40 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #41 0x00007fffee3cc2e6 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffc150, callable=0x7ffff408bce0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_call.h:92 #42 object_vacall (tstate=0x7fffee709c18 <_PyRuntime+166328>, base=<optimized out>, callable=0x7ffff408bce0, vargs=0x7fffffffc1e0) at Objects/call.c:819 #43 0x00007fffee3ee628 in PyObject_CallMethodObjArgs (obj=0x0, name=<optimized out>) at Objects/call.c:878 #44 0x00007fffee3ebd7d in import_find_and_load (abs_name=0x7fffee647dc0 <const_str_pkgutil>, tstate=0x7fffee709c18 <_PyRuntime+166328>) at Python/import.c:1736 #45 PyImport_ImportModuleLevelObject (name=0x7fffee647dc0 <const_str_pkgutil>, globals=<optimized out>, locals=<optimized out>, fromlist=0x7ffff40f7160, level=0) at Python/import.c:1835 #46 0x00007fffee3bf424 in import_name (level=0x7fffee6e15a8 <_PyRuntime+840>, fromlist=0x7ffff40f7160, name=0x7fffee647dc0 <const_str_pkgutil>, frame=<optimized out>, tstate=<optimized out>) at Python/ceval.c:7428 #47 _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3950 #48 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8500, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #49 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #50 0x00007fffee4388df in PyEval_EvalCode (co=0x555555900d40, globals=<optimized out>, locals=0x7fffedb94e40) at Python/ceval.c:1154 #51 0x00007fffee44f87e in builtin_exec_impl (module=<optimized out>, closure=<optimized out>, locals=0x7fffedb94e40, globals=0x7fffedb94e40, source=0x555555900d40) at Python/bltinmodule.c:1077 #52 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:465 #53 0x00007fffee3c6446 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7ffff40c4f90, args=0x7fffedb95498, nargsf=<optimized out>, kwnames=0x0) at ./Include/cpython/methodobject.h:52 #54 0x00007fffee3bd6da in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:5380 #55 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8208, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #56 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #57 0x00007fffee3cc2e6 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffc810, callable=0x7ffff408bce0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_call.h:92 #58 object_vacall (tstate=0x7fffee709c18 <_PyRuntime+166328>, base=<optimized out>, callable=0x7ffff408bce0, vargs=0x7fffffffc8a0) at Objects/call.c:819 #59 0x00007fffee3ee628 in PyObject_CallMethodObjArgs (obj=0x0, name=<optimized out>) at Objects/call.c:878 #60 0x00007fffee3ebd7d in import_find_and_load (abs_name=0x7fffedb887f0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at Python/import.c:1736 #61 PyImport_ImportModuleLevelObject (name=0x7fffedb887f0, globals=<optimized out>, locals=<optimized out>, fromlist=0x0, level=0) at Python/import.c:1835 #62 0x00007fffee3f9103 in builtin___import___impl (level=<optimized out>, fromlist=0x0, locals=0x0, globals=0x0, name=0x7fffedb887f0, module=<optimized out>) at Python/bltinmodule.c:277 #63 builtin___import__ (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:78 #64 0x00007fffee3c6446 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7ffff40c4b30, args=0x7ffff40f5a98, nargsf=<optimized out>, kwnames=0x0) at ./Include/cpython/methodobject.h:52 #65 0x00007fffee3bd6da in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:5380 #66 0x00007fffee3b56da in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff58c8020, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_ceval.h:73 #67 _PyEval_Vector (tstate=0x7fffee709c18 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at Python/ceval.c:6438 #68 0x00007fffee3cc2e6 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffccb0, callable=0x7ffff408bce0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_call.h:92 #69 object_vacall (tstate=0x7fffee709c18 <_PyRuntime+166328>, base=<optimized out>, callable=0x7ffff408bce0, vargs=0x7fffffffcd40) at Objects/call.c:819 #70 0x00007fffee3ee628 in PyObject_CallMethodObjArgs (obj=0x0, name=<optimized out>) at Objects/call.c:878 #71 0x00007fffee3ebd7d in import_find_and_load (abs_name=0x7ffff413bcf0, tstate=0x7fffee709c18 <_PyRuntime+166328>) at Python/import.c:1736 #72 PyImport_ImportModuleLevelObject (name=0x7ffff413bcf0, globals=<optimized out>, locals=<optimized out>, fromlist=0x7ffff40d99c0, level=0) at Python/import.c:1835 #73 0x00007fffee3f9038 in builtin___import___impl (level=<optimized out>, fromlist=0x7ffff40d99c0, locals=0x7ffff412f100, globals=0x7ffff412f100, name=0x7ffff413bcf0, module=<optimized out>) at Python/bltinmodule.c:277 #74 builtin___import__ (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:78 #75 0x00007fffee3c6446 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7ffff40c4b30, args=0x7fffffffcfa0, nargsf=<optimized out>, kwnames=0x0) at ./Include/cpython/methodobject.h:52 #76 0x00007fffee3adf19 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x7fffffffcfa0, callable=0x7ffff40c4b30, tstate=0x7fffee709c18 <_PyRuntime+166328>) at ./Include/internal/pycore_call.h:92 #77 _PyObject_CallFunctionVa (tstate=0x7fffee709c18 <_PyRuntime+166328>, callable=0x7ffff40c4b30, format=<optimized out>, va=<optimized out>, is_size_t=<optimized out>) at Objects/call.c:536 #78 0x00007fffee3ade44 in PyObject_CallFunction (callable=<optimized out>, format=<optimized out>) at Objects/call.c:558 #79 0x00007fffee3f8e0b in PyImport_Import (module_name=0x7ffff413bcf0) at Python/import.c:2024 #80 0x00007fffee453918 in PyImport_ImportModule (name=name@entry=0x7ffff4282199 "gi._gobject") at Python/import.c:1453 #81 0x00007ffff4280d80 in pygobject_init (req_major=3, req_minor=0, req_micro=0) at /usr/include/pygobject-3.0/pygobject.h:298 #82 np_init_pygobject () at ../src/nemo-python.c:59 #83 nemo_python_init_python () at ../src/nemo-python.c:209 #84 nemo_python_load_dir (module=module@entry=0x5555557f0700 [NemoModule], dirname=dirname@entry=0x7ffff4282868 "/usr/share/nemo-python/extensions") at ../src/nemo-python.c:147 #85 0x00007ffff4281653 in nemo_module_initialize (module=0x5555557f0700 [NemoModule]) at ../src/nemo-python.c:273 #86 0x000055555564a94e in nemo_module_load (gmodule=0x5555557f0700 [NemoModule]) at ../libnemo-private/nemo-module.c:65 #87 0x00007ffff7269619 in g_type_module_use (module=module@entry=0x5555557f0700 [NemoModule]) at ../gobject/gtypemodule.c:250 #88 0x000055555558ee91 in nemo_module_load_file (filename=0x555555967260 "/usr/lib64/nemo/extensions-3.0/libnemo-python.so") at ../libnemo-private/nemo-module.c:161 #89 load_module_dir (dirname=0x555555678dd0 "/usr/lib64/nemo/extensions-3.0") at ../libnemo-private/nemo-module.c:186 #90 nemo_module_setup () at ../libnemo-private/nemo-module.c:216 #91 nemo_module_setup () at ../libnemo-private/nemo-module.c:209 #92 nemo_application_startup (app=<optimized out>) at ../src/nemo-application.c:548 #93 0x00007ffff7243641 in _g_closure_invoke_va (closure=0x55555570dc00, return_value=0x0, instance=0x555555710940, args=0x7fffffffd4d0, n_params=0, param_types=0x0) at ../gobject/gclosure.c:895 #94 0x00007ffff725d456 in g_signal_emit_valist (instance=0x555555710940, signal_id=6, detail=0, var_args=var_args@entry=0x7fffffffd4d0) at ../gobject/gsignal.c:3472 #95 0x00007ffff725d9df in g_signal_emit (instance=instance@entry=0x555555710940, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3622 #96 0x00007ffff7373112 in g_application_register (application=application@entry=0x555555710940 [NemoMainApplication], cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffd610) at ../gio/gapplication.c:2213 #97 0x00005555556018d1 in nemo_main_application_local_command_line (application=0x555555710940 [NemoMainApplication], arguments=<optimized out>, exit_status=0x7fffffffd8b4) at ../src/nemo-main-application.c:759 #98 0x00007ffff73737d6 in g_application_run (application=application@entry=0x555555710940 [NemoMainApplication], argc=argc@entry=1, argv=argv@entry=0x7fffffffda38) at ../gio/gapplication.c:2542 #99 0x000055555558bd4d in main (argc=1, argv=0x7fffffffda38) at ../src/nemo-main.c:104 --- As always, the Python part of the stack trace is so verbose it's very hard to make sense of, but I did find a few interesting stack frames near the bottom... --- #80 0x00007fffee453918 in PyImport_ImportModule (name=name@entry=0x7ffff4282199 "gi._gobject") at Python/import.c:1453 #81 0x00007ffff4280d80 in pygobject_init (req_major=3, req_minor=0, req_micro=0) at /usr/include/pygobject-3.0/pygobject.h:298 #82 np_init_pygobject () at ../src/nemo-python.c:59 #83 nemo_python_init_python () at ../src/nemo-python.c:209 #84 nemo_python_load_dir (module=module@entry=0x5555557f0700 [NemoModule], dirname=dirname@entry=0x7ffff4282868 "/usr/share/nemo-python/extensions") at ../src/nemo-python.c:147 --- From these we can learn that... - The crash occurs while importing Python GObject bindings - These bindings are loaded as part of the process of loading nemo extensions located in /usr/share/nemo-python/extensions As it happens, I have only one such extension around, which is the nemo nextcloud integration that shows file sync status... --- > ls -l /usr/share/nemo-python/extensions total 20 drwxr-xr-x 1 root root 70 18 juin 06:35 __pycache__ -rw-r--r-- 1 root root 18353 15 juin 05:12 syncstate-Nextcloud.py --- So in my case, a practical workaround is to remove the associated nemo-extension-nextcloud package, which brings nemo back to normal behavior. So to summarize, it seems the Python bindings to GObject have trouble with the Python 3.11 upgrade and cannot even be imported anymore without segfaulting the host program. For those like me who use few nemo extensions, a workaround to avoid the crashes while this is being investigated is to uninstall these extensions. There are no interesting logs in either nemo --debug or journalctl that explain why this would happen, and I'm not familiar enough with mixed C/python codebases to tell if it is possible to get a Python backtrace at the point of the segfault, or near to it, which would be the obvious next step.