[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#928687: remmina: Segfaults when recommends is missing on connection



Control: tags 928687 + upstream patch


Dear Maintainer,
this could be reproduced from a stored RDP connection entry,
while the plugin is uninstalled.
With the dbgsym package installed the backtrace looks like below.

Unfortunately the null pointer in gp->priv->plugin seems to get
unconditionally dereferenced.

Could not find a matching upstream bug.

Attached patch tries to avoid the crash.

Kind regards,
Bernhard


(gdb) bt
#0  0x0000562572fe1735 in remmina_protocol_widget_query_feature_by_type (gp=<optimized out>, type=type@entry=REMMINA_PROTOCOL_FEATURE_TYPE_SCALE) at ./src/remmina_protocol_widget.c:523
#1  0x0000562572ff09d3 in get_current_allowed_scale_mode (dynres_avail=dynres_avail@entry=0x0, scale_avail=scale_avail@entry=0x0, cnnobj=<optimized out>, cnnobj=<optimized out>) at ./src/rcw.c:378
#2  0x0000562572ff26a5 in rco_set_scrolled_policy (cnnobj=cnnobj@entry=0x5625742938a0, scrolled_window=0x562574116b10 [GtkScrolledWindow]) at ./src/rcw.c:827
#3  0x0000562572ff5a39 in rco_create_scrolled_container (cnnobj=cnnobj@entry=0x5625742938a0, view_mode=view_mode@entry=1) at ./src/rcw.c:2673
#4  0x0000562572ff63b0 in rco_append_page (cnnobj=cnnobj@entry=0x5625742938a0, notebook=notebook@entry=0x562574128730 [GtkNotebook], tab=0x5625741b25c0 [GtkBox], view_mode=view_mode@entry=1) at ./src/rcw.c:2783
#5  0x0000562572ff64f3 in rcw_initialize_notebook (to=0x562574128730 [GtkNotebook], from=0x0, cnnobj=0x5625742938a0, view_mode=1) at ./src/rcw.c:2830
#6  0x0000562572ff6bd7 in rch_create_scrolled (cnnhld=0x56257431d280, cnnobj=cnnobj@entry=0x5625742938a0) at ./src/rcw.c:3132
#7  0x0000562572ff850f in rcw_open_from_file_full (remminafile=0x562574315030, disconnect_cb=disconnect_cb@entry=0x0, data=data@entry=0x0, handler=handler@entry=0x0) at ./src/rcw.c:3830
#8  0x0000562572ff854b in rcw_open_from_file (remminafile=<optimized out>) at ./src/rcw.c:3765
#9  0x0000562572ff8566 in rcw_open_from_filename (filename=0x56257426c4f0 "/home/benutzer/.local/share/remmina/1557354339882.remmina") at ./src/rcw.c:3725
...
#53 0x0000562572fc6c15 in main (argc=1, argv=0x7ffe06997a58) at ./src/remmina.c:310



(gdb) print gp
$1 = 0x5555559b27c0 [RemminaProtocolWidget]
(gdb) print gp->priv
$2 = (RemminaProtocolWidgetPriv *) 0x555555b13820
(gdb) print gp->priv->plugin
$3 = (RemminaProtocolPlugin *) 0x0



(gdb) list 512,528
512     gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget* gp, RemminaProtocolFeatureType type)
513     {
514             TRACE_CALL(__func__);
515             const RemminaProtocolFeature *feature;
516
517     #ifdef HAVE_LIBSSH
518             if (type == REMMINA_PROTOCOL_FEATURE_TYPE_TOOL &&
519                 remmina_file_get_int(gp->priv->remmina_file, "ssh_enabled", FALSE)) {
520                     return TRUE;
521             }
522     #endif
523             for (feature = gp->priv->plugin->features; feature && feature->type; feature++) {
524                     if (feature->type == type)
525                             return TRUE;
526             }
527             return FALSE;
528     }
>From 89e2a54e899cd21acfb22c30b2659ad4ddcddb84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= <bernhardu@mailbox.org>
Date: Thu, 9 May 2019 01:03:45 +0200
Subject: [PATCH] Avoid crash in remmina for missing plugin.

https://bugs.debian.org/928687
---
 src/remmina_protocol_widget.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/remmina_protocol_widget.c b/src/remmina_protocol_widget.c
