[gdm-list] [Fwd: About GDM XDMCP]



Hi Mario,

I'm just forwarding this mail to the list so others can jump into the
conversation.

--Ray

-------- Forwarded Message --------
From: mariodebian <mariodebian gmail com>
To: rstrode redhat com
Subject: About GDM XDMCP
Date: Wed, 16 Jun 2010 21:15:27 +0200

Hi

First of all excuse me to send this mail to you directly instead of
using GNOME bugzilla.


I'm trying to run GDM with XDMCP in a Debian unstable system 

(gdm is build with enable-ipv6=yes and Debian and
set /proc/sys/net/ipv6/bindv6only to 1


with gdm 2.30.2

See this bug:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=579033


without patches log says

gdm3[21907]: DEBUG(+): GdmXdmcpDisplayFactory: decode_packet:
GIOCondition 1
gdm3[21907]: DEBUG(+): GdmXdmcpDisplayFactory: Could not create XDMCP
buffer!

I compare GDM code with XDM or KDM and found that socket len variable is
initialized before calling XdmcpFill()

I just found this commit in git:

http://git.gnome.org/browse/gdm/commit/?id=86ac166294f0fc8f662031167066acf1928cf139


and tried with bad results... 
gdm crash (see attached gdm.xdmcp.crash.txt)

My patch (95_xdmcp_fill_fix.patch) add more debug info in
decode_packet() function and gdm-address.c


I discover another bug in common/gdm-address.c

in gdm_address_debug() you call _gdm_address_debug with ¿local vars? and
_gdm_debug_address don't show hostname, hosts or port.

In gdm_address_debug the vars are printed OK.

Why this code ????

        hostname = NULL;
        host = NULL;
        port = NULL;

in _gdm_debug_address()


NOTE:

   I run "Xephyr :1 -query 192.168.0.3"

192.168.0.3 is when GDM runs with XDMCP enabled


WILLING is not send



Thanks for your work in GDM

Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): GdmXdmcpDisplayFactory: decode_packet: GIOCondition 1
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): decode_packet() XdmcpFill done
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): decode_packet() XdmcpReadHeader done
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): decode_packet() gdm_address_new_from_sockaddr done
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_get_numeric_info() return host=::ffff:192.168.0.3 port=36315 res(getnameinfo)=0 return=1
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_debug() hostname=thinkpad host=::ffff:192.168.0.3 port=36315
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_get_numeric_info() return host=127.0.0.1 port=0 res(getnameinfo)=0 return=1
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_debug() hostname=localhost host=127.0.0.1 port=0
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): Address family:2 (inet) hostname:(null) host:(null) port:(null) local:1 loopback:1
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_get_numeric_info() return host=192.168.0.3 port=0 res(getnameinfo)=0 return=1
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_debug() hostname=thinkpad host=192.168.0.3 port=0
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): Address family:2 (inet) hostname:(null) host:(null) port:(null) local:0 loopback:0
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): GdmAddress: looking up hostname: thinkpad
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=1 protocol=6 flags=0x2 canonname=localhost#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=2 protocol=17 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=3 protocol=0 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=1 protocol=6 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=2 protocol=17 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=3 protocol=0 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=1 protocol=6 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=2 protocol=17 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): family=2 sock_type=3 protocol=0 flags=0x2 canonname=(null)#012
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): Address family:10 (inet6) hostname:(null) host:(null) port:(null) local:0 loopback:0
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): gdm_address_get_numeric_info() return host=::ffff:192.168.0.3 port=36315 res(getnameinfo)=0 return=1
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): decode_packet() gdm_address_get_numeric_info res=1 host=::ffff:192.168.0.3 port=36315
Jun 16 19:28:09 localhost gdm3[25814]: DEBUG(+): GdmXdmcpDisplayFactory: Received opcode QUERY from client ::ffff:192.168.0.3 : 36315
Jun 16 19:28:09 localhost gdm[25875]: ******************* START **********************************
Jun 16 19:28:09 localhost gdm[25875]: [Thread debugging using libthread_db enabled]
Jun 16 19:28:09 localhost gdm[25875]: [New Thread 0xb709ab70 (LWP 25819)]
Jun 16 19:28:09 localhost gdm[25875]: 0xb7825424 in __kernel_vsyscall ()
Jun 16 19:28:09 localhost gdm[25875]: #0  0xb7825424 in __kernel_vsyscall ()
Jun 16 19:28:09 localhost gdm[25875]: #1  0xb7659f4b in waitpid () at ../sysdeps/unix/syscall-template.S:82
Jun 16 19:28:09 localhost gdm[25875]: #2  0x08061ad1 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: #3  0x08061bc1 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: #4  <signal handler called>
Jun 16 19:28:09 localhost gdm[25875]: #5  0x0805e869 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: #6  0x0805923d in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: #7  0x0805c7f3 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: #8  0xb74f769b in ?? () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: #9  0xb74b32f5 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: #10 0xb74b6fd8 in ?? () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: #11 0xb74b7517 in g_main_loop_run () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: #12 0x0804dbce in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: #13 0xb733ac76 in __libc_start_main (main=0x804d4e0, argc=1, 
Jun 16 19:28:09 localhost gdm[25875]:     ubp_av=0xbfeab494, init=0x80635c0, fini=0x80635b0, 
Jun 16 19:28:09 localhost gdm[25875]:     rtld_fini=0xb78340d0 <_dl_fini>, stack_end=0xbfeab48c) at libc-start.c:228
Jun 16 19:28:09 localhost gdm[25875]: #14 0x0804ce21 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: 
Jun 16 19:28:09 localhost gdm[25875]: Thread 2 (Thread 0xb709ab70 (LWP 25819)):
Jun 16 19:28:09 localhost gdm[25875]: #0  0xb7825424 in __kernel_vsyscall ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #1  0xb765909b in read () at ../sysdeps/unix/syscall-template.S:82
Jun 16 19:28:09 localhost gdm[25875]: No locals.
Jun 16 19:28:09 localhost gdm[25875]: #2  0xb74b442d in ?? () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #3  0xb74dd69f in ?? () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #4  0xb7651955 in start_thread (arg=0xb709ab70) at pthread_create.c:300
Jun 16 19:28:09 localhost gdm[25875]:         __res = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]:         __ignore1 = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]:         __ignore2 = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]:         pd = 0xb709ab70
Jun 16 19:28:09 localhost gdm[25875]:         now = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]: 4001536, 
Jun 16 19:28:09 localhost gdm[25875]: mask_was_saved = 0}}, 
Jun 16 19:28:09 localhost gdm[25875]: 0x0}, data = {prev = 0x0, 
Jun 16 19:28:09 localhost gdm[25875]: canceltype = 0}}}
Jun 16 19:28:09 localhost gdm[25875]:         not_first_call = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]:         freesize = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]: 
Jun 16 19:28:09 localhost gdm[25875]: #5  0xb73f010e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
Jun 16 19:28:09 localhost gdm[25875]: No locals.
Jun 16 19:28:09 localhost gdm[25875]: 
Jun 16 19:28:09 localhost gdm[25875]: Thread 1 (Thread 0xb7250720 (LWP 25814)):
Jun 16 19:28:09 localhost gdm[25875]: #0  0xb7825424 in __kernel_vsyscall ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #1  0xb7659f4b in waitpid () at ../sysdeps/unix/syscall-template.S:82
Jun 16 19:28:09 localhost gdm[25875]: No locals.
Jun 16 19:28:09 localhost gdm[25875]: #2  0x08061ad1 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #3  0x08061bc1 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #4  <signal handler called>
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #5  0x0805e869 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #6  0x0805923d in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #7  0x0805c7f3 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #8  0xb74f769b in ?? () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #9  0xb74b32f5 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #10 0xb74b6fd8 in ?? () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #11 0xb74b7517 in g_main_loop_run () from /lib/libglib-2.0.so.0
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #12 0x0804dbce in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: #13 0xb733ac76 in __libc_start_main (main=0x804d4e0, argc=1, 
Jun 16 19:28:09 localhost gdm[25875]:     ubp_av=0xbfeab494, init=0x80635c0, fini=0x80635b0, 
Jun 16 19:28:09 localhost gdm[25875]:     rtld_fini=0xb78340d0 <_dl_fini>, stack_end=0xbfeab48c) at libc-start.c:228
Jun 16 19:28:09 localhost gdm[25875]:         result = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]: 0, 
Jun 16 19:28:09 localhost gdm[25875]: mask_was_saved = 0}}, 
Jun 16 19:28:09 localhost gdm[25875]: 0x804ce00}, data = {prev = 0x0, 
Jun 16 19:28:09 localhost gdm[25875]: canceltype = 1}}}
Jun 16 19:28:09 localhost gdm[25875]:         not_first_call = <value optimized out>
Jun 16 19:28:09 localhost gdm[25875]: #14 0x0804ce21 in ?? ()
Jun 16 19:28:09 localhost gdm[25875]: No symbol table info available.
Jun 16 19:28:09 localhost gdm[25875]: A debugging session is active.
Jun 16 19:28:09 localhost gdm[25875]: 
Jun 16 19:28:09 localhost gdm[25875]: #011Inferior 1 [process 25814] will be detached.
Jun 16 19:28:09 localhost gdm[25875]: 
Jun 16 19:28:09 localhost gdm[25875]: Quit anyway? (y or n) [answered Y; input not from terminal]
Jun 16 19:28:09 localhost gdm[25875]: ******************* END **********************************

Index: gdm3-2.30.2/daemon/gdm-xdmcp-display-factory.c
===================================================================
--- gdm3-2.30.2.orig/daemon/gdm-xdmcp-display-factory.c	2010-06-16 16:25:41.000000000 +0200
+++ gdm3-2.30.2/daemon/gdm-xdmcp-display-factory.c	2010-06-16 19:46:53.000000000 +0200
@@ -2887,12 +2887,15 @@
                 return TRUE;
         }
 
+        ss_len = (int)gdm_sockaddr_len (&clnt_ss);
+
         res = XdmcpFill (factory->priv->socket_fd, &factory->priv->buf, (XdmcpNetaddr)&clnt_ss, &ss_len);
         if G_UNLIKELY (! res) {
                 g_debug ("GdmXdmcpDisplayFactory: Could not create XDMCP buffer!");
                 return TRUE;
         }
-        ss_len = (int)gdm_sockaddr_len (&clnt_ss);
+
+        g_debug("decode_packet() XdmcpFill done");
 
         res = XdmcpReadHeader (&factory->priv->buf, &header);
         if G_UNLIKELY (! res) {
@@ -2900,6 +2903,8 @@
                 return TRUE;
         }
 
+        g_debug("decode_packet() XdmcpReadHeader done");
+
         if G_UNLIKELY (header.version != XDM_PROTOCOL_VERSION &&
                        header.version != GDM_XDMCP_PROTOCOL_VERSION) {
                 g_warning (_("XMDCP: Incorrect XDMCP version!"));
@@ -2912,11 +2917,14 @@
                 return TRUE;
         }
 
