|
Register or have you forgotten your password?
|
|
|
| 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. |
![]() |
|
|
Thread Tools | Display Modes |
|
|
#1 | ||||||||
|
Beginner
![]()
Join Date: Mar 2010
Location: Wisconsin
Posts: 43
|
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.. |
||||||||
|
|
|
|
|
#2 | ||||||||
|
Premium Member
Join Date: Nov 2003
Location: Houston, Texas
Posts: 2,257
|
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 |
||||||||
|
|
|
|
|
#4 | ||||||||
|
Defender of the Faith
![]()
Join Date: Sep 2007
Posts: 1,245
|
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.
|
||||||||
|
|
|
|
|
#5 | ||||||||
|
Kindred of Babble-on
![]()
|
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...
|
||||||||
|
|
|
|
|
#6 | ||||||||
|
Sockologist
![]()
|
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 |
||||||||
|
|
|
|
|
#7 | |||||||||
|
' union select name,pwd--
Join Date: Aug 2002
Location: Helsinki, Finland
Posts: 6,946
|
Quote:
While Enforcer is quite nice I would give my left kidney for valgrind. |
|||||||||
|
|
|
![]() |
| Bookmarks |
| Tags |
| classic story , vastly , number , infinite , deceased , cattle , amiga , old school , improved |
| Thread Tools | |
| Display Modes | |
|
|