index edba091..9d535f8 100644
--- a/src/remmina_protocol_widget.c
+++ b/src/remmina_protocol_widget.c
@@ -520,6 +520,8 @@ gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget* gp
 		return TRUE;
 	}
 #endif
+	if (!gp || !gp->priv || !gp->priv->plugin)
+		return FALSE;
 	for (feature = gp->priv->plugin->features; feature && feature->type; feature++) {
 		if (feature->type == type)
 			return TRUE;
-- 
2.20.1


# Buster amd64 qemu VM 2019-05-08


apt update
apt dist-upgrade


apt install systemd-coredump gdb xserver-xorg dbus-x11 lightdm openbox gdb git mc fakeroot remmina remmina-dbgsym libglib2.0-0-dbgsym libgtk-3-0-dbgsym libffi6-dbg git
apt build-dep remmina


systemctl start lightdm


mkdir /home/benutzer/source/remmina/orig -p
cd    /home/benutzer/source/remmina/orig
apt source remmina
cd


#########

export DISPLAY=:0
remmina

- create new connection
- just save
- close remmina


dpkg --purge remmina-plugin-rdp


remmina

- connect to saved connection


#########


benutzer@debian:~$ remmina
[glibsecret] unable to get secret service: Kindprozess »dbus-launch« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)
Plugin entry returned false: /usr/lib/x86_64-linux-gnu/remmina/plugins/remmina-plugin-secret.so.
StatusNotifier/Appindicator support: not supported by desktop. libappindicator will try to fallback to GtkStatusIcon/xembed
WARNING: Remmina is running with a secret plugin, but it cannot connect to a secret service.

(org.remmina.Remmina:10468): Gtk-WARNING **: 00:25:56.346: gtk_menu_attach_to_widget(): menu already attached to GtkMenuItem

(org.remmina.Remmina:10468): libayatana-appindicator-WARNING **: 00:25:56.381: Unable to get the session bus: Kindprozess »dbus-launch« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)

(org.remmina.Remmina:10468): LIBDBUSMENU-GLIB-WARNING **: 00:25:56.381: Unable to get session bus: Kindprozess »dbus-launch« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)
Speicherzugriffsfehler (Speicherabzug geschrieben)



dmesg
[  370.643864] remmina[10468]: segfault at 50 ip 0000562572fe1735 sp 00007ffe06996020 error 4 in remmina[562572fc3000+38000]
[  370.643870] Code: 00 00 00 00 00 48 8b 47 40 48 8b 40 10 c3 0f 1f 80 00 00 00 00 55 53 89 f3 48 83 ec 08 48 8b 47 40 83 fe 02 74 3f 48 8b 40 08 <48> 8b 40 50 48 85 c0 74 22 8b 10 85 d2 74 1c 39 d3 75 12 eb 3e 66


root@debian:~# coredumpctl list
TIME                            PID   UID   GID SIG COREFILE  EXE
Thu 2019-05-09 00:26:01 CEST  10468  1000  1000  11 present   /usr/bin/remmina


