amiga.org
     
iconAll times are GMT -6. The time now is 05:59 PM. | Welcome to Forum, please register to access all of our features.

» Amiga.org » Amiga computer related discussion » General chat about Amiga topics » How an infinite number of deceased cattle vastly improved the Amiga

General chat about Amiga topics This forum is for conversations which are specifically "Amiga" related, but don't fit into other categories. Contents of this forum do appear on the main page, unlike Talk About. If a subject appears to be non-related, it will be moved to Talk About.

Reply
 
Thread Tools Display Modes
Old 03-15-2010, 10:22 PM   #1
pkivolowitz
Beginner
Points: 2,153, Level: 28 Points: 2,153, Level: 28 Points: 2,153, Level: 28
Activity: 2% Activity: 2% Activity: 2%
 
Join Date: Mar 2010
Location: Wisconsin
Posts: 43
Default How an infinite number of deceased cattle vastly improved the Amiga

Last story for a bit. Not at all ASDG related

The Amiga OS, especially towards the end of Commodore, was probably the most bug-free non-trivial OS ever - or for at least a very long time. Even without an MMU to keep tasks penned in their own virtual address space, Amigas could remain up and running for months on end.

Any error in any program or in the OS could instantly bring down the entire machine. Yet, the machine was incredibly reliable (with a large body of 3rd party software running too).

What made this possible way back when? Many things, not the least of which was a shared ethic held by Commodore on down through the developer community of taking bugs and bug hunting seriously. Many later platforms dismissed fixing old features in favor of adding new features because new features are what sold systems. The Amiga was proof that a developer and OS provider could innovate like mad and STILL be committed to quality.

One of the tools we used depended on an infinite number of deceased cows. The tool was called Enforcer, written by Bryce Nesbitt.

The tool was very effective at finding two extremely common bug types. Array overruns and dangling pointers. This is where the cows come in.

The 68K could not use an odd number as an address of data or instruction. Encountering an odd numbered address was an instant Guru Meditation.

Unallocated memory was filled with the value 0xDEADBEEF (notice the last F - it is 15 - odd). If you had a bogus pointer and it landed in unallocated space you would instantly crash. A good reliable crash is a debugger's best friend. Pointers could be bogus because they contain garbage or they refer to memory which used to be allocated but was freed (and you're still wrongly hanging on to the pointer).

Similarly, DEADBEEF would be placed around blocks of allocated memory. When the memory was freed if DEADBEEF wasn't found before or after the block you would know you overran the buffer (or somebody else clobbered your memory which was much much worse).

A large part of the developer community and I believe most of the folks inside Commodore ran Enforcer all the time - in this way we bug checked each others code even as we developed our own code. THIS is why the Amiga was so reliable - community based bug hunting. Sure the community basis was sort of necessary (because of the lack of memory isolation) but it was also ingrained in the Amiga culture of sharing.

Last edited by pkivolowitz; 03-15-2010 at 10:25 PM..
pkivolowitz is offline   Reply With Quote
Old 03-15-2010, 10:38 PM   #2
ChaosLord
Premium Member
Points: 14,695, Level: 78 Points: 14,695, Level: 78 Points: 14,695, Level: 78
Activity: 28% Activity: 28% Activity: 28%
 
ChaosLord's Avatar
 
Join Date: Nov 2003
Location: Houston, Texas
Posts: 2,257
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

What a heartwarming story

For anyone interested, the modern Enforcer is called MuGuardianAngel and it is awesome.
__________________
Wanna try a wonderfull strategy game with lots of handdrawn anims,
Magic Spells and Monsters, Incredible playability and lastability,
English speech, etc. Total Chaos AGA
ChaosLord is offline   Reply With Quote
Old 03-15-2010, 10:46 PM   #3
koaftder
VIP / Donor
Points: 12,269, Level: 72 Points: 12,269, Level: 72 Points: 12,269, Level: 72
Activity: 14% Activity: 14% Activity: 14%
 
koaftder's Avatar
 
Join Date: Apr 2004
Location: USA, MD, Salisbury
Posts: 2,077
Blog Entries: 1
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

I love hearing about this kind of stuff.
koaftder is offline   Reply With Quote
Old 03-16-2010, 12:55 AM   #4
stefcep2
Defender of the Faith
Points: 8,174, Level: 61 Points: 8,174, Level: 61 Points: 8,174, Level: 61
Activity: 10% Activity: 10% Activity: 10%
 
Join Date: Sep 2007
Posts: 1,245
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

Many people-on this board included- have been highly critical of the Amiga's lack of memory protection, and how a single program could bring down the entire system. You know the whole "you'll lose data if it crashes" thing. Well I've kept telling them, yes thats true, but no it didn't happen anywhere near as much as you think it did. This goes some way towards explaining why my A4000 68060 with CV 64 would run for weeks without a reboot.
stefcep2 is offline   Reply With Quote
Old 03-16-2010, 01:38 AM   #5
Zac67
Kindred of Babble-on
Points: 12,421, Level: 72 Points: 12,421, Level: 72 Points: 12,421, Level: 72
Activity: 15% Activity: 15% Activity: 15%
 
Zac67's Avatar
 
Join Date: Nov 2004
Location: Erlangen, Germany
Posts: 2,851
Blog Entries: 4
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

I use DEADBEEF as a routing segments for linking two (or more) IPX segments over WAN - some are still in operation. Have to admit though that I didn't remember where it was coming from...
Zac67 is offline   Reply With Quote
Old 03-16-2010, 01:46 AM   #6
Karlos
Sockologist
Points: 48,752, Level: 100 Points: 48,752, Level: 100 Points: 48,752, Level: 100
Activity: 8% Activity: 8% Activity: 8%
 
Karlos's Avatar
 
Join Date: Nov 2002
Location: I solve practical problems...
Posts: 16,606
Blog Entries: 18
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

I've used 0xDEADBEEF as a "magic" number for various purposes in many bits of code

With the advent of the 68020 though, I can see it would be more difficult to trap data accesses since the 020+ allows misaligned access to data.
__________________
OCA
This isn't SCSI... This is SATA!!!
I have CDO. It's like OCD except all the letters are in ascending order. The way they should be.
Core2 Quad Q9450 2.66GHz / X48T / 4GB DDR3 / nVidia GTX275 / Linux x64, AROS, Win64
A1XE 800MHz / 512MB / Radeon 9200 / OS4.1
A1200T BPPC 240MHz / 256MB / Permedia 2 / OS 3.1 - OS3.9, OS4
A1200T Apollo 1240 28MHz / 32MB / Mediator1200 / Voodoo 3000 / OS3.9
A1200D Apollo 1240 25MHz (ejector seat ROM edition) / 32MB
Karlos is offline   Reply With Quote
Old 03-16-2010, 02:05 AM   #7
Piru
' union select name,pwd--
Points: 30,457, Level: 100 Points: 30,457, Level: 100 Points: 30,457, Level: 100
Activity: 69% Activity: 69% Activity: 69%
 
Piru's Avatar
 
Join Date: Aug 2002
Location: Helsinki, Finland
Posts: 6,946
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

Quote:
Originally Posted by pkivolowitz View Post
The 68K could not use an odd number as an address of data or instruction. Encountering an odd numbered address was an instant Guru Meditation.
For data 68000 and 68010 only. 68020 and up handle odd pointers just fine (albeit a bit slowly). Obviously branch (jsr, jmp, rts, rte and so on) to odd pointers would crash as usual.

While Enforcer is quite nice I would give my left kidney for valgrind.
Piru is offline   Reply With Quote
Old 03-16-2010, 03:30 AM   #8
kolla
Defender of the Faith
Points: 11,318, Level: 70 Points: 11,318, Level: 70 Points: 11,318, Level: 70
Activity: 2% Activity: 2% Activity: 2%
 
kolla's Avatar
 
Join Date: Oct 2002
Location: Trondheim, Norway
Posts: 1,698
Default Re: How an infinite number of deceased cattle vastly improved the Amiga

Quote:
Originally Posted by Piru View Post
I would give my left kidney for valgrind.
Is that a bounty request?
__________________
-- kolla
kolla is offline   Reply With Quote
Reply

Bookmarks

Tags
classic story , vastly , number , infinite , deceased , cattle , amiga , old school , improved

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump