OK, maybe I jumped to the loginGUI-related 26D too quickly. Let's try again:

Klas Heggemann wrote:
Looking through the list archive, it seems to be possible to get
srss 4.1 working on Opensolaris 2009.06 on x86 with some tweaking. However I still have some trouble with this. i got this working on 2008.5, but just recently upgraded to 2009.06. I've reinstalled srss 4.1, and tried the tricks I've found here, but no success.

Upon reboot, sunrays are found and entry in Xserver looks like

:5 SunRay lo...@none /etc/opt/SUNWut/basedir/lib/utxsun :5 -nobanner

Which is the same as my sparc solaris 10 host.
Client then hang with a 26D error.

Doing a cold utrestart Xserver-file look like
:12 SunRay local /usr/X11R6/bin/Xnewt :12
but there is no Xnewt in /usr/X11R6/bin and clients still stops on
26D.

This looks odd, but is actually nothing to worry about. Xservers isn't used by any part of OpenSolaris, it's just bookkeeping for SRSS and obviously there's some sloppiness about some of the bookkeeping that's not essential to the system operation. We actually only care about which displays are in use by gdm and which by NSCM (i.e. "RESERVED" entries in Xservers).

The control of gdm is via the gdmdynamic program, not the Xservers file. We always use the utxsun wrapper when interfacing with gdm (see /opt/SUNWut/lib/xmgr/gdm/notify).

I tried to symlink to the Xnewt binary, or use a script like utxsun, but
no success, Anyone have any clues on what to look for?

Don't pursue this route, it's a dead-end.
Is there an Xnewt process running?
What do utwho -c and gdmdynamic -l report?
Do you see anything interesting in the files in /var/log/gdm (obviously :0 is uninteresting)?

Attached is a script I wrote to highlight inconsistencies in the operational state of the system in cases like this. Try running it as root.

If any Linux jocks want to take a crack at porting this to Linux that'd be great. I've been unable to find anything on Linux similar to "pargs" on OpenSolaris that can actually show me the current environment of a running process (ps ewww only shows the environment that was inherited by the process, not its current environment, and I haven't managed to get what I want out of /proc yet either). We need to see the current environment value of $DISPLAY to deduce which display an Xnewt process is managing.

-Bob


/Klas



_______________________________________________
SunRay-Users mailing list
[email protected]
http://www.filibeto.org/mailman/listinfo/sunray-users

#!/bin/ksh

#
# isGdmSyncedWithSRSS
# Cross-correlate the information regarding gdm sessions:
# - gdm-binary processes
# - entries in Xservers file
# - entries in /var/opt/SUNWut/displays directory
# - gdmdynamic configuration report
# Report any discrepancies
#
# Options:
# -v report gdm-managed displays
# -p (with -v) report corresponding gdm-binary PID
#


VERBOSE=false
PRINTPIDS=false
while getopts vp opt; do
        case $opt in
                v) VERBOSE=true;;
                p) PRINTPIDS=true;;
        esac
done

# For all gdm-binary processes, record the display it manages (ignore
# console and master process)
typeset -A GDMPROCDPYS
for proc in $(pgrep gdm-binary); do
        DPY=$(pargs -e $proc | awk '
                / DISPLAY=/{ split($0, a, ":"); print a[3] }
        ')
        if [ -n "$DPY" -a "$DPY" != 0 ]; then
                GDMPROCDPYS[$DPY]=$proc
        fi
done

# Record all gdm-managed displays in Xservers file
typeset -A XSERVERDPYS
for dpy in $(awk '
        /^:[0-9]* / { split($1, a, ":"); print a[2] }
        ' /tmp/SUNWut/config/xconfig/Xservers); do
        XSERVERDPYS[$dpy]=1
done

# Record all SRSS-managed displays for filtering purposes
typeset -A XSERVERRESERVEDDPYS
for dpy in $(awk '
        /^# :[0-9]* RESERVED/ { split($2, a, ":"); print a[2] }
        ' /tmp/SUNWut/config/xconfig/Xservers); do
        XSERVERRESERVEDDPYS[$dpy]=1
done

# Record all sessions, ignore SRSS-managed sessions (XXX what about YUV?)
typeset -A DISPLAYDPYS
for dpy in $(cd /var/opt/SUNWut/displays; ls); do
        if [ "${XSERVERRESERVEDDPYS[$dpy]}" != 1 ]; then
                DISPLAYDPYS[$dpy]=1
        fi
done

# Record displays in gdmdynamic configuration report (ignore console)
typeset -A GDMDYNDPYS
for dpy in $(gdmdynamic -l | sed 's/:\([0-9]*\)[^;]*[;]*/\1 /g'); do
        if [ $dpy != 0 ]; then
                GDMDYNDPYS[$dpy]=1
        fi
done

# Cross-correlate everything, by gdm-managed Xserver entries
for dpy in ${!xserverdp...@]}; do
        if [ ${GDMPROCDPYS[$dpy]:-unset} = unset ]; then
                print "No process for $dpy in Xservers"
        fi
        if [ ${DISPLAYDPYS[$dpy]} != 1 ]; then
                print "No display file for $dpy in Xservers"
        fi
        if [ "${GDMDYNDPYS[$dpy]}" != 1 ]; then
                print "No gdmdynamic config for $dpy in Xservers"
        fi
        if $VERBOSE; then
                PID=
                if $PRINTPIDS; then
                        PID=" ${GDMPROCDPYS[$dpy]}"
                fi
                print $dpy$PID
        fi
        unset GDMPROCDPYS[$dpy] DISPLAYDPYS[$dpy] GDMDYNDPYS[$dpy] 
XSERVERDPYS[$dpy]
done

# Any leftovers not covered in Xservers file?
err=${!gdmprocdp...@]}
if [ -n "$ERR" ]; then
        echo "The following dpys have gdm-binary procs but no entry in Xservers:
        $ERR"
fi
err=${!displaydp...@]}
if [ -n "$ERR" ]; then
        echo "The following dpys have display files but no (unreserved) entry 
in Xservers:
        $ERR"
fi
err=${!gdmdyndp...@]}
if [ -n "$ERR" ]; then
        echo "The following dpys have gdmdynamic configs but no entry in 
Xservers:
        $ERR"
fi

_______________________________________________
SunRay-Users mailing list
[email protected]
http://www.filibeto.org/mailman/listinfo/sunray-users

Reply via email to