root@debian:~# coredumpctl gdb 10468
           PID: 10468 (remmina)
           UID: 1000 (benutzer)
           GID: 1000 (benutzer)
        Signal: 11 (SEGV)
     Timestamp: Thu 2019-05-09 00:26:01 CEST (2min 3s ago)
  Command Line: remmina
    Executable: /usr/bin/remmina
 Control Group: /user.slice/user-1000.slice/session-5.scope
          Unit: session-5.scope
         Slice: user-1000.slice
       Session: 5
     Owner UID: 1000 (benutzer)
       Boot ID: 93ad81ae4e63413183afcc8cf481c34c
    Machine ID: 32f43b50ac8c4b21941bc0b02f8e7811
      Hostname: debian
       Storage: /var/lib/systemd/coredump/core.remmina.1000.93ad81ae4e63413183afcc8cf481c34c.10468.1557354361000000.lz4
       Message: Process 10468 (remmina) of user 1000 dumped core.
                
                Stack trace of thread 10468:
                #0  0x0000562572fe1735 remmina_protocol_widget_query_feature_by_type (remmina)
                #1  0x0000562572ff09d3 n/a (remmina)
                #2  0x0000562572ff26a5 rco_set_scrolled_policy (remmina)
                #3  0x0000562572ff5a39 rco_create_scrolled_container (remmina)
                #4  0x0000562572ff63b0 rco_append_page (remmina)
                #5  0x0000562572ff64f3 n/a (remmina)
                #6  0x0000562572ff6bd7 rch_create_scrolled (remmina)
                #7  0x0000562572ff850f rcw_open_from_file_full (remmina)
                #8  0x0000562572ff8566 rcw_open_from_filename (remmina)
                #9  0x0000562572fd4f84 remmina_main_on_action_connection_connect (remmina)
                #10 0x00007f9c9c60ec7d g_closure_invoke (libgobject-2.0.so.0)
                #11 0x00007f9c9c622345 n/a (libgobject-2.0.so.0)
                #12 0x00007f9c9c62b25e g_signal_emit_valist (libgobject-2.0.so.0)
                #13 0x00007f9c9c62b91f g_signal_emit (libgobject-2.0.so.0)
                #14 0x00007f9c9cd95036 n/a (libgtk-3.so.0)
                #15 0x00007f9c9a34b8ee ffi_call_unix64 (libffi.so.6)
                #16 0x00007f9c9a34b2bf ffi_call (libffi.so.6)
                #17 0x00007f9c9c60f8f6 g_cclosure_marshal_generic_va (libgobject-2.0.so.0)
                #18 0x00007f9c9c60eeb6 n/a (libgobject-2.0.so.0)
                #19 0x00007f9c9c62b32d g_signal_emit_valist (libgobject-2.0.so.0)
                #20 0x00007f9c9c62b91f g_signal_emit (libgobject-2.0.so.0)
                #21 0x00007f9c9cc1f658 n/a (libgtk-3.so.0)
                #22 0x00007f9c9c611cf2 g_cclosure_marshal_VOID__BOXEDv (libgobject-2.0.so.0)
                #23 0x00007f9c9c60eeb6 n/a (libgobject-2.0.so.0)
                #24 0x00007f9c9c62b32d g_signal_emit_valist (libgobject-2.0.so.0)
                #25 0x00007f9c9c62b91f g_signal_emit (libgobject-2.0.so.0)
                #26 0x00007f9c9cc1c4fe n/a (libgtk-3.so.0)
                #27 0x00007f9c9cc1da23 n/a (libgtk-3.so.0)
                #28 0x00007f9c9cc20886 n/a (libgtk-3.so.0)
                #29 0x00007f9c9cbe944c gtk_event_controller_handle_event (libgtk-3.so.0)
                #30 0x00007f9c9cda307b n/a (libgtk-3.so.0)
                #31 0x00007f9c9cdf717b n/a (libgtk-3.so.0)
                #32 0x00007f9c9c60ec7d g_closure_invoke (libgobject-2.0.so.0)
                #33 0x00007f9c9c621b9d n/a (libgobject-2.0.so.0)
                #34 0x00007f9c9c62a94b g_signal_emit_valist (libgobject-2.0.so.0)
                #35 0x00007f9c9c62b91f g_signal_emit (libgobject-2.0.so.0)
                #36 0x00007f9c9cda5324 n/a (libgtk-3.so.0)
                #37 0x00007f9c9cc65976 n/a (libgtk-3.so.0)
                #38 0x00007f9c9cc67a83 gtk_main_do_event (libgtk-3.so.0)
                #39 0x00007f9c9c969465 n/a (libgdk-3.so.0)
                #40 0x00007f9c9c99a112 n/a (libgdk-3.so.0)
                #41 0x00007f9c9c85ef2e g_main_context_dispatch (libglib-2.0.so.0)
                #42 0x00007f9c9c85f1c8 n/a (libglib-2.0.so.0)
                #43 0x00007f9c9c85f25c g_main_context_iteration (libglib-2.0.so.0)
                #44 0x00007f9c9c71f99d g_application_run (libgio-2.0.so.0)
                #45 0x0000562572fc6c15 main (remmina)
                #46 0x00007f9c9b67809b __libc_start_main (libc.so.6)
                #47 0x0000562572fc6c6a _start (remmina)
                
                Stack trace of thread 10469:
                #0  0x00007f9c9b742819 __GI___poll (libc.so.6)
                #1  0x00007f9c9c85f136 n/a (libglib-2.0.so.0)
                #2  0x00007f9c9c85f25c g_main_context_iteration (libglib-2.0.so.0)
                #3  0x00007f9c9c85f2a1 n/a (libglib-2.0.so.0)
                #4  0x00007f9c9c887425 n/a (libglib-2.0.so.0)
                #5  0x00007f9c9bea0fa3 start_thread (libpthread.so.0)
                #6  0x00007f9c9b74d4cf __clone (libc.so.6)
                
                Stack trace of thread 10478:
                #0  0x00007f9c9b747f59 syscall (libc.so.6)
                #1  0x00007f9c9c8a90ba g_cond_wait_until (libglib-2.0.so.0)
                #2  0x00007f9c9c831091 n/a (libglib-2.0.so.0)
                #3  0x00007f9c9c831651 g_async_queue_timeout_pop (libglib-2.0.so.0)
                #4  0x00007f9c9c887e61 n/a (libglib-2.0.so.0)
                #5  0x00007f9c9c887425 n/a (libglib-2.0.so.0)
                #6  0x00007f9c9bea0fa3 start_thread (libpthread.so.0)
                #7  0x00007f9c9b74d4cf __clone (libc.so.6)