+        g_debug("decode_packet() gdm_address_new_from_sockaddr done");
+
         gdm_address_debug (address);
 
         host = NULL;
         port = NULL;
         gdm_address_get_numeric_info (address, &host, &port);
+        g_debug("decode_packet() gdm_address_get_numeric_info host=%s port=%s", host, port);
 
         g_debug ("GdmXdmcpDisplayFactory: Received opcode %s from client %s : %s",
                  opcode_string (header.opcode),
Index: gdm3-2.30.2/common/gdm-address.c
===================================================================
--- gdm3-2.30.2.orig/common/gdm-address.c	2010-06-16 16:25:35.000000000 +0200
+++ gdm3-2.30.2/common/gdm-address.c	2010-06-16 19:47:24.000000000 +0200
@@ -252,6 +252,8 @@
         gdm_address_get_hostname (address, &hostname);
         gdm_address_get_numeric_info (address, &host, &port);
 
+        g_debug("gdm_address_debug() hostname=%s host=%s port=%s", hostname, host, port);
+
         _gdm_address_debug (address, hostname, host, port);
 }
 
@@ -336,6 +338,7 @@
                 *hostp = g_strdup (host);
         }
 
+	g_debug("gdm_address_get_numeric_info() return host=%s port=%s res(getnameinfo)=%d return=%d", *hostp, *servp, res, ret);
         return ret;
 }
 


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