Discussion:
YAWS
(too old to reply)
Bob Eager
2024-02-28 22:47:14 UTC
Permalink
This was another escapade on the ICL 4130 running KOS. By this time I was
a (supposedly responsible) postgraduate.

The 4130 was running out of disk space, but it was nearing the end of its
10 year funded life. It had four 2MB disks, but needed more; however, it
was not cost effective to buy more disks, and, I believe, an extra disk
controller. Indeed, I am not sure that they were even available.

Two members of staff (one being the big boss) thought up a cunning plan
for cheap disk space. This used a PDP-11 as a kind of file server. One of
the staff built a hardware interface between the 4130 and the PDP-11, and
the other wrote the link software. There was also a little extra software
in the PDP-11.

The basic idea was that the PDP-11 appeared as an extra disk - the current
disks had single digit numbers, and the disk on the PDP-11 became disk 99.
The PDP-11 ran its manufacturers' operating system - a pretty basic one
called DOS/BATCH. Filenames on the 4130 were a maximum of eight
characters, whereas they were 9 characters on the PDP-11. One could thus
directly map filenames from 36 users on the 4130 to a single user on the
PDP-11, by using the extra letter or digit to differentiate files for
different users (there were a limited number of user accounts in DOS/
BATCH).

This all worked surprisingly well. The disk on the PDP-11 was an RP02,
which was 20 megabytes; this was a vast improvement. A second disk was
added later.

Until I came along! One day, I had written a program to do something
pretty innocuous; I forget what it was. I accidentally got it into a loop
writing to a file, and managed to fill up the rest of the 20 megabytes. I
realised what I'd done, so I simply deleted the rather large output file.
This would have been OK, but ...

DOS/BATCH used the system of 'block chaining' to construct files in its
filing system. Essentially, files were linked lists of blocks, with a
bitmap or a free list recording free blocks. When I deleted my large file,
its deletion involved laboriously crawling down the very long chain of
blocks in the file, returning each one and marking it as free. This took a
long time - so long, in fact that the 4130 thought the PDP-11 had crashed.
The software was very simple - it did the easiest thing - it halted the
machine.

So I brought the University mainframe to a standstill by deleting a file.
--
Using UNIX since v6 (1975)...

Use the BIG mirror service in the UK:
http://www.mirrorservice.org
Freddy1X
2024-02-29 15:42:13 UTC
Permalink
Bob Eager wrote:

( fun story cut )

Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.

Freddy,
endless loop afficianado.

Proof of purchase is required to obtain warranty service.

/|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\|
/| I may be demented \|
/| but I'm not crazy! \|
/|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\|
* SPAyM trap: there is no X in my address *
Charlie Gibbs
2024-02-29 19:32:48 UTC
Permalink
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
Freddy,
endless loop afficianado.
If your computer's program counter is in low memory, there are
all sorts of fun ways to create loops, typically by copying
the instruction's own address into the PC. On the Univac 9300
(their answer to the IBM 360/20), this could be done by loading
a register with the address of an STH instruction (it only had
16-bit addressing) that stored the register into the program
counter. You could also use MVC to copy the address of the
instruction from an area in memory to the program counter.
For some addresses, MVN and MVZ would also work, as would
NC, OC, NI, and OI (it didn't have XC or XI, though).

The 9300 also had an Add Immediate instruction, which would
sign-extend the immediate operand and add it to the specified
halfword in memory. If this memory location was the location
of the program counter, adding -4 would back it up to the same
instruction for a one-instruction loop. I came up with a
fun variation on this one; I filled all of memory with copies
of an AI instruction that decremented the program counter by
8, rather than 4, and preceded them by an unconditional branch
to the end. The resulting loop would execute backwards.
--
/~\ Charlie Gibbs | The Internet is like a big city:
\ / <***@kltpzyxm.invalid> | it has plenty of bright lights and
X I'm really at ac.dekanfrus | excitement, but also dark alleys
/ \ if you read it the right way. | down which the unwary get mugged.
Scott Lurndal
2024-02-29 22:46:08 UTC
Permalink
Post by Charlie Gibbs
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
Freddy,
endless loop afficianado.
If your computer's program counter is in low memory, there are
all sorts of fun ways to create loops, typically by copying
the instruction's own address into the PC. On the Univac 9300
(their answer to the IBM 360/20), this could be done by loading
a register with the address of an STH instruction (it only had
16-bit addressing) that stored the register into the program
counter. You could also use MVC to copy the address of the
instruction from an area in memory to the program counter.
For some addresses, MVN and MVZ would also work, as would
NC, OC, NI, and OI (it didn't have XC or XI, though).
The 9300 also had an Add Immediate instruction, which would
sign-extend the immediate operand and add it to the specified
halfword in memory. If this memory location was the location
of the program counter, adding -4 would back it up to the same
instruction for a one-instruction loop. I came up with a
fun variation on this one; I filled all of memory with copies
of an AI instruction that decremented the program counter by
8, rather than 4, and preceded them by an unconditional branch
to the end. The resulting loop would execute backwards.
In the early unix days, we had the fork bomb:

https://en.wikipedia.org/wiki/Fork_bomb
moi
2024-02-29 23:56:20 UTC
Permalink
Post by Scott Lurndal
Post by Charlie Gibbs
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
Freddy,
endless loop afficianado.
If your computer's program counter is in low memory, there are
all sorts of fun ways to create loops, typically by copying
the instruction's own address into the PC. On the Univac 9300
(their answer to the IBM 360/20), this could be done by loading
a register with the address of an STH instruction (it only had
16-bit addressing) that stored the register into the program
counter. You could also use MVC to copy the address of the
instruction from an area in memory to the program counter.
For some addresses, MVN and MVZ would also work, as would
NC, OC, NI, and OI (it didn't have XC or XI, though).
The 9300 also had an Add Immediate instruction, which would
sign-extend the immediate operand and add it to the specified
halfword in memory. If this memory location was the location
of the program counter, adding -4 would back it up to the same
instruction for a one-instruction loop. I came up with a
fun variation on this one; I filled all of memory with copies
of an AI instruction that decremented the program counter by
8, rather than 4, and preceded them by an unconditional branch
to the end. The resulting loop would execute backwards.
https://en.wikipedia.org/wiki/Fork_bomb
And there is always:
cat x >>x
Not to be confused with
cat x >x
--
Bill F.
Lawrence D'Oliveiro
2024-03-29 03:03:09 UTC
Permalink
Post by Scott Lurndal
https://en.wikipedia.org/wiki/Fork_bomb
It still works.
Scott Lurndal
2024-03-29 14:19:18 UTC
Permalink
Post by Lawrence D'Oliveiro
Post by Scott Lurndal
https://en.wikipedia.org/wiki/Fork_bomb
It still works.
That depends entirely on how the administrator has
configured the system.

$ ulimit -a
nproc (-u) 1024
Dan Cross
2024-03-29 15:08:10 UTC
Permalink
Post by Scott Lurndal
Post by Lawrence D'Oliveiro
Post by Scott Lurndal
https://en.wikipedia.org/wiki/Fork_bomb
It still works.
That depends entirely on how the administrator has
configured the system.
$ ulimit -a
nproc (-u) 1024
A funny story about fork bombs.

I used to use a public access Unix system called "grex", based
in Ann Arbor, MI, USA (a place I've never been). It was a very
interesting experience to use a "real" timesharing machine. But
because they gave accounts to anyone who logged in and signed up
(there was a self-service account creation program that ran if
you logged in as `newuser`), there was a lot of abuse. Of
course ye olde fork bomb made a frequent appearance; to deal
with this, some staff members wrote a "fork bomb killer".

At the time I started using it, Grex ran on an aging SPARC
machine running a heavily customized instance of SunOS 4. The
fork bomb killer was implemented as a loadable kernel module:
when installed, it overwrite the entry for SYS_fork in the
kernel syscall table, and jumped to a new handler. That tried
to run the real fork, and if it failed, it incremented a
per-user count of recent fork failures; that count was decayed
over time via a periodic callout to a maintenance function.
Anyway, if the "failures over time" count exceeded some
threshold, the code walked the process table and killed any
process with owned by the current user. Incidentally, if the
kernel module was uninstalled, it put back the original fork
handler. I'm glossing over some details, of course (for
instances, superuser processes were exempt from this behavior)
but that's how it worked, to a first order approximation.

Interestingly, there was a bug: the code did not account for
`vfork`. When I pointed this out, I got back a gruff reply from
the author saying, "you can't write a fork bomb around vfork:
the parent is suspended until the child exits." Evidently, the
person who wrote this misunderstood the semantics of `vfork`;
it's true that the parent is suspended, but only until _either_
the child exits _or_ exec's something: and obviously a `vfork`
based fork-bomb could simply `exec` itself in the child. I
wrote a proof of concept that worked as expected.

To my knowledge, that was never exploited.

- Dan C.
David Lesher
2024-03-11 18:32:06 UTC
Permalink
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
--
A host is a host from coast to ***@panix.com
& no one will talk to a host that's close..........................
Unless the host (that isn't close).........................pob 1433
is busy, hung or dead....................................20915-1433
Ahem A Rivet's Shot
2024-03-11 19:01:59 UTC
Permalink
On Mon, 11 Mar 2024 18:32:06 -0000 (UTC)
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Wormed his way into the history books.
--
Steve O'Hara-Smith
Odds and Ends at http://www.sohara.org/
For forms of government let fools contest
Whate're is best administered is best - Alexander Pope
Charlie Gibbs
2024-03-12 00:10:42 UTC
Permalink
Post by Ahem A Rivet's Shot
On Mon, 11 Mar 2024 18:32:06 -0000 (UTC)
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Wormed his way into the history books.
<groan>
--
/~\ Charlie Gibbs | The Internet is like a big city:
\ / <***@kltpzyxm.invalid> | it has plenty of bright lights and
X I'm really at ac.dekanfrus | excitement, but also dark alleys
/ \ if you read it the right way. | down which the unwary get mugged.
David Lesher
2024-03-16 02:36:28 UTC
Permalink
Post by Ahem A Rivet's Shot
Wormed his way into the history books.
Sorry for the mispelang.

So when it hit, I was at an inter-agency facility for
several days of meetings.

It was populated with employees from the Community. Day 0, we
were standing in the hallway BS'ing as to WTF was going on.

I have a very sardonic sense of humor, so with a dead-pan voice
said "Wonder if the gang at DOCKMASTER launched it to help
justify their budget?"

The people from DOCKMASTER's parent Agency wanted to lynch me
right then and there. But the facility Leader type knew me well,
and while standing in his nearby office door said "Hey, that's
right, NCSC's budget comes up this FY." Group silence.

The next day, or was it the day after that, word got out about
RTM. Suddenly I was confronted with "How the %%*%^& did you
know about this?" I just said "Sorry, Need to Know..." [ALWAYS a
good answer...]

Year later, I was introduced to his father by a mutual friend
while at the Crypto Museum. I didn't bring the Worm up....
--
A host is a host from coast to ***@panix.com
& no one will talk to a host that's close..........................
Unless the host (that isn't close).........................pob 1433
is busy, hung or dead....................................20915-1433
Julieta Shem
2024-03-12 13:36:22 UTC
Permalink
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
Charlie Gibbs
2024-03-12 17:49:34 UTC
Permalink
Post by Julieta Shem
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed
'runaway' condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
An Internet pioneer, you might say:

https://en.wikipedia.org/wiki/Morris_worm
--
/~\ Charlie Gibbs | The Internet is like a big city:
\ / <***@kltpzyxm.invalid> | it has plenty of bright lights and
X I'm really at ac.dekanfrus | excitement, but also dark alleys
/ \ if you read it the right way. | down which the unwary get mugged.
Niklas Karlsson
2024-03-12 18:19:55 UTC
Permalink
Post by Charlie Gibbs
Post by Julieta Shem
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed
'runaway' condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
https://en.wikipedia.org/wiki/Morris_worm
I think Julieta may have been correcting the spelling of the middle
name.

Niklas
--
To the typical Mac end-user, Unix is mysterious, and ancient, and strong. It's
made of cast iron and the bones of heroic programmers of old.
-- Table and Chair, Slashdot
Julieta Shem
2024-03-13 18:58:39 UTC
Permalink
Post by Niklas Karlsson
Post by Charlie Gibbs
Post by Julieta Shem
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed
'runaway' condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
https://en.wikipedia.org/wiki/Morris_worm
I think Julieta may have been correcting the spelling of the middle
name.
Thank you. :)
D.J.
2024-03-13 16:45:21 UTC
Permalink
On Tue, 12 Mar 2024 17:49:34 GMT, Charlie Gibbs
Post by Charlie Gibbs
Post by Julieta Shem
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed
'runaway' condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
https://en.wikipedia.org/wiki/Morris_worm
Ah, I remember that now. The VAX at my university didn't run that
operating system, nor was it on Darpanet.
--
Jim
Ted Nolan <tednolan>
2024-03-13 16:57:02 UTC
Permalink
Post by D.J.
On Tue, 12 Mar 2024 17:49:34 GMT, Charlie Gibbs
Post by Charlie Gibbs
Post by Julieta Shem
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed
'runaway' condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
https://en.wikipedia.org/wiki/Morris_worm
Ah, I remember that now. The VAX at my university didn't run that
operating system, nor was it on Darpanet.
--
I always say Morris owes me for hernia surgery! When the worm started
hitting, one of the first things that became clear was it targeted
BSD Vax & Sun boxes. So we had a clunky Apple Mac II running A/UX
that I hoiked around the computer room to put it up as a UUCP relay
in front of our network so we could still have email on an immune
system to track worm news & fixes.

Turns out I shouldn't have lifted that Apple box..
--
columbiaclosings.com
What's not in Columbia anymore..
D
2024-03-13 18:17:05 UTC
Permalink
Post by Ted Nolan <tednolan>
Post by D.J.
On Tue, 12 Mar 2024 17:49:34 GMT, Charlie Gibbs
Post by Charlie Gibbs
Post by Julieta Shem
Post by David Lesher
Post by Freddy1X
Alright! Anyone lurking here who has NOT created a programmed
'runaway' condition is to be mocked and shunned as 'unworthy'.
There's a guy named Robert Tappen Morris who.....
Robert Tappan Morris?
https://en.wikipedia.org/wiki/Morris_worm
Ah, I remember that now. The VAX at my university didn't run that
operating system, nor was it on Darpanet.
--
I always say Morris owes me for hernia surgery! When the worm started
hitting, one of the first things that became clear was it targeted
BSD Vax & Sun boxes. So we had a clunky Apple Mac II running A/UX
that I hoiked around the computer room to put it up as a UUCP relay
in front of our network so we could still have email on an immune
system to track worm news & fixes.
Turns out I shouldn't have lifted that Apple box..
That reminds me... wasn't there a worm hitting Microsoft IIS around 2000
or so? I remember watching apache logs on my well performing trusted
OpenBSD web server at work seeing copies of the worm trying to infect it.
It made a real mess out of my log files, but that was about it! ;)
Gordon Henderson
2024-03-13 11:34:38 UTC
Permalink
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
I think the college (now university) I was at thought me "unworthy",
mostly because I feel they (central computing services) hated me,
but that's OK, I hated them, but had to tolerate them to get stuff done...

So after a holiday break when they had upgraded the Pr1me system (a
wretched overloaded and underpowered piece of shite that my Apple II
could better) to have some nicer scripting language (CPL?) I decided
to test the filing system to see how many levels of directory I could
create... I wrote a program to recursively create and descend, as you
do... I also put a bit into it to recursively descend and delete...

So I left it running, then realised I was late for a class or something,
stopped it and promptly forgot about it.

The next day I was summoned (again) to the head of computing service to
explain why I did it (because I could) and to be told that it caused
their shitty backup service to fail. (Because they were idiots who
couldn't code their way out of a paper bag).

I was told they had to manually go down several 100 levels and delete
the directories by hand and that if I were to do it again it would be
the end of my college life...

When I said why didn't they just write a program to do it, or look at
mine (they had a known history of looking at *all* my code as I was
under constant surveillance) I was just met with blank faces.

Morons, the lot of them. Biggest preventers of information entertainment
and I was glad to move out of computing and into Engineering where we had
real computers to use - more Apple IIs, CP/M and eventually BBC Micros,
all which exceeded the capabilities of the Primes at the time. Or felt
like it. (It could take over a day for a simple program to get through
their batch system, such was the overloaded service they tried to run).

-Gordon
Scott Lurndal
2024-03-13 14:08:39 UTC
Permalink
Post by Gordon Henderson
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
I think the college (now university) I was at thought me "unworthy",
Given the anecdotes below, they appear to have been correct.
Post by Gordon Henderson
mostly because I feel they (central computing services) hated me,
but that's OK, I hated them, but had to tolerate them to get stuff done...
So after a holiday break when they had upgraded the Pr1me system (a
wretched overloaded and underpowered piece of shite that my Apple II
could better) to have some nicer scripting language (CPL?) I decided
to test the filing system to see how many levels of directory I could
create... I wrote a program to recursively create and descend, as you
do... I also put a bit into it to recursively descend and delete...
So I left it running, then realised I was late for a class or something,
stopped it and promptly forgot about it.
So you deliberatly tried to sabotage the system.

I worked for the Computation Center in college and we
had a student like you (who ended up maliciously deleteing
a bunch of files out of spite). He was expelled.
Post by Gordon Henderson
I was told they had to manually go down several 100 levels and delete
the directories by hand and that if I were to do it again it would be
the end of my college life...
Justifiable.
Post by Gordon Henderson
When I said why didn't they just write a program to do it, or look at
mine (they had a known history of looking at *all* my code as I was
under constant surveillance) I was just met with blank faces.
It's not their job to clean up from your messes. They had
much better things to do with their time.
D
2024-03-13 15:44:58 UTC
Permalink
Post by Scott Lurndal
Post by Gordon Henderson
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
I think the college (now university) I was at thought me "unworthy",
Given the anecdotes below, they appear to have been correct.
Post by Gordon Henderson
mostly because I feel they (central computing services) hated me,
but that's OK, I hated them, but had to tolerate them to get stuff done...
So after a holiday break when they had upgraded the Pr1me system (a
wretched overloaded and underpowered piece of shite that my Apple II
could better) to have some nicer scripting language (CPL?) I decided
to test the filing system to see how many levels of directory I could
create... I wrote a program to recursively create and descend, as you
do... I also put a bit into it to recursively descend and delete...
So I left it running, then realised I was late for a class or something,
stopped it and promptly forgot about it.
So you deliberatly tried to sabotage the system.
I worked for the Computation Center in college and we
had a student like you (who ended up maliciously deleteing
a bunch of files out of spite). He was expelled.
Post by Gordon Henderson
I was told they had to manually go down several 100 levels and delete
the directories by hand and that if I were to do it again it would be
the end of my college life...
Justifiable.
Post by Gordon Henderson
When I said why didn't they just write a program to do it, or look at
mine (they had a known history of looking at *all* my code as I was
under constant surveillance) I was just met with blank faces.
It's not their job to clean up from your messes. They had
much better things to do with their time.
Gordon, Scott, I think the only civilized way for you to settle this
debate is a fight to the death with the Lirpa.
Charlie Gibbs
2024-03-13 20:17:16 UTC
Permalink
Post by D
Gordon, Scott, I think the only civilized way for you to settle this
debate is a fight to the death with the Lirpa.
Speaking of which, one April 1 at the university's student terminal
one of the staff posted a sign warning that they were having trouble
with the FORTRAN compiler. Everyone's WATFOR jobs came out printed
right to left, with a banner at the bottom of the report saying
"*** LOOF LIRPA STRIKES AGAIN ***". (They offered a free re-run
the right way around for students desperately trying to get an
assignment handed in.)

Some years later at a PPOE, I inserted a bit of code into the
machine's print routine to do the same thing. I even added a
boustrophedon option

so that people's
stuotnirp
would come out
gnihtemos gnikool
like this.
--
/~\ Charlie Gibbs | The Internet is like a big city:
\ / <***@kltpzyxm.invalid> | it has plenty of bright lights and
X I'm really at ac.dekanfrus | excitement, but also dark alleys
/ \ if you read it the right way. | down which the unwary get mugged.
Gordon Henderson
2024-03-13 15:53:38 UTC
Permalink
Post by Scott Lurndal
Post by Gordon Henderson
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
I think the college (now university) I was at thought me "unworthy",
Given the anecdotes below, they appear to have been correct.
Post by Gordon Henderson
mostly because I feel they (central computing services) hated me,
but that's OK, I hated them, but had to tolerate them to get stuff done...
So after a holiday break when they had upgraded the Pr1me system (a
wretched overloaded and underpowered piece of shite that my Apple II
could better) to have some nicer scripting language (CPL?) I decided
to test the filing system to see how many levels of directory I could
create... I wrote a program to recursively create and descend, as you
do... I also put a bit into it to recursively descend and delete...
So I left it running, then realised I was late for a class or something,
stopped it and promptly forgot about it.
So you deliberatly tried to sabotage the system.
No. I was a curious student who wanted to know more about the system. Nothing
I did on that system was ever an act of deliberate sabotage.

And I'll leave the rest at that.

Gordon
Dennis Boone
2024-03-13 15:26:46 UTC
Permalink
Post by Gordon Henderson
So after a holiday break when they had upgraded the Pr1me system (a
wretched overloaded and underpowered piece of shite that my Apple II
could better) to have some nicer scripting language (CPL?) I decided
to test the filing system to see how many levels of directory I could
create... I wrote a program to recursively create and descend, as you
do... I also put a bit into it to recursively descend and delete...
The next day I was summoned (again) to the head of computing service to
explain why I did it (because I could) and to be told that it caused
their shitty backup service to fail. (Because they were idiots who
couldn't code their way out of a paper bag).
So transition from Rev 18 to Rev 19. In addition to CPL and other
things, that's the boundary where the password on a top level UFD
quit being the whole login authentication mechanism, and a database
of users and rights sprang into existence.

PRIMOS had pathname length limits, and parts of the system had directory
depth limits. I'd be astonished if they wrote their own backup tool,
but MAGSAV was one of the places I think I recall fixes for on the
pathname depth thing.

The PRIMOS filesystem _also_ had the chained disk record concept for
files. Our application had really large MIDAS (think ISAM) data files
-- some sites had several that were over 40 MB each. Us deleting those
files during file rebuilds was part of the cause of them making the OS
not just take the lock and do the whole chain in one go, basically
hanging the system for several minutes.

My favorite bit of CPL was the &args directive for parsing the command
line. Very accurate, sometimes. :)

De
D.J.
2024-03-13 16:54:08 UTC
Permalink
On Wed, 13 Mar 2024 11:34:38 -0000 (UTC), Gordon Henderson
Post by Gordon Henderson
Post by Freddy1X
( fun story cut )
Alright! Anyone lurking here who has NOT created a programmed 'runaway'
condition is to be mocked and shunned as 'unworthy'.
I think the college (now university) I was at thought me "unworthy",
mostly because I feel they (central computing services) hated me,
but that's OK, I hated them, but had to tolerate them to get stuff done...
So after a holiday break when they had upgraded the Pr1me system (a
wretched overloaded and underpowered piece of shite that my Apple II
could better) to have some nicer scripting language (CPL?) I decided
to test the filing system to see how many levels of directory I could
create... I wrote a program to recursively create and descend, as you
do... I also put a bit into it to recursively descend and delete...
So I left it running, then realised I was late for a class or something,
stopped it and promptly forgot about it.
The next day I was summoned (again) to the head of computing service to
explain why I did it (because I could) and to be told that it caused
their shitty backup service to fail. (Because they were idiots who
couldn't code their way out of a paper bag).
I was told they had to manually go down several 100 levels and delete
the directories by hand and that if I were to do it again it would be
the end of my college life...
When I said why didn't they just write a program to do it, or look at
mine (they had a known history of looking at *all* my code as I was
under constant surveillance) I was just met with blank faces.
Morons, the lot of them. Biggest preventers of information entertainment
and I was glad to move out of computing and into Engineering where we had
real computers to use - more Apple IIs, CP/M and eventually BBC Micros,
all which exceeded the capabilities of the Primes at the time. Or felt
like it. (It could take over a day for a simple program to get through
their batch system, such was the overloaded service they tried to run).
-Gordon
Yeah, sounds like some people I had to deal with at university to. I
wasn't under surveillance, but simple suggestions would turn the main
campus computer department into a tizzy of denial of reality.

I had requested newsgroups. They said it was impossible. A professor
on main campus set it up on a x86 system under ms-dos. And I tested
it. This was in 1990.

Main campus computer department freaked out. But the professor had
tenure. Slowly they eventually gave newsgroup access to the rest of
the university.

I got this group via digest back then. My email address back then had
cp6.bitnet in it.
--
Jim
Lawrence D'Oliveiro
2024-03-29 02:59:27 UTC
Permalink
My filling-up-disk-space story involves, not something my code did, but
something the vendor’s compiler did.

This was DEC’s COBOL compiler on a PDP-11/70 running RSTS/E, during my
undergrad days. It was such a resource hog (280K-byte executable, as I
recall, heavily overlaid to run on a machine with a 16-bit address space)
that it was kept chained up in its own batch queue, to prevent students
running more than one instance of it at a time.

One day, we noticed the system disk filling up. A COBOL compile had
created a log file that had grown to 15,000 blocks, repeating the same
message over and over, something like “INVALID SECTION HEADER. SECTION
HEADER IGNORED.”. Basically, the lack of disk space was making the system
quite sick indeed.

What happened was, a student had made a typo: “IDENTIFICATION DIVISON”.
The compiler barfed on that, but somehow instead of recovering by skipping
to the next statement, it kept trying to parse that same statement over
and over.

(I studiously avoided COBOL during my entire student days. And the first
job I got after graduating involved--you guessed it--spending much of my
time writing COBOL.)
Charlie Gibbs
2024-03-30 17:00:58 UTC
Permalink
Post by Lawrence D'Oliveiro
My filling-up-disk-space story involves, not something my code did, but
something the vendor’s compiler did.
This was DEC’s COBOL compiler on a PDP-11/70 running RSTS/E, during my
undergrad days.
<snip>

Speaking of COBOL compilers, here's one that isn't so much a
filling-up-disk-space story as a filling-up-name-space story.

We were porting mainframe COBOL programs to a Unix box, using
MicroFocus COBOL. The compiler worked quite well, but it had
one irritating quirk: when sorting data with the COBOL SORT
verb, compiled programs created ridiculously small work files
on disk. We were sorting a large file, and when the process
died it had created about 12,000 work files.

But that's not the best part. The work files were named something
like SORTnnn.WRK. See where this is going? Yep, the sequence
number wrapped around. But not in the way you might think: the
high-order digit bumped from 9 to a semicolon, then a colon,
and so on through the ASCII code table until it wrapped around
to NUL and kept going. It took some time to clean up the mess -
after which we dug through the documentation until we found an
override for the work file size.
--
/~\ Charlie Gibbs | The Internet is like a big city:
\ / <***@kltpzyxm.invalid> | it has plenty of bright lights and
X I'm really at ac.dekanfrus | excitement, but also dark alleys
/ \ if you read it the right way. | down which the unwary get mugged.
Lawrence D'Oliveiro
2024-03-30 23:14:54 UTC
Permalink
Post by Charlie Gibbs
We were porting mainframe COBOL programs to a Unix box, using
MicroFocus COBOL. ...
The work files were named something like SORTnnn.WRK.
What an odd limitation. Even the earliest Unix systems allowed 14-
character file names.
Post by Charlie Gibbs
... when the process died it had created about 12,000 work files.
That wouldn’t be so bad, if they were all in one temporary directory. One
quick “rm -rf” and it’s over.

Decades ago, I created a system for a client that involved generating
custom movies for their customers, according to a template which could
specify fixed parts (the same for all customers) and variable parts (based
on video footage unique to each customer). When the video footage was
uploaded into the system, my code split it into individual JPEG frames, so
that I could do frame-accurate reassembly into the final movie. (FFmpeg
was the workhorse for all the processing, of course.)

I would end up with something like 100,000 JPEG frame files in a single
directory. The Linux system (and command-line tools) coped with it just
fine; just don’t try opening such a directory in any GUI file manager!
Charlie Gibbs
2024-03-31 02:17:58 UTC
Permalink
Post by Lawrence D'Oliveiro
Post by Charlie Gibbs
We were porting mainframe COBOL programs to a Unix box, using
MicroFocus COBOL. ...
The work files were named something like SORTnnn.WRK.
What an odd limitation. Even the earliest Unix systems allowed 14-
character file names.
I probably misremembered the exact file name. It might have been
longer - but the sequence number was much too short.
Post by Lawrence D'Oliveiro
Post by Charlie Gibbs
... when the process died it had created about 12,000 work files.
That wouldn’t be so bad, if they were all in one temporary directory. One
quick “rm -rf” and it’s over.
Unfortunately, they were not; they were in the same directory as
our data files. Deleting files with a NUL (SOH, STX...) in the name
without disturbing other things took a bit of care - one slip of a
wild card and we'd have been reaching for our backup.
Post by Lawrence D'Oliveiro
Decades ago, I created a system for a client that involved generating
custom movies for their customers, according to a template which could
specify fixed parts (the same for all customers) and variable parts (based
on video footage unique to each customer). When the video footage was
uploaded into the system, my code split it into individual JPEG frames, so
that I could do frame-accurate reassembly into the final movie. (FFmpeg
was the workhorse for all the processing, of course.)
I would end up with something like 100,000 JPEG frame files in a single
directory. The Linux system (and command-line tools) coped with it just
fine; just don’t try opening such a directory in any GUI file manager!
Yes, it wasn't the number of files per se (although unnecessarily large
numbers of files can be unwieldy). But the fact that the compiler would
generate code which created such outlandish file names without some sort
of error check was rather tacky.
--
/~\ Charlie Gibbs | The Internet is like a big city:
\ / <***@kltpzyxm.invalid> | it has plenty of bright lights and
X I'm really at ac.dekanfrus | excitement, but also dark alleys
/ \ if you read it the right way. | down which the unwary get mugged.
Lawrence D'Oliveiro
2024-03-31 06:20:47 UTC
Permalink
Post by Lawrence D'Oliveiro
That wouldn’t be so bad, if they were all in one temporary directory.
One quick “rm -rf” and it’s over.
Unfortunately, they were not; they were in the same directory as our
data files.
That sounds like Micro Focus didn’t have a clue about basic Unix
conventions; surely the /tmp directory existed back then?

(Quick check) Couldn’t find a mention of any temporary files/directories
in Unix 7th Ed docs, but System V Release 1 (dated January 1983) mentions
functions for creating temporary file names, and has this in stdio.h:

#define P_tmpdir "/usr/tmp/"
Scott Lurndal
2024-03-31 16:13:43 UTC
Permalink
Post by Lawrence D'Oliveiro
That wouldn’t be so bad, if they were all in one temporary directory.
One quick “rm -rf” and it’s over.
Unfortunately, they were not; they were in the same directory as our
data files.
That sounds like Micro Focus didn’t have a clue about basic Unix
conventions; surely the /tmp directory existed back then?
Sounds like you're drawing a false conclusion based on a single
unverified anecdote.
Scott Lurndal
2024-03-31 16:18:32 UTC
Permalink
Post by Lawrence D'Oliveiro
That wouldn’t be so bad, if they were all in one temporary directory.
One quick “rm -rf” and it’s over.
Unfortunately, they were not; they were in the same directory as our
data files.
That sounds like Micro Focus didn’t have a clue about basic Unix
conventions; surely the /tmp directory existed back then?
Of course it did. There could be many reasons not to use /tmp even
leaving aside the very permissive access restrictions on /tmp.

Programs that use the standard temporary file library functions
(e.g. mktemp, mkstemp, tempnam, tempfile, tmpnam) would rely
on the TMPDIR environment variable to select the temporary
directory location. If not set, an implementation defined
value would be used (generally /tmp or /var/tmp).

Node that disks in those days were pretty small (10MB to 200MB)
and the consequences of filling /tmp when it is on the root
filesystem were not pretty.
Lawrence D'Oliveiro
2024-03-31 20:58:43 UTC
Permalink
Programs that use the standard temporary file library functions (e.g.
mktemp, mkstemp, tempnam, tempfile, tmpnam) would rely on the TMPDIR
environment variable to select the temporary directory location.
In my research, that wasn’t true back around the time of AT&T System III,
or System V Release 1.
Dan Cross
2024-04-01 14:15:36 UTC
Permalink
Programs that use the standard temporary file library functions (e.g.
mktemp, mkstemp, tempnam, tempfile, tmpnam) would rely on the TMPDIR
environment variable to select the temporary directory location.
In my research, that wasn’t true back around the time of AT&T System III,
or System V Release 1.
Of course, the person who told the story never said that they
were using Sys3 or SVR1; that was purely your speculation.

- Dan C.

Dan Cross
2024-03-31 13:34:23 UTC
Permalink
Post by Charlie Gibbs
Post by Lawrence D'Oliveiro
Post by Charlie Gibbs
We were porting mainframe COBOL programs to a Unix box, using
MicroFocus COBOL. ...
The work files were named something like SORTnnn.WRK.
What an odd limitation. Even the earliest Unix systems allowed 14-
character file names.
I probably misremembered the exact file name. It might have been
longer - but the sequence number was much too short.
Post by Lawrence D'Oliveiro
Post by Charlie Gibbs
... when the process died it had created about 12,000 work files.
That wouldn’t be so bad, if they were all in one temporary directory. One
quick “rm -rf” and it’s over.
Unfortunately, they were not; they were in the same directory as
our data files. Deleting files with a NUL (SOH, STX...) in the name
without disturbing other things took a bit of care - one slip of a
wild card and we'd have been reaching for our backup.
If one knew the pattern of temporary file names, surely one
could write a small program that simply followed it? Something
like:

#include <stdio.h>
#include <string.h>
#include <unistd.h>

int
main()
{
int i;
char fn[12];

strcpy(fn, "SORTnnn.WRK");
for (i = 0; i < 12000; i++) {
fn[6] = i % 10;
fn[5] = (i / 10) % 10;
fn[4] = i / 100;
unlink(fn);
}

return (0);
}
Post by Charlie Gibbs
[snip]
Yes, it wasn't the number of files per se (although unnecessarily large
numbers of files can be unwieldy). But the fact that the compiler would
generate code which created such outlandish file names without some sort
of error check was rather tacky.
Presumably this wasn't the compiler inserting that code per se,
but rather causing the program to link against some library that
did so. It would have been better to defer to a C library
function like `mktemp` (available since 7th Edition Unix), but
there's always been an impedence mismatch between the COBOL and
Unix worlds, it seems.

- Dan C.
Dan Cross
2024-04-01 12:40:29 UTC
Permalink
Post by Dan Cross
Post by Charlie Gibbs
Post by Lawrence D'Oliveiro
Post by Charlie Gibbs
We were porting mainframe COBOL programs to a Unix box, using
MicroFocus COBOL. ...
The work files were named something like SORTnnn.WRK.
What an odd limitation. Even the earliest Unix systems allowed 14-
character file names.
I probably misremembered the exact file name. It might have been
longer - but the sequence number was much too short.
Post by Lawrence D'Oliveiro
Post by Charlie Gibbs
... when the process died it had created about 12,000 work files.
That wouldn’t be so bad, if they were all in one temporary directory. One
quick “rm -rf” and it’s over.
Unfortunately, they were not; they were in the same directory as
our data files. Deleting files with a NUL (SOH, STX...) in the name
without disturbing other things took a bit of care - one slip of a
wild card and we'd have been reaching for our backup.
If one knew the pattern of temporary file names, surely one
could write a small program that simply followed it? Something
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int
main()
{
int i;
char fn[12];
strcpy(fn, "SORTnnn.WRK");
for (i = 0; i < 12000; i++) {
fn[6] = i % 10;
fn[5] = (i / 10) % 10;
fn[4] = i / 100;
The above three 3 lines should all, `+ '0'` obviously.

- Dan C.
Post by Dan Cross
unlink(fn);
}
return (0);
}
- Dan C.
Loading...