GNU gdb (Debian 8.2.1-2) 8.2.1
Copyright (C) 2018 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:
<http://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 /usr/bin/remmina...(no debugging symbols found)...done.
[New LWP 10468]
[New LWP 10469]
[New LWP 10478]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `remmina'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000562572fe1735 in remmina_protocol_widget_query_feature_by_type ()
[Current thread is 1 (Thread 0x7f9c96c2f640 (LWP 10468))]
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0  0x0000562572fe1735 in remmina_protocol_widget_query_feature_by_type ()
#1  0x0000562572ff09d3 in ?? ()
#2  0x0000562572ff26a5 in rco_set_scrolled_policy ()
#3  0x0000562572ff5a39 in rco_create_scrolled_container ()
#4  0x0000562572ff63b0 in rco_append_page ()
#5  0x0000562572ff64f3 in ?? ()
#6  0x0000562572ff6bd7 in rch_create_scrolled ()
#7  0x0000562572ff850f in rcw_open_from_file_full ()
#8  0x0000562572ff8566 in rcw_open_from_filename ()
#9  0x0000562572fd4f84 in remmina_main_on_action_connection_connect ()
#10 0x00007f9c9c60ec7d in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#11 0x00007f9c9c622345 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#12 0x00007f9c9c62b25e in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007f9c9c62b91f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007f9c9cd95036 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#15 0x00007f9c9a34b8ee in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#16 0x00007f9c9a34b2bf in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#17 0x00007f9c9c60f8f6 in g_cclosure_marshal_generic_va () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#18 0x00007f9c9c60eeb6 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007f9c9c62b32d in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007f9c9c62b91f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007f9c9cc1f658 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#22 0x00007f9c9c611cf2 in g_cclosure_marshal_VOID__BOXEDv () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007f9c9c60eeb6 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007f9c9c62b32d in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#25 0x00007f9c9c62b91f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#26 0x00007f9c9cc1c4fe in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#27 0x00007f9c9cc1da23 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#28 0x00007f9c9cc20886 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#29 0x00007f9c9cbe944c in gtk_event_controller_handle_event () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#30 0x00007f9c9cda307b in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#31 0x00007f9c9cdf717b in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#32 0x00007f9c9c60ec7d in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#33 0x00007f9c9c621b9d in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#34 0x00007f9c9c62a94b in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#35 0x00007f9c9c62b91f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#36 0x00007f9c9cda5324 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#37 0x00007f9c9cc65976 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#38 0x00007f9c9cc67a83 in gtk_main_do_event () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#39 0x00007f9c9c969465 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#40 0x00007f9c9c99a112 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#41 0x00007f9c9c85ef2e in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007f9c9c85f1c8 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x00007f9c9c85f25c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#44 0x00007f9c9c71f99d in g_application_run () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#45 0x0000562572fc6c15 in main ()



Core was generated by `remmina'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000562572fe1735 in remmina_protocol_widget_query_feature_by_type (gp=<optimized out>, type=type@entry=REMMINA_PROTOCOL_FEATURE_TYPE_SCALE)
    at ./src/remmina_protocol_widget.c:523
