diff options
author | Tom Yu <tlyu@mit.edu> | 2004-02-13 03:19:30 +0000 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 2004-02-13 03:19:30 +0000 |
commit | b65814e4bc39a01bab8f93e2b995cdc3ebef8e1f (patch) | |
tree | 32462be4232cb29d3ce1fb845a1bd96cc8747f8e /src/tests/dejagnu/config | |
parent | 3772bd7c1af805fd40d5996681a1eea1c0ac8f0a (diff) | |
download | krb5-b65814e4bc39a01bab8f93e2b995cdc3ebef8e1f.tar.gz krb5-b65814e4bc39a01bab8f93e2b995cdc3ebef8e1f.tar.xz krb5-b65814e4bc39a01bab8f93e2b995cdc3ebef8e1f.zip |
priocntl workaround for Solaris 9 pty-close bug
Implement gross hack to use priocntl to work around the Solaris 9
pty-close bug. Run expect at a higher class "FX" priority than
spawned processes, which run at a lower class "FX" priority. "make
check" needs to start from a process which has FX priority >= 30 and
FX priority limit >= 30. Thanks to Bill Sommerfeld for the hints.
ticket: new
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16069 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/tests/dejagnu/config')
-rw-r--r-- | src/tests/dejagnu/config/ChangeLog | 5 | ||||
-rw-r--r-- | src/tests/dejagnu/config/default.exp | 38 |
2 files changed, 43 insertions, 0 deletions
diff --git a/src/tests/dejagnu/config/ChangeLog b/src/tests/dejagnu/config/ChangeLog index 9396e5eb9..db49f5578 100644 --- a/src/tests/dejagnu/config/ChangeLog +++ b/src/tests/dejagnu/config/ChangeLog @@ -1,3 +1,8 @@ +2004-02-12 Tom Yu <tlyu@mit.edu> + + * default.exp (PRIOCNTL_HACK): Wrap "spawn" to do priocntl things + to work around Solaris 9 pty-close bug. + 2003-12-13 Ken Raeburn <raeburn@mit.edu> * default.exp (passes): Add an AES-only pass. diff --git a/src/tests/dejagnu/config/default.exp b/src/tests/dejagnu/config/default.exp index 215671d34..68b551d69 100644 --- a/src/tests/dejagnu/config/default.exp +++ b/src/tests/dejagnu/config/default.exp @@ -54,6 +54,44 @@ if 0 { } } +# Hack around Solaris 9 kernel race condition that causes last output +# from a pty to get dropped. +if { $PRIOCNTL_HACK } { + catch {exec priocntl -s -c FX -m 30 -p 30 -i pid [getpid]} + rename spawn oldspawn + proc spawn { args } { + upvar 1 spawn_id spawn_id + set newargs {} + set inflags 1 + set eatnext 0 + foreach arg $args { + if { $arg eq "-ignore" || + $arg eq "-open" || + $arg eq "-leaveopen" } { + lappend newargs $arg + set eatnext 1 + continue + } + if [string match "-*" $arg] { + lappend newargs $arg + continue + } + if { $eatnext } { + set eatnext 0 + lappend newargs $arg + continue + } + if { $inflags } { + set inflags 0 + set newargs [concat $newargs {priocntl -e -c FX -p 0}] + } + lappend newargs $arg + } + set pid [eval oldspawn $newargs] + return $pid + } +} + # The des.des3-tgt.no-kdc-des3 pass will fail if the KDC doesn't # constrain ticket key enctypes to those in permitted_enctypes. It # does this by not putting des3 in the permitted_enctypes, while |