lwindolf / liferea

Liferea (Linux Feed Reader), a news reader for GTK/GNOME
https://lzone.de/liferea
GNU General Public License v2.0
817 stars 130 forks source link

[1.15.1 in Debian]: enabling webkit-settings crashes liferea #1297

Closed paulgevers closed 11 months ago

paulgevers commented 1 year ago

Debian bug 1050590 was just reported against the liferea package in testing which was updated to 1.15.1 only yesterday. The reported had webkit-settings enabled which crashed liferea on startup.

I could reproduce the issue.

With webkit-settings enabled:

paul@mulciber ~ $ liferea

(liferea:4352): libsoup-ERROR **: 20:27:35.730: libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.
Trace/breakpoint trap (core dumped)
paul@mulciber ~ $

I'm not sure if this is something that I as a maintainer of Debian should have prevented, apparently the ecosystem isn't ready yet if I read the problem correctly, or if there's something you can do on the liferea side.

Anyways, here is a backtrace with debugging information enabled, please let me know if I can provide more info:

paul@mulciber ~ $ gdb liferea
GNU gdb (Debian 13.2-1) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from liferea...

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.debian.net>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Reading symbols from /home/paul/.cache/debuginfod_client/fd230e6965dd8a98351dc042a186479d5253b49f/debuginfo...                                        
(gdb) run
Starting program: /usr/bin/liferea 
[Thread debugging using libthread_db enabled]                                                                                                         
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffeafff6c0 (LWP 6825)]                                                                                                                
[New Thread 0x7fffe3fff6c0 (LWP 6826)]
[New Thread 0x7fffea7fe6c0 (LWP 6827)]
[Detaching after fork from child process 6828]                                                                                                        
[New Thread 0x7fffe9ef96c0 (LWP 6829)]                                                                                                                
[New Thread 0x7fffe96f86c0 (LWP 6830)]
[New Thread 0x7fffe8ef76c0 (LWP 6831)]
[New Thread 0x7fffe17fe6c0 (LWP 6832)]
[New Thread 0x7fffe0ffd6c0 (LWP 6833)]
[New Thread 0x7fffd1fff6c0 (LWP 6834)]
[Detaching after vfork from child process 6835]
[New Thread 0x7fffd17fe6c0 (LWP 6836)]
[Thread 0x7fffd17fe6c0 (LWP 6836) exited]
[New Thread 0x7fffd17fe6c0 (LWP 6842)]
[New Thread 0x7fffd0ffd6c0 (LWP 6843)]
[Thread 0x7fffd17fe6c0 (LWP 6842) exited]
[New Thread 0x7fffd17fe6c0 (LWP 6844)]
[New Thread 0x7fff83ffd6c0 (LWP 6845)]
[Thread 0x7fffd0ffd6c0 (LWP 6843) exited]
[Thread 0x7fffd17fe6c0 (LWP 6844) exited]
[New Thread 0x7fffd17fe6c0 (LWP 6846)]
[New Thread 0x7fffd0ffd6c0 (LWP 6847)]
[Thread 0x7fffd17fe6c0 (LWP 6846) exited]
[Thread 0x7fff83ffd6c0 (LWP 6845) exited]
[Detaching after vfork from child process 6848]
[Thread 0x7fffd0ffd6c0 (LWP 6847) exited]
[Thread 0x7fffe8ef76c0 (LWP 6831) exited]                                                                                                             
[Thread 0x7fffe96f86c0 (LWP 6830) exited]
[New Thread 0x7fffe8ef76c0 (LWP 6860)]

(liferea:6818): libsoup-ERROR **: 20:58:21.568: libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.

Thread 1 "liferea" received signal SIGTRAP, Trace/breakpoint trap.
g_log_structured_array (log_level=<optimized out>, fields=0x7fffffffb700, n_fields=4) at ../../../glib/gmessages.c:555
Download failed: Invalid argument.  Continuing without source file ./debian/build/deb/../../../glib/gmessages.c.                                      
555     ../../../glib/gmessages.c: No such file or directory.
(gdb) bt
#0  g_log_structured_array (log_level=<optimized out>, fields=0x7fffffffb700, n_fields=4) at ../../../glib/gmessages.c:555
#1  0x00007ffff110aa8e in g_log_default_handler (log_domain=log_domain@entry=0x7fffd01aea36 "libsoup", log_level=log_level@entry=6, 
    message=message@entry=0x7fffd01b34e8 "libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.", 
    unused_data=unused_data@entry=0x0) at ../../../glib/gmessages.c:3284
#2  0x00007ffff110ad00 in g_logv (log_domain=0x7fffd01aea36 "libsoup", log_level=G_LOG_LEVEL_ERROR, format=<optimized out>, 
    args=args@entry=0x7fffffffb850) at ../../../glib/gmessages.c:1391
#3  0x00007ffff110afaf in g_log (log_domain=log_domain@entry=0x7fffd01aea36 "libsoup", log_level=log_level@entry=G_LOG_LEVEL_ERROR, 
    format=format@entry=0x7fffd01b34e8 "libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.")
    at ../../../glib/gmessages.c:1460
#4  0x00007fffd015bffc in soup_init () at ../libsoup/soup-init.c:55
#5  soup_init_ctor () at ../libsoup/soup-init.c:96
#6  0x00007ffff7fcfe2e in call_init (env=0x7fffffffdb88, argv=0x7fffffffdb78, argc=1, l=<optimized out>) at ./elf/dl-init.c:70
#7  call_init (l=<optimized out>, argc=1, argv=0x7fffffffdb78, env=0x7fffffffdb88) at ./elf/dl-init.c:26
#8  0x00007ffff7fcff14 in _dl_init (main_map=0x555556005b80, argc=1, argv=0x7fffffffdb78, env=0x7fffffffdb88) at ./elf/dl-init.c:117
#9  0x00007ffff7fcc516 in __GI__dl_catch_exception (exception=exception@entry=0x0, operate=operate@entry=0x7ffff7fd66e0 <call_dl_init>, 
    args=args@entry=0x7fffffffbaf0) at ./elf/dl-catch.c:211
#10 0x00007ffff7fd667e in dl_open_worker (a=a@entry=0x7fffffffbc90) at ./elf/dl-open.c:808
#11 0x00007ffff7fcc489 in __GI__dl_catch_exception (exception=exception@entry=0x7fffffffbc70, operate=operate@entry=0x7ffff7fd65f0 <dl_open_worker>, 
    args=args@entry=0x7fffffffbc90) at ./elf/dl-catch.c:237
#12 0x00007ffff7fd6a18 in _dl_open (file=0x555556005b60 "libwebkit2gtk-4.0.so.37", mode=<optimized out>, 
    caller_dlopen=0x7fffefab591b <g_module_open_full+475>, nsid=<optimized out>, argc=1, argv=0x7fffffffdb78, env=0x7fffffffdb88)
    at ./elf/dl-open.c:884
#13 0x00007ffff0e6c6f8 in dlopen_doit (a=a@entry=0x7fffffffbf00) at ./dlfcn/dlopen.c:56
#14 0x00007ffff7fcc489 in __GI__dl_catch_exception (exception=exception@entry=0x7fffffffbe60, operate=0x7ffff0e6c6a0 <dlopen_doit>, 
    args=0x7fffffffbf00) at ./elf/dl-catch.c:237
#15 0x00007ffff7fcc5af in _dl_catch_error (objname=0x7fffffffbeb8, errstring=0x7fffffffbec0, mallocedp=0x7fffffffbeb7, operate=<optimized out>, 
    args=<optimized out>) at ./elf/dl-catch.c:256
#16 0x00007ffff0e6c1e7 in _dlerror_run (operate=operate@entry=0x7ffff0e6c6a0 <dlopen_doit>, args=args@entry=0x7fffffffbf00) at ./dlfcn/dlerror.c:138
#17 0x00007ffff0e6c7a9 in dlopen_implementation (dl_caller=<optimized out>, mode=<optimized out>, file=<optimized out>) at ./dlfcn/dlopen.c:71
#18 ___dlopen (file=<optimized out>, mode=<optimized out>) at ./dlfcn/dlopen.c:81
#19 0x00007fffefab591b in _g_module_open (error=0x0, bind_local=<optimized out>, bind_lazy=1, file_name=0x555556005b60 "libwebkit2gtk-4.0.so.37")
    at ../../../gmodule/gmodule-dl.c:138
#20 g_module_open_full (file_name=file_name@entry=0x5555558e13f0 "libwebkit2gtk-4.0.so.37", flags=<optimized out>, flags@entry=G_MODULE_BIND_LAZY, 
--Type <RET> for more, q to quit, c to continue without paging--c
    error=error@entry=0x0) at ../../../gmodule/gmodule.c:695
#21 0x00007fffefab6257 in g_module_open (file_name=file_name@entry=0x5555558e13f0 "libwebkit2gtk-4.0.so.37", flags=flags@entry=G_MODULE_BIND_LAZY)
    at ../../../gmodule/gmodule.c:779
#22 0x00007ffff1262f45 in load_one_shared_library (shlib=0x5555558e13f0 "libwebkit2gtk-4.0.so.37") at ../girepository/gitypelib.c:2294
#23 _g_typelib_do_dlopen (typelib=0x555555ea9890) at ../girepository/gitypelib.c:2326
#24 _g_typelib_ensure_open (typelib=0x555555ea9890) at ../girepository/gitypelib.c:2362
#25 g_typelib_symbol (typelib=0x555555ea9890, symbol_name=symbol_name@entry=0x7fffd024a1c4 "webkit_web_view_get_type", 
    symbol=symbol@entry=0x7fffffffc050) at ../girepository/gitypelib.c:2505
#26 0x00007ffff125bd1b in g_registered_type_info_get_g_type (info=0x555556005b10) at ../girepository/giregisteredtypeinfo.c:136
#27 0x00007fffe802915d in _wrap_g_registered_type_info_get_g_type (self=<optimized out>) at gi/pygi-info.c:1277
#28 0x00007fff825c4262 in cfunction_vectorcall_NOARGS (func=0x7fffd02f9670, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>)
    at ../Objects/methodobject.c:486
#29 0x00007fff82577563 in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, 
    callable=0x7fffd02f9670, tstate=0x7fff82b5a018 <_PyRuntime+166328>) at ../Include/internal/pycore_call.h:92
#30 PyObject_Vectorcall (callable=0x7fffd02f9670, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:299
#31 0x00007fff82509c63 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=0x7fffe8061148, throwflag=<optimized out>)
    at ../Python/ceval.c:4774
#32 0x00007fff8266491a in _PyEval_EvalFrame (throwflag=0, frame=0x7fffe8061148, tstate=0x7fff82b5a018 <_PyRuntime+166328>)
    at ../Include/internal/pycore_ceval.h:73
#33 _PyEval_Vector (tstate=0x7fff82b5a018 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kwnames=<optimized out>) at ../Python/ceval.c:6439
#34 0x00007fff82579548 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffc2f0, callable=0x7fffd071d8a0, 
    tstate=0x7fff82b5a018 <_PyRuntime+166328>) at ../Include/internal/pycore_call.h:92
#35 method_vectorcall (method=<optimized out>, args=0x7fffffffc2f8, nargsf=<optimized out>, kwnames=0x0) at ../Objects/classobject.c:59
#36 0x00007fff82577659 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=9223372036854775809, args=0x7fffffffc2f8, callable=0x7fffd02fd200, 
    tstate=0x7fff82b5a018 <_PyRuntime+166328>) at ../Include/internal/pycore_call.h:92
#37 PyObject_CallOneArg (func=0x7fffd02fd200, arg=<optimized out>) at ../Objects/call.c:376
#38 0x00007fff825eaa79 in call_attribute (name=0x7fffd02fcb70, attr=0x7fffd02fd200, self=0x7fffd02daa10) at ../Objects/typeobject.c:7673
#39 slot_tp_getattr_hook (self=0x7fffd02daa10, name=0x7fffd02fcb70) at ../Objects/typeobject.c:7714
#40 0x00007fff825c9e08 in PyObject_GetAttr (v=v@entry=0x7fffd02daa10, name=name@entry=0x7fffd02fcb70) at ../Objects/object.c:916
#41 0x00007fff825ca35b in PyObject_GetAttrString (name=<optimized out>, v=0x7fffd02daa10) at ../Objects/object.c:801
#42 PyObject_GetAttrString (v=0x7fffd02daa10, name=<optimized out>) at ../Objects/object.c:792
#43 0x00007fffe80369c0 in pygi_type_import_by_name (namespace_=<optimized out>, name=0x7fffd024a1ac "WebView") at gi/pygi-type.c:52
#44 0x00007fffe8036a2f in pygi_type_import_by_gi_info (info=0x555556005ac0) at gi/pygi-type.c:82
#45 pygi_type_import_by_g_type (g_type=g_type@entry=93824995987120) at gi/pygi-type.c:73
#46 0x00007fffe803cc23 in pygobject_lookup_class (gtype=93824995987120) at gi/pygobject-object.c:963
#47 pygobject_lookup_class (gtype=93824995987120) at gi/pygobject-object.c:951
#48 0x00007fffe803ce94 in pyg_type_get_bases (gtype=gtype@entry=93824995987360) at gi/pygobject-object.c:743
#49 0x00007fffe803cc41 in pygobject_new_with_interfaces (gtype=93824995987360) at gi/pygobject-object.c:784
#50 pygobject_lookup_class (gtype=93824995987360) at gi/pygobject-object.c:968
#51 pygobject_lookup_class (gtype=93824995987360) at gi/pygobject-object.c:951
#52 0x00007fffe803d36c in pygobject_new_full (g_class=0x0, steal=0, obj=0x5555558f2220) at gi/pygobject-object.c:1025
#53 pygobject_new_full (obj=0x5555558f2220, steal=steal@entry=0, g_class=g_class@entry=0x0) at gi/pygobject-object.c:991
#54 0x00007fffe8031054 in pygi_arg_gobject_to_py (arg=arg@entry=0x7fffffffc608, transfer=transfer@entry=GI_TRANSFER_NOTHING) at gi/pygi-object.c:239
#55 0x00007fffe8031184 in pygi_arg_gobject_to_py_called_from_c (arg=arg@entry=0x7fffffffc608, transfer=transfer@entry=GI_TRANSFER_NOTHING)
    at gi/pygi-object.c:276