523     ./src/remmina_protocol_widget.c: Datei oder Verzeichnis nicht gefunden.
[Current thread is 1 (Thread 0x7f9c96c2f640 (LWP 10468))]
(gdb) set width 0
(gdb) set pagination off
(gdb) directory /home/benutzer/source/remmina/orig/remmina-1.3.3+dfsg
Source directories searched: /home/benutzer/source/remmina/orig/remmina-1.3.3+dfsg:$cdir:$cwd
(gdb) bt
#0  0x0000562572fe1735 in remmina_protocol_widget_query_feature_by_type (gp=<optimized out>, type=type@entry=REMMINA_PROTOCOL_FEATURE_TYPE_SCALE) at ./src/remmina_protocol_widget.c:523
#1  0x0000562572ff09d3 in get_current_allowed_scale_mode (dynres_avail=dynres_avail@entry=0x0, scale_avail=scale_avail@entry=0x0, cnnobj=<optimized out>, cnnobj=<optimized out>) at ./src/rcw.c:378
#2  0x0000562572ff26a5 in rco_set_scrolled_policy (cnnobj=cnnobj@entry=0x5625742938a0, scrolled_window=0x562574116b10 [GtkScrolledWindow]) at ./src/rcw.c:827
#3  0x0000562572ff5a39 in rco_create_scrolled_container (cnnobj=cnnobj@entry=0x5625742938a0, view_mode=view_mode@entry=1) at ./src/rcw.c:2673
#4  0x0000562572ff63b0 in rco_append_page (cnnobj=cnnobj@entry=0x5625742938a0, notebook=notebook@entry=0x562574128730 [GtkNotebook], tab=0x5625741b25c0 [GtkBox], view_mode=view_mode@entry=1) at ./src/rcw.c:2783
#5  0x0000562572ff64f3 in rcw_initialize_notebook (to=0x562574128730 [GtkNotebook], from=0x0, cnnobj=0x5625742938a0, view_mode=1) at ./src/rcw.c:2830
#6  0x0000562572ff6bd7 in rch_create_scrolled (cnnhld=0x56257431d280, cnnobj=cnnobj@entry=0x5625742938a0) at ./src/rcw.c:3132
#7  0x0000562572ff850f in rcw_open_from_file_full (remminafile=0x562574315030, disconnect_cb=disconnect_cb@entry=0x0, data=data@entry=0x0, handler=handler@entry=0x0) at ./src/rcw.c:3830
#8  0x0000562572ff854b in rcw_open_from_file (remminafile=<optimized out>) at ./src/rcw.c:3765
#9  0x0000562572ff8566 in rcw_open_from_filename (filename=0x56257426c4f0 "/home/benutzer/.local/share/remmina/1557354339882.remmina") at ./src/rcw.c:3725
#10 0x0000562572fd4f84 in remmina_main_on_action_connection_connect (action=<optimized out>, param=<optimized out>, data=<optimized out>) at ./src/remmina_main.c:649
#14 0x00007f9c9c62b91f in <emit signal ??? on instance 0x56257410cba0 [GtkTreeView]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447
    #11 0x00007f9c9c60ec7d in g_closure_invoke (closure=0x5625741031f0, return_value=0x0, n_param_values=3, param_values=0x7ffe06996420, invocation_hint=0x7ffe069963a0) at ../../../gobject/gclosure.c:810
    #12 0x00007f9c9c622345 in signal_emit_unlocked_R (node=node@entry=0x562573f2eff0, detail=detail@entry=0, instance=instance@entry=0x56257410cba0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffe06996420) at ../../../gobject/gsignal.c:3635
    #13 0x00007f9c9c62b25e in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffe06996600) at ../../../gobject/gsignal.c:3391
