[1495] in Kerberos_V5_Development
Things breaking for me
daemon@ATHENA.MIT.EDU (Sam Hartman)
Sun Aug 4 01:51:51 1996
Date: Sun, 4 Aug 1996 01:51:47 -0400
From: Sam Hartman <hartmans@MIT.EDU>
To: krbcore@MIT.EDU
First, I have given up on Linux for the present until someone
looks at the db and concludes that db failing its tests is not
contributing significantly to the general instability of kdb5_edit,
kadmind and krb5kdc, or they fix the problem. Basically, everything
builds (once db support is removed from krb5_aname_to_localname) but
make check fails with random core dumps in unusual ways.
I have everything building for AIX, and with the minor
exception of the tests not working, I believe it all works. (I
consider it a minor exception because I am fairly certain the tests
are broken, not the code--see below). I will commit changes needed
for AIX and Linux to build.
These two builds have taken enough time that I haven't gotten
a chance to look at any of the other platforms for the krb5 locker.
As I mentioned previously, lib/kdb/t_kdb.c needs works
supporting new interfaces; it fails to compile on all platforms.
I am having a deadlock condition with the tests under AIX.
Basically, rsh.exp waits indefinitely trying to add the host
principal. Apparently, in add_random_key or add_kerberos_key (in
default.exp), the test attempts to trap error messages indicating the
principal already exists and consider these successful.
Unfortunately, it doesn't read the entire error message, but instead
stops at the word creating. The error message continues, containing
the principal name that is created.
After trapping this error message, the test waits for kadmin
to exit. This doesn't happen until kadmin finishes writing all its
output to stdout, which it cannot do because apparently it is waitinf
ro the output to be read. (I'm not convinced this is legal under
Posix for such a short message, but am fairly certain this is the
problem.)
My first solution was to add a wildcard onto the expect
pattern that matches the principal already exists error.
Unfortunately, if I do this, I get the following helpful Dejagnu
error:
add_principal: Principal or policy already exists while creating "hartmans@KRBTEST.COM".
ERROR: (DejaGnu) proc "z" does not exist
The error code is NONE
The info on the error is:
close: invalid spawn id (8)
while executing
"close -i 8"
What is happening is that since expect reads an EOF from
kadmin, it closes the spawn ID. Then, after waitinf for kadmin's exit
status, check_exit_status executes
catch "close -i $spawn_id"
Even though this error is being cought, it still aborts the
test. It is beyond my understanding of Dejagnu to figure out what is
going on here.
I also tried moving the close before the wait in
check_exit_status, but this doesn't work because kadmin dies with a
SIGPIPE. I don't know a good way of fixing this, so someone who
understands the tests better than I should have a crack at it.