#56 0x00007fffe801f462 in _pygi_argument_to_object (arg=0x7fffffffc608, type_info=<optimized out>, transfer=GI_TRANSFER_NOTHING)
    at gi/pygi-argument.c:862
#57 0x00007fffe8031529 in pygi_get_property_value (instance=<optimized out>, pspec=0x5555558e1690) at gi/pygi-property.c:170
#58 0x00007fff825c9e08 in PyObject_GetAttr (v=0x7fffd02d7730, name=0x7fffd02d90b0) at ../Objects/object.c:916
#59 0x00007fff8250682c in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=0x7fffe80610b0, throwflag=<optimized out>)
    at ../Python/ceval.c:3466
#60 0x00007fff8266491a in _PyEval_EvalFrame (throwflag=0, frame=0x7fffe80610b0, tstate=0x7fff82b5a018 <_PyRuntime+166328>)
    at ../Include/internal/pycore_ceval.h:73
#61 _PyEval_Vector (tstate=0x7fff82b5a018 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kwnames=<optimized out>) at ../Python/ceval.c:6439
#62 0x00007fff82577659 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=9223372036854775809, args=0x7fffffffc858, callable=0x7fffd02f2480, 
    tstate=0x7fff82b5a018 <_PyRuntime+166328>) at ../Include/internal/pycore_call.h:92
#63 PyObject_CallOneArg (func=0x7fffd02f2480, arg=<optimized out>) at ../Objects/call.c:376
#64 0x00007fff825ca8c9 in _PyObject_GenericGetAttrWithDict (obj=0x7fffd02eea40, name=0x7fffd02dc490, dict=0x0, suppress=0) at ../Include/object.h:133
#65 0x00007fff825c9e08 in PyObject_GetAttr (v=0x7fffd02eea40, name=0x7fffd02dc490) at ../Objects/object.c:916
#66 0x00007fff8250682c in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=0x7fffe8061020, throwflag=<optimized out>)
    at ../Python/ceval.c:3466
#67 0x00007fff8266491a in _PyEval_EvalFrame (throwflag=0, frame=0x7fffe8061020, tstate=0x7fff82b5a018 <_PyRuntime+166328>)
    at ../Include/internal/pycore_ceval.h:73
#68 _PyEval_Vector (tstate=0x7fff82b5a018 <_PyRuntime+166328>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kwnames=<optimized out>) at ../Python/ceval.c:6439
#69 0x00007fffe802640b in _pygi_closure_handle (cif=<optimized out>, result=<optimized out>, args=<optimized out>, data=<optimized out>)
    at gi/pygi-closure.c:582
#70 0x00007fffef33dd95 in ffi_closure_unix64_inner (cif=<optimized out>, fun=<optimized out>, user_data=0x555555ec18c0, rvalue=<optimized out>, 
    reg_args=<optimized out>, argp=0x7fffffffcd90 "") at ../src/x86/ffi64.c:899
#71 0x00007fffef33e110 in ffi_closure_unix64 () at ../src/x86/unix64.S:303
#72 0x00007fffef33df7a in ffi_call_unix64 () at ../src/x86/unix64.S:104
#73 0x00007fffef33d40e in ffi_call_int (cif=cif@entry=0x7fffffffcfe0, fn=fn@entry=0x5555555a5630 <liferea_shell_activatable_activate>, 
    rvalue=<optimized out>, rvalue@entry=0x7fffffffcfd8, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#74 0x00007fffef33db0d in ffi_call (cif=cif@entry=0x7fffffffcfe0, fn=fn@entry=0x5555555a5630 <liferea_shell_activatable_activate>, 
    rvalue=rvalue@entry=0x7fffffffcfd8, avalue=avalue@entry=0x7fffffffcf20) at ../src/x86/ffi64.c:710
#75 0x00007ffff1257cff in g_callable_info_invoke (info=info@entry=0x555556063870, function=0x5555555a5630 <liferea_shell_activatable_activate>, 
    in_args=in_args@entry=0x7fffffffd0f0, n_in_args=n_in_args@entry=1, out_args=out_args@entry=0x7fffffffd0e0, n_out_args=n_out_args@entry=0, 
    return_value=0x7fffffffd240, is_method=1, throws=0, error=0x7fffffffd158) at ../girepository/gicallableinfo.c:775
#76 0x00007ffff12592e6 in g_function_info_invoke (info=info@entry=0x555556063870, in_args=in_args@entry=0x7fffffffd0f0, n_in_args=n_in_args@entry=1, 
    out_args=out_args@entry=0x7fffffffd0e0, n_out_args=n_out_args@entry=0, return_value=return_value@entry=0x7fffffffd240, error=0x7fffffffd158)
    at ../girepository/gifunctioninfo.c:284
#77 0x00007ffff375a3d9 in peas_gi_method_call (instance=instance@entry=0x555556054c30, func_info=func_info@entry=0x555556063870, 
    gtype=gtype@entry=93825001718800, method_name=method_name@entry=0x5555555b306e "activate", args=args@entry=0x7fffffffd280, 
    return_value=return_value@entry=0x7fffffffd240) at ../libpeas/peas-introspection.c:317
#78 0x00007ffff3758126 in peas_extension_callv (exten=0x555556054c30, method_name=method_name@entry=0x5555555b306e "activate", 
    args=args@entry=0x7fffffffd280, return_value=return_value@entry=0x7fffffffd240) at ../libpeas/peas-extension.c:260
#79 0x00007ffff3758bf5 in peas_extension_set_call_real (set=<optimized out>, method_name=0x5555555b306e "activate", args=0x7fffffffd280)
    at ../libpeas/peas-extension-set.c:348
#80 0x00007ffff37593f2 in peas_extension_set_call_valist (set=set@entry=0x55555575d060, method_name=method_name@entry=0x5555555b306e "activate", 
    va_args=va_args@entry=0x7fffffffd2e0) at ../libpeas/peas-extension-set.c:557
#81 0x00007ffff375958d in peas_extension_set_call (set=0x55555575d060, method_name=method_name@entry=0x5555555b306e "activate")
    at ../libpeas/peas-extension-set.c:509
#82 0x00005555555879de in liferea_plugins_engine_set_default_signals (extensions=<optimized out>, user_data=<optimized out>)
    at ../plugins_engine.c:137
#83 0x00005555555a50b7 in liferea_shell_create (app=app@entry=0x555555609120, overrideWindowState=<optimized out>, pluginsDisabled=<optimized out>)
    at ./src/ui/liferea_shell.c:1421
#84 0x0000555555582eef in on_app_activate (gtk_app=0x555555609120, user_data=<optimized out>) at ../liferea_application.c:120
#85 0x00007ffff12023f8 in g_closure_invoke (closure=0x55555560b220, return_value=0x0, n_param_values=1, param_values=0x7fffffffd6a0, 
    invocation_hint=0x7fffffffd5f0) at ../../../gobject/gclosure.c:832
#86 0x00007ffff121501c in signal_emit_unlocked_R (node=node@entry=0x7fffffffd750, detail=detail@entry=0, instance=instance@entry=0x555555609120, 
    emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd6a0) at ../../../gobject/gsignal.c:3980
#87 0x00007ffff1216951 in signal_emit_valist_unlocked (instance=instance@entry=0x555555609120, signal_id=signal_id@entry=8, detail=detail@entry=0, 
    var_args=var_args@entry=0x7fffffffd8b0) at ../../../gobject/gsignal.c:3612