#15 0x00007f9c9cd95036 in gtk_tree_view_multipress_gesture_pressed (gesture=0x56257411c900 [GtkGestureMultiPress], n_press=<optimized out>, x=<optimized out>, y=<optimized out>, tree_view=0x56257410cba0 [GtkTreeView]) at ../../../../gtk/gtktreeview.c:3373
#16 0x00007f9c9a34b8ee in ffi_call_unix64 () at ../src/x86/unix64.S:76
#17 0x00007f9c9a34b2bf in ffi_call (cif=cif@entry=0x7ffe069969d0, fn=fn@entry=0x7f9c9cd94b10 <gtk_tree_view_multipress_gesture_pressed>, rvalue=<optimized out>, avalue=avalue@entry=0x7ffe069968e0) at ../src/x86/ffi64.c:525
#18 0x00007f9c9c60f8f6 in g_cclosure_marshal_generic_va (closure=0x562573fae6e0, return_value=0x0, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=3, param_types=0x562573fa2a70) at ../../../gobject/gclosure.c:1610
#19 0x00007f9c9c60eeb6 in _g_closure_invoke_va (closure=0x562573fae6e0, return_value=0x0, instance=0x56257411c900, args=0x7ffe06996c70, n_params=3, param_types=0x562573fa2a70) at ../../../gobject/gclosure.c:873
#20 0x00007f9c9c62b32d in g_signal_emit_valist (instance=0x56257411c900, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffe06996c70) at ../../../gobject/gsignal.c:3300
#21 0x00007f9c9c62b91f in g_signal_emit (instance=instance@entry=0x56257411c900, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3447
#22 0x00007f9c9cc1f658 in gtk_gesture_multi_press_begin (gesture=0x56257411c900 [GtkGestureMultiPress], sequence=<optimized out>) at ../../../../gtk/gtkgesturemultipress.c:241
#23 0x00007f9c9c611cf2 in g_cclosure_marshal_VOID__BOXEDv (closure=0x562573f4e980, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x562574004310) at ../../../gobject/gmarshal.c:1950
#24 0x00007f9c9c60eeb6 in _g_closure_invoke_va (closure=0x562573f4e980, return_value=0x0, instance=0x56257411c900, args=0x7ffe06997020, n_params=1, param_types=0x562574004310) at ../../../gobject/gclosure.c:873
#25 0x00007f9c9c62b32d in g_signal_emit_valist (instance=0x56257411c900, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffe06997020) at ../../../gobject/gsignal.c:3300
#26 0x00007f9c9c62b91f in g_signal_emit (instance=instance@entry=0x56257411c900, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3447
#27 0x00007f9c9cc1c4fe in _gtk_gesture_set_recognized (recognized=1, sequence=0x0, gesture=0x56257411c900 [GtkGestureMultiPress]) at ../../../../gtk/gtkgesture.c:343
#28 0x00007f9c9cc1c4fe in _gtk_gesture_set_recognized (sequence=0x0, recognized=1, gesture=0x56257411c900 [GtkGestureMultiPress]) at ../../../../gtk/gtkgesture.c:329
#29 0x00007f9c9cc1c4fe in _gtk_gesture_check_recognized (gesture=gesture@entry=0x56257411c900 [GtkGestureMultiPress], sequence=sequence@entry=0x0) at ../../../../gtk/gtkgesture.c:389
#30 0x00007f9c9cc1da23 in gtk_gesture_handle_event (event=0x56257426c810, controller=0x56257411c900 [GtkGestureMultiPress]) at ../../../../gtk/gtkgesture.c:747
#31 0x00007f9c9cc1da23 in gtk_gesture_handle_event (controller=0x56257411c900 [GtkGestureMultiPress], event=0x56257426c810) at ../../../../gtk/gtkgesture.c:712
#32 0x00007f9c9cc20886 in gtk_gesture_single_handle_event (controller=0x56257411c900 [GtkGestureMultiPress], event=0x56257426c810) at ../../../../gtk/gtkgesturesingle.c:222
#33 0x00007f9c9cbe944c in gtk_event_controller_handle_event (controller=0x56257411c900 [GtkGestureMultiPress], event=event@entry=0x56257426c810) at ../../../../gtk/gtkeventcontroller.c:230
#34 0x00007f9c9cda307b in _gtk_widget_run_controllers (widget=0x56257410cba0 [GtkTreeView], event=0x56257426c810, phase=GTK_PHASE_BUBBLE) at ../../../../gtk/gtkwidget.c:7379
#39 0x00007f9c9c62b91f in <emit signal ??? on instance 0x56257410cba0 [GtkTreeView]> (instance=instance@entry=0x56257410cba0, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3447
    #35 0x00007f9c9cdf717b in _gtk_marshal_BOOLEAN__BOXED (closure=0x562573e45d70, return_value=0x7ffe069973a0, n_param_values=<optimized out>, param_values=0x7ffe06997400, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ../../../../gtk/gtkmarshalers.c:83
    #36 0x00007f9c9c60ec7d in g_closure_invoke (closure=0x562573e45d70, return_value=0x7ffe069973a0, n_param_values=2, param_values=0x7ffe06997400, invocation_hint=0x7ffe06997380) at ../../../gobject/gclosure.c:810
    #37 0x00007f9c9c621b9d in signal_emit_unlocked_R (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0x56257410cba0, emission_return=emission_return@entry=0x7ffe06997520, instance_and_params=instance_and_params@entry=0x7ffe06997400) at ../../../gobject/gsignal.c:3673
    #38 0x00007f9c9c62a94b in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffe069975d0) at ../../../gobject/gsignal.c:3401
