Subject: xsrc/26998: xdm segmentation fault when serving remote terminals through Xchooser
To: None <gnats-bugs@gnats.NetBSD.org>
From: Gregory McGarry <g.mcgarry@ieee.org>
List: netbsd-bugs
Date: 09/19/2004 17:34:09
>Number:         26998
>Category:       xsrc
>Synopsis:       xdm segmentation fault when serving remote terminals through Xchooser
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    xsrc-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Sep 19 17:35:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Gregory McGarry
>Release:        NetBSD 2.0_BETA
>Organization:
>Environment:
NetBSD/i386 host, X-win32 client
>Description:
xdm segfaults when trying to attach from a remote terminal through Xchooser.

Add the following line to /usr/X11R6/lib/X11/xdm/xdm-config for the additional debugging information:

DisplayManager.debugLevel:      100

Enable the Xchooser in /usr/X11R6/lib/X11/xdm/Xaccess:

-#*             CHOOSER BROADCAST       #any indirect host can get a chooser
+*              CHOOSER BROADCAST       #any indirect host can get a chooser

Output:

Starting xdm.
DisplayManager.errorLogFile/DisplayManager.ErrorLogFile value  /var/log/xdm.log
DisplayManager.daemonMode/DisplayManager.DaemonMode value true
DisplayManager.pidFile/DisplayManager.PidFile value  /var/run/xdm.pid
DisplayManager.lockPidFile/DisplayManager.LockPidFile value true
DisplayManager.authDir/DisplayManager.authDir value /usr/X11R6/lib/X11/xdm
DisplayManager.autoRescan/DisplayManager.AutoRescan value true
DisplayManager.removeDomainname/DisplayManager.RemoveDomainname value true
DisplayManager.keyFile/DisplayManager.KeyFile value  /usr/X11R6/lib/X11/xdm/xdm-keys
DisplayManager.accessFile/DisplayManager.AccessFile value  /usr/X11R6/lib/X11/xdm/Xaccess
DisplayManager.exportList/DisplayManager.ExportList value
DisplayManager.greeterLib/DisplayManager.GreeterLib value /usr/X11R6/lib/X11/xdm/libXdmGreet.so
DisplayManager.choiceTimeout/DisplayManager.ChoiceTimeout value 15
DisplayManager.sourceAddress/DisplayManager.SourceAddress value false
DisplayManager.willing/DisplayManager.Willing value  su -m nobody -c /usr/X11R6/lib/X11/xdm/Xwilling
Created chooser socket 4
creating socket to listen on port 177 of address 0.0.0.0
WaitForSomething
select returns 1.  Rescan: 0  ChildReady: 0
ProcessRequestSocket
header: 1 3 1
Indirect respond 1
ConvertAddr returning 0 for family 2
xdm error (pid 201): Cannot convert Internet address 192.168.64.106 to host name
ConvertAddr returning 0 for family 2
all_query_respond: conntype=0, addr=192.168.64.106, len=4
Send willing  1 user, load: 0.08, 0.11, 0.05
signals blocked
WaitForSomething
select returns 1.  Rescan: 0  ChildReady: 0
ProcessRequestSocket
header: 1 3 1
Indirect respond 1
ConvertAddr returning 0 for family 2
xdm error (pid 201): Cannot convert Internet address 192.168.64.106 to host name
ConvertAddr returning 0 for family 2
all_query_respond: conntype=0, addr=192.168.64.106, len=4
Send willing  1 user, load: 0.08, 0.11, 0.05
signals blocked
WaitForSomething
select returns 1.  Rescan: 0  ChildReady: 0
ProcessRequestSocket
header: 1 3 1
Indirect respond 1
ConvertAddr returning 0 for family 2
xdm error (pid 201): Cannot convert Internet address 192.168.64.106 to host name
ConvertAddr returning 0 for family 2
all_query_respond: conntype=0, addr=192.168.64.106, len=4
Send willing  1 user, load: 0.07, 0.10, 0.05
signals blocked
WaitForSomething
select returns 1.  Rescan: 0  ChildReady: 0
ProcessRequestSocket
header: 1 3 1
Indirect respond 1
ConvertAddr returning 0 for family 2
xdm error (pid 201): Cannot convert Internet address 192.168.64.106 to host name
ConvertAddr returning 0 for family 2
all_query_respond: conntype=0, addr=192.168.64.106, len=4
Send willing  1 user, load: 0.07, 0.10, 0.05
signals blocked
WaitForSomething
select returns 1.  Rescan: 0  ChildReady: 0
ProcessRequestSocket
header: 1 7 39
Request respond 39
FindProtoDisplay
NewProtoDisplay
NewProtoDisplay 0x8068b00
Got 0x80690e0 (18 MIT-MAGIC-COOKIE-1)
Accept Session ID 261488001
WaitForSomething
select returns 1.  Rescan: 0  ChildReady: 0
ProcessRequestSocket
header: 1 10 23
Manage 23
FindProtoDisplay
Manage Session ID 261488001, pdpy 0x8068b00
Computed display name: 192.168.64.106:0
ConvertAddr returning 0 for family 2
IsIndirectClient
xdm error (pid 201): Cannot convert Internet address 192.168.64.106 to host name
Use chooser for 192.168.64.106:0
Starting display 192.168.64.106:0,MIT-unspecified
StartDisplay 192.168.64.106:0
DisplayManager.192_168_64_106_0.serverAttempts/DisplayManager.MIT-unspecified.ServerAttempts value 1
DisplayManager.192_168_64_106_0.openDelay/DisplayManager.MIT-unspecified.OpenDelay value 15
DisplayManager.192_168_64_106_0.openRepeat/DisplayManager.MIT-unspecified.OpenRepeat value 5
DisplayManager.192_168_64_106_0.openTimeout/DisplayManager.MIT-unspecified.OpenTimeout value 120
DisplayManager.192_168_64_106_0.startAttempts/DisplayManager.MIT-unspecified.StartAttempts value 4
DisplayManager.192_168_64_106_0.pingInterval/DisplayManager.MIT-unspecified.PingInterval value 5
DisplayManager.192_168_64_106_0.pingTimeout/DisplayManager.MIT-unspecified.PingTimeout value 5
DisplayManager.192_168_64_106_0.terminateServer/DisplayManager.MIT-unspecified.TerminateServer value false
DisplayManager.192_168_64_106_0.grabServer/DisplayManager.MIT-unspecified.GrabServer value false
DisplayManager.192_168_64_106_0.grabTimeout/DisplayManager.MIT-unspecified.GrabTimeout value 3
DisplayManager.192_168_64_106_0.resetSignal/DisplayManager.MIT-unspecified.Signal value 1
DisplayManager.192_168_64_106_0.termSignal/DisplayManager.MIT-unspecified.Signal value 15
DisplayManager.192_168_64_106_0.resetForAuth/DisplayManager.MIT-unspecified.ResetForAuth value false
DisplayManager.192_168_64_106_0.authorize/DisplayManager.MIT-unspecified.Authorize value  true
DisplayManager.192_168_64_106_0.authComplain/DisplayManager.MIT-unspecified.AuthComplain value  true
DisplayManager.192_168_64_106_0.authName/DisplayManager.MIT-unspecified.AuthName value XDM-AUTHORIZATION-1 MIT-MAGIC-COOKIE-1
DisplayManager.192_168_64_106_0.authFile/DisplayManager.MIT-unspecified.AuthFile value
File: /usr/X11R6/lib/X11/xdm/authdir/authfiles/A192.168.64.106:0-00201a auth: 0x8064c40
DisplayManager.192_168_64_106_0.resources/DisplayManager.MIT-unspecified.Resources value  /usr/X11R6/lib/X11/xdm/Xresources
DisplayManager.192_168_64_106_0.xrdb/DisplayManager.MIT-unspecified.Xrdb value /usr/X11R6/bin/xrdb
DisplayManager.192_168_64_106_0.setup/DisplayManager.MIT-unspecified.Setup value
DisplayManager.192_168_64_106_0.startup/DisplayManager.MIT-unspecified.Startup value
DisplayManager.192_168_64_106_0.reset/DisplayManager.MIT-unspecified.Reset value
DisplayManager.192_168_64_106_0.session/DisplayManager.MIT-unspecified.Session value  /usr/X11R6/lib/X11/xdm/Xsession
DisplayManager.192_168_64_106_0.userPath/DisplayManager.MIT-unspecified.Path value /bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/usr/X11R6/bin
DisplayManager.192_168_64_106_0.systemPath/DisplayManager.MIT-unspecified.Path value /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
DisplayManager.192_168_64_106_0.systemShell/DisplayManager.MIT-unspecified.Shell value /bin/sh
DisplayManager.192_168_64_106_0.failsafeClient/DisplayManager.MIT-unspecified.FailsafeClient value /usr/X11R6/bin/xterm
DisplayManager.192_168_64_106_0.userAuthDir/DisplayManager.MIT-unspecified.UserAuthDir value /tmp
DisplayManager.192_168_64_106_0.chooser/DisplayManager.MIT-unspecified.Chooser value  /usr/X11R6/libexec/chooser
Before XOpenDisplay(192.168.64.106:0)
After XOpenDisplay(192.168.64.106:0)
Got remote address 192.168.64.106:0 16
RunChooser 192.168.64.106:0
Loading resource file: /usr/X11R6/lib/X11/xdm/Xresources
Chooser socket port: 65533
[1]   Segmentation fault (core dumped) /usr/X11R6/bin/xdm

GDB says:
#0  0x0804bb2c in getLocalAddress ()
(gdb) bt
#0  0x0804bb2c in getLocalAddress ()
#1  0x0804e6a1 in FormatChooserArgument ()
#2  0x0804ebb6 in RunChooser ()
#3  0x0804f8df in StartDisplay ()
#4  0x08055b72 in manage ()
#5  0x08054b34 in ProcessRequestSocket ()
#6  0x08053a5d in ProcessListenSockets ()
#7  0x08054c03 in WaitForSomething ()
#8  0x0804ee9c in main ()
#9  0x0804b8a2 in ___start ()


>How-To-Repeat:
Run XDM with chooser.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted: