[17] in Release_Engineering

home help back first fref pref prev next nref lref last post

/usr/ucb/Mail: exec I/O error mapping pages

probe@ATHENA.MIT.EDU (probe@ATHENA.MIT.EDU)
Thu Jul 7 05:01:35 1988

As there seems to be a little confusion about some of my previous messages,
I will summarize the events that have occurred and what I have found.

First, the bug is not vfork() as was originally suspected by a couple of
people.  In fact, changing vfork() to fork() had no effect on the problem
(one suspect was the virtual memory routines might not be well-designed on
the RT).

So far, I have discovered two ways to cure the problem, and this is what makes
this problem a little more confusing.  The first way I discovered was to take
out the signal blocking within the child process that exec's sendmail.  I
still don't understand why this made a difference, but removing the sigset()
statements just prior to the exec of sendmail in the file "send.c" caused the
bug to disappear.  However, I could not seem to come up with a small test
program that caused the error with all kinds of signal blocking and file
descriptor frobbing.

The second way to fix the problem was to make sure that all return values from
salloc() in "strings.c" was on a 4-byte boundary.  Since alignment is crucial
on the RT, this is much more understandable.  I have not yet traced which
variables were improperly aligned and were causing the problem.  Perhaps, when
I get a chance, I will check into this some more, but at least for now, we
have a work-a-round and also an edge into finding other programs that cause
this bug -- check for misaligned variables.

As you can no doubt guess, I therefore have a fixed "strings.c" that should
be placed in .../ucb/Mail/.  Should I go ahead and add it to the master source
tree?

-Richard

home help back first fref pref prev next nref lref last post