You've certainly found a bug - nice detective work. That block of code is designed to handle GDM, and was originally written for Linux, where "awk" follows GNU. This is one of those cases where the GDM support code needs to be generalized a bit for the Solaris environment, and we (OK, "I" :) missed this one so far. That's why this isn't supported in the product yet, we still have work to do. I appreciate the assist. I'll file a bug and make sure to follow it up, and will update the "recipe" on the Wiki for now.

The solution in this case, I believe, is for us to use a build-time macro which resolves to nawk on Solaris and gawk on Linux - we do that in other similar instances.

You can go ahead and change "awk" to "nawk" as a workaround (without touching PATH - we don't want to deliberately rely on GNU utilities).

Thanks,
  Bob

Kevin Farrell wrote:
After a couple hours of staring at truss output, I think I have this one solved.

I tracked the error message down to the /opt/SUNWut/lib/dtutsession script. There is a piece of code to find the token id based on the display number:

# If we know the display (only possible for a delete), derive the token
if [[ -z "$tid" && -n "$dpyparm" ]]
then
        tid=$(awk -F[=] '$1 == "TOKEN" {print $2}' ${DISPDIR}/${dpyparm})
        if [[ -z "$tid" ]]
        then
                # If we can't get the token from the display file, try
                # to get it from Xconfig
tid=$(sed -n "s/^Dtlogin\.\*_${dpyparm}\.environment:.*\<SUN_SUNRAY_TOKEN=\([^ ]*\).*/\1/p" $Xconfig)
        fi
        if [[ -z "$tid" ]]
        then
logIt error "Can't delete session for display ${dpyparm}: can't determine token."
                exit 2
        fi
fi




So I ran the awk command myself from the commandline:
r...@vm:/tmp# awk -F[=] '$1 == "TOKEN" {print $2}' /var/opt/SUNWut/displays/11
pseudo.00144fa7e27e

That seemed to work fine... so I looked at the truss output from the utsession -k -d 11 command and noticed this:

8234:   execve("/bin/awk", 0x00418AC8, 0x00418B18)  argc = 4
8234:    argv: awk -F[=] $1 == "TOKEN" {print $2}
8234:     /var/opt/SUNWut/displays/11

r...@vm:/tmp# which awk
/usr/gnu/bin/awk

So it looks like utdtsession is running a different awk then I was.
So I ran truss with the awk command:

r...@vm:/tmp# truss -f -a -e -rall -wall awk -F[=] '$1 == "TOKEN" {print $2}' /var/opt/SUNWut/displays/11
8322:   execve("/usr/bin/gawk", 0x08047CEC, 0x08047D00)  argc = 4
8322:    argv: awk -F[=] $1 == "TOKEN" {print $2}
8322:     /var/opt/SUNWut/displays/11


Just to make sure:
r...@vm:/tmp# /bin/awk -F[=] '$1 == "TOKEN" {print $2}' /var/opt/SUNWut/displays/11
r...@vm:/tmp#


Sure enough, /bin/awk doesn't function the same way as gawk.

I saw that the PATH was being set at the top of utdtsession:
PATH=/bin:/usr/bin:/usr/X11R6/bin

So I commented out that line and utsession -k works now.



Sorry for the long email, maybe this will help someone else. Or maybe I missed a step in configuring my SRSS box...


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

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

Reply via email to