#40 0x00007f9c9cda5324 in gtk_widget_event_internal (widget=widget@entry=0x56257410cba0 [GtkTreeView], event=event@entry=0x56257426c810) at ../../../../gtk/gtkwidget.c:7744
#41 0x00007f9c9cda743a in gtk_widget_event (widget=widget@entry=0x56257410cba0 [GtkTreeView], event=event@entry=0x56257426c810) at ../../../../gtk/gtkwidget.c:7314
#42 0x00007f9c9cc65976 in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x56257410cba0 [GtkTreeView]) at ../../../../gtk/gtkmain.c:2592
#43 0x00007f9c9cc65976 in propagate_event (widget=<optimized out>, event=0x56257426c810, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2695
#44 0x00007f9c9cc67a83 in gtk_main_do_event (event=0x56257426c810) at ../../../../gtk/gtkmain.c:1915
#45 0x00007f9c9cc67a83 in gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1685
#46 0x00007f9c9c969465 in _gdk_event_emit (event=event@entry=0x56257426c810) at ../../../../gdk/gdkevents.c:73
#47 0x00007f9c9c99a112 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../../../../../gdk/x11/gdkeventsource.c:367
#48 0x00007f9c9c85ef2e in g_main_dispatch (context=0x562573e041d0) at ../../../glib/gmain.c:3182
#49 0x00007f9c9c85ef2e in g_main_context_dispatch (context=context@entry=0x562573e041d0) at ../../../glib/gmain.c:3847
#50 0x00007f9c9c85f1c8 in g_main_context_iterate (context=context@entry=0x562573e041d0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920
#51 0x00007f9c9c85f25c in g_main_context_iteration (context=context@entry=0x562573e041d0, may_block=may_block@entry=1) at ../../../glib/gmain.c:3981
#52 0x00007f9c9c71f99d in g_application_run (application=0x562573e001a0 [GtkApplication], argc=<optimized out>, argv=0x7ffe06997a58) at ../../../gio/gapplication.c:2470
#53 0x0000562572fc6c15 in main (argc=1, argv=0x7ffe06997a58) at ./src/remmina.c:310

(gdb) display/i $pc
1: x/i $pc
=> 0x562572fe1735 <remmina_protocol_widget_query_feature_by_type+21>:   mov    0x50(%rax),%rax

(gdb) print/x $rax
$1 = 0x0

(gdb) list 512,528
512     gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget* gp, RemminaProtocolFeatureType type)
513     {
514             TRACE_CALL(__func__);
515             const RemminaProtocolFeature *feature;
516
517     #ifdef HAVE_LIBSSH
518             if (type == REMMINA_PROTOCOL_FEATURE_TYPE_TOOL &&
519                 remmina_file_get_int(gp->priv->remmina_file, "ssh_enabled", FALSE)) {
520                     return TRUE;
521             }
522     #endif
523             for (feature = gp->priv->plugin->features; feature && feature->type; feature++) {
524                     if (feature->type == type)
525                             return TRUE;
526             }
527             return FALSE;
528     }

(gdb) print gp
$2 = <optimized out>
(gdb) print feature
$3 = <optimized out>
(gdb) print type
$4 = REMMINA_PROTOCOL_FEATURE_TYPE_SCALE



(gdb) list 370,400
370     static RemminaScaleMode get_current_allowed_scale_mode(RemminaConnectionObject* cnnobj, gboolean *dynres_avail, gboolean *scale_avail)
371     {
372             TRACE_CALL(__func__);
373             RemminaScaleMode scalemode;
374             gboolean plugin_has_dynres, plugin_can_scale;
375
376             scalemode = remmina_protocol_widget_get_current_scale_mode(REMMINA_PROTOCOL_WIDGET(cnnobj->proto));
377
378             plugin_has_dynres = remmina_protocol_widget_query_feature_by_type(REMMINA_PROTOCOL_WIDGET(cnnobj->proto),
379                     REMMINA_PROTOCOL_FEATURE_TYPE_SCALE);
380
381             plugin_can_scale = remmina_protocol_widget_query_feature_by_type(REMMINA_PROTOCOL_WIDGET(cnnobj->proto),
382                     REMMINA_PROTOCOL_FEATURE_TYPE_SCALE);
383
384             /* forbid scalemode REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES when not possible */
385             if ((!plugin_has_dynres) && scalemode == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES)
386                     scalemode = REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE;
387
388             /* forbid scalemode REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED when not possible */
389             if (!plugin_can_scale && scalemode == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED)
390                     scalemode = REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE;
391
392             if (scale_avail)
393                     *scale_avail = plugin_can_scale;
394             if (dynres_avail)
395                     *dynres_avail = (plugin_has_dynres && cnnobj->dynres_unlocked);
396
397             return scalemode;
398
399     }
400