#88 0x00007ffff121c552 in g_signal_emit_valist (instance=0x555555609120, signal_id=8, detail=0, var_args=0x7fffffffd8b0)
    at ../../../gobject/gsignal.c:3355
#89 0x00007ffff121c5ff in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>)
    at ../../../gobject/gsignal.c:3675
#90 0x00007ffff13666d8 in g_application_real_local_command_line (application=0x555555609120, arguments=0x7fffffffd9f8, exit_status=0x7fffffffd9f4)
    at ../../../gio/gapplication.c:1152
#91 0x00007ffff1366826 in g_application_run (application=0x555555609120, argc=argc@entry=1, argv=argv@entry=0x7fffffffdb78)
    at ../../../gio/gapplication.c:2546
#92 0x00005555555832b2 in liferea_application_new (argc=1, argv=0x7fffffffdb78) at ../liferea_application.c:343
#93 0x00007ffff0e0f6ca in __libc_start_call_main (main=main@entry=0x5555555744c0 <main>, argc=argc@entry=1, argv=argv@entry=0x7fffffffdb78)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#94 0x00007ffff0e0f785 in __libc_start_main_impl (main=0x5555555744c0 <main>, argc=1, argv=0x7fffffffdb78, init=<optimized out>, 
    fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdb68) at ../csu/libc-start.c:360
#95 0x0000555555574561 in _start ()
(gdb) 
lwindolf commented 1 year ago

This was actually one of the things expected with the switch to libsoup3 (discussion see #1225).

From a code perspective we cannot know whether a plugin will load libsoup2. So there is no safe solution from the plugin loading perspective.

To allow users to revocer

  dconf reset /org/gnome/liferea/plugins/active-plugins

can be used.

I'm open for all good ideas on how to workaround the effect.

paulgevers commented 1 year ago

I don't know how these plugins integrate with liferea, so usefulness of suggestions here depend on how it works.

1) Put loading of plugins into something like Python's try/except mechanism (don't know if you can do that in c). However, seeing the failure mode it seems plugins are really changing the core, so this probably doesn't work.

1) If plugins go too deep into liferea, make the main call a try/except and if it fails, restart in a fallback mode with all plugins disabled and pop-up message of what just happened.

1) Make /usr/bin/liferea a wrapper around the real binary and let that that handle the previous idea if this can't be done in c. As I'm not skilled in C, I might consider this for Debian if this can't be fixed in liferea proper.

1) I also like to note that it feels to me that if plugins can determine themselves which versions of libraries to use, this problem has always been lurking. I suspect this is only a real problem for libraries that have multiple versions around though? If I understand correctly plugins must ensure they are using the same version as liferea, but with plugins downloaded, I guess plugins need a versioning scheme such that liferea knows which one to download and can refuse to load them if the scheme says they are incompatible.

lwindolf commented 1 year ago

After thinking a bit about it I think the most maintainable solution is to always auto-disable any plugin names webkit-settings upon startup.

lwindolf commented 1 year ago

Any plugin named webkit-settings is now auto-disabled on startup

paulgevers commented 1 year ago

@lwindolf can you please reopen this bug? The original reporter of the Debian bug came back and said that 1.15.3 still crashes at startup with the webkit-settings plugin installed and enabled. I can confirm.

lwindolf commented 11 months ago

@paulgevers Found the problem. While the GSettings key was edited correctly, the plugins were loaded before doing this. I've changed the code order. Now it should not crash anymore.

paulgevers commented 11 months ago

1.15.4 still crashes for me when I enable webkit-settings.

paul@mulciber ~ $ liferea --version
Liferea 1.15.4
paul@mulciber ~ $ liferea

(liferea:259214): libsoup-ERROR **: 22:07:07.970: libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.
Trace/breakpoint trap (core dumped)
paul@mulciber ~ $
lwindolf commented 11 months ago

@paulgevers Strange. But the plugin is disabled after the crash?

paulgevers commented 11 months ago

No, it keeps crashing until I run dconf.

lwindolf commented 11 months ago

Ah I didn't expect this. This means libpeas is loading all Python scripts in all cases (probably to know all of them) even before the "Python3" loader is being registered. The following commit will run the deactivation even before this.

paulgevers commented 11 months ago

Even that patch doesn't seem to help.

cheese1 commented 11 months ago

1.15.4 did not fix that problem under fedora https://bugzilla.redhat.com/show_bug.cgi?id=2244813 any chance to get 1.15.5 released?

lwindolf commented 9 months ago

@cheese1 I didn't find a solution yet.