Mailing List Archive

Support open source code!


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kill(2)



SN Diamond <Norman.Diamond@example.com> writes in tlug@example.com:

> I nominate that for "worst abuse of the rules."

:-)

> (Abuse of what rules?  It doesn't matter.  ANY rules.)

Oh no.  It's not even close ...  The story I am about to write is a
true story.  The names have been changed to protect the guilty.

Back when I working for a major DOD contractor, they were simultaneously
going from using mostly VAX/VMS & Fortran to Unix (HP/UX as it turns
out) & Ada.  At this time, there was severe lack of experienced Unix
people and of course we were all put into rush courses to learn Ada.
One particular project was experiencing some difficulty with a demo
they were putting together.  This was the first time any of the
programmers had used either Ada, or the brand new Motif UI toolkit.

They decided to make every screen widget a separate Ada task
(interrupt reentrancy, what's that?).  They also decided to make this
program setuid root.  Among other bugs I had to help them fix, they
were an Ada function called DELETE that was implemented with the
unlink(2) system call.  They were calling this function on a
directory.  Since the program was setuid root, the kernel was happy to
do the unlink.  But then they were wondering why disk space kept
disappearing and why they constantly had to reboot to recover it.

Not understanding concurrency and the concept of interrupt reentrancy,
coupled with the fact that Motif is not interrupt reentract, they
failed to lock any of the graphics calls.  This produced seemingly
random results.  By the time I was called in, they had mostly ruled
out hardware failure since no matter what machine they tried, it
didn't work.  The leading candidate was sunspots affecting the
computer memory.

I was told later that the reason why they did it this way was for
efficiency.  Whatever.

Anyway, there it is.  A $20,000,000 contract dependent upon a graphics
program with maybe the most ridiculous architecture of all time, Ada
tasks are relatively heavy weight, using Motif and setuid root.  This
is my candidate for "worst abuse of the rules".


Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links