set width 0
set pagination off
directory /home/benutzer/source/remmina/orig/remmina-1.3.3+dfsg
bt


########


gdb -q --args remmina



benutzer@debian:~$ gdb -q --args remmina
Reading symbols from remmina...Reading symbols from /usr/lib/debug/.build-id/d8/e385cbb417a3f2f41d20f778f3b35a6cbebdf8.debug...done.
done.
(gdb) set width 0
(gdb) set pagination off
(gdb) directory /home/benutzer/source/remmina/orig/remmina-1.3.3+dfsg
Source directories searched: /home/benutzer/source/remmina/orig/remmina-1.3.3+dfsg:$cdir:$cwd
(gdb) b remmina_protocol_widget_query_feature_by_type
Breakpoint 1 at 0x3a720: file ./src/remmina_protocol_widget.c, line 518.
(gdb) run
Starting program: /usr/bin/remmina 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff1752700 (LWP 18995)]
[Detaching after fork from child process 18996]
[Detaching after fork from child process 18997]
[Detaching after fork from child process 18998]
[glibsecret] unable to get secret service: Kindprozess »dbus-launch« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)
Plugin entry returned false: /usr/lib/x86_64-linux-gnu/remmina/plugins/remmina-plugin-secret.so.
[Detaching after fork from child process 18999]
StatusNotifier/Appindicator support: not supported by desktop. libappindicator will try to fallback to GtkStatusIcon/xembed
[Detaching after fork from child process 19000]
[Detaching after fork from child process 19001]
[Detaching after fork from child process 19002]
[Detaching after fork from child process 19003]
WARNING: Remmina is running with a secret plugin, but it cannot connect to a secret service.

(org.remmina.Remmina:18991): Gtk-WARNING **: 00:51:29.687: gtk_menu_attach_to_widget(): menu already attached to GtkMenuItem
[New Thread 0x7fffebfff700 (LWP 19004)]

(org.remmina.Remmina:18991): libayatana-appindicator-WARNING **: 00:51:29.756: Unable to get the session bus: Kindprozess »dbus-launch« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)

(org.remmina.Remmina:18991): LIBDBUSMENU-GLIB-WARNING **: 00:51:29.756: Unable to get session bus: Kindprozess »dbus-launch« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)

Thread 1 "remmina" hit Breakpoint 1, remmina_protocol_widget_query_feature_by_type (gp=0x5555559b27c0 [RemminaProtocolWidget], type=type@entry=REMMINA_PROTOCOL_FEATURE_TYPE_SCALE) at ./src/remmina_protocol_widget.c:518
518             if (type == REMMINA_PROTOCOL_FEATURE_TYPE_TOOL &&
(gdb) print gp
$1 = 0x5555559b27c0 [RemminaProtocolWidget]
(gdb) print gp->priv
$2 = (RemminaProtocolWidgetPriv *) 0x555555b13820
(gdb) print gp->priv->plugin
$3 = (RemminaProtocolPlugin *) 0x0
(gdb) next
[Thread 0x7fffebfff700 (LWP 19004) exited]
523             for (feature = gp->priv->plugin->features; feature && feature->type; feature++) {
(gdb) next

Thread 1 "remmina" received signal SIGSEGV, Segmentation fault.
0x000055555558e735 in remmina_protocol_widget_query_feature_by_type (gp=<optimized out>, type=type@entry=REMMINA_PROTOCOL_FEATURE_TYPE_SCALE) at ./src/remmina_protocol_widget.c:523
523             for (feature = gp->priv->plugin->features; feature && feature->type; feature++) {




set width 0
set pagination off
directory /home/benutzer/source/remmina/orig/remmina-1.3.3+dfsg
b remmina_protocol_widget_query_feature_by_type
run


#######




https://sources.debian.org/src/remmina/1.3.3+dfsg-2/src/remmina_protocol_widget.c/#L523

Reply to: