[comp.sys.amiga] AmigaDOS and DiskSalv 1.32 Problem

john@wpi.wpi.edu (John F Stoffel) (06/24/89)

Sorry to post this to here, but I couldn't get my site to mail to Dave
Haynie directly so... I'm going to post this here.


Dave, 
	A guy over on Bitnet on the Info-Amiga news group asked me to
send you a bug report for DiskSalv 1.32 and AmigaDOS.  The error has
been repeated.  Here's the original message.  Thanks for your help!!

==============================his message==============================

Hello, and have a nice day. (Probably not after reading this 8) )

Well, it seems i have found a bug in DiskSalv 1.32, but maybe this is
a bug of the Workbench, so i ask u all to take a blank formatted disk,
and follow theese steps:
1. Boot up your Amiga from Kickstart 1.3 (I didn't test 1.2, so if
   someone would be so kind...), and Workbench 1.3.
2. LoadWB
3. Format a disk (either CLI or WB)
4. Click twice on the Disk-Icon (i'll call it 'Foo:')
5. Now get your Empty-drawer from the original workbench and drag it into
   the open Foo:-window.
6. Choose 'Duplicate' from the menu, and duplicate the Empty-drawer.
7. There should be an 'Empty' and a 'copy of Empty' on your Foo:-disk.
8. Open both of them.
9. And now let us be cruel 8). Drag the Empty-drawer into the 'copy of
   Empty'-Window, and drag the 'copy of Empty'-drawer into the Empty-
   Window. Got it? Cruel isn't it? 8)
10.Close both drawers. Hehehehehehe. <Poooooof>
11.O.K. Your Drawers are gone, diskspace is wasted and gone, too. This
   is an easy method to hide files, wich will NEVER be used again. It's
   a kind of 'diskspacelimited/dev/null'.

But! Don't use Disksalv 1.32 on a disk like that!!!!
I thought: "Well that was funny, all my files are gone! Taadaaa, where's
DiskSalv ?! Ahhhh, here it is..."
I typed  : 1> mount rad:
           1> disksalv df1: to rad:
           DiskSlave V1.32 by Dave Haynie...   (ooops DiskSalv i mean)
           ...[Y] ? Y
...and DiskSalv begun it's work, not knowing that somewhere on this disk
a little trap was waiting for it. As it approached the directory-structure
it didn't find a way out of this labyrinth of drawers and presented me
a guru-party.

Is this a way to protect disks from being salvaged? (good idea it seems)
Is this a bug of DiskSalv or AmigaDos? (the guru, not the disapearing drawers)

By playing around a little bit with this kind of stuff, i discovered another
bug, probably one of the Workbench. Here it comes:
  When dragging the Empty-drawer into the RAM:-disk, i was able to
  duplicate it there, but 'copy of Empty' could not be opened. Well, it
  works on DH0:, DF0:, DF1: and RAD: but not in RAM:. I discovered that
  only the Empty.info file was duplicated, not the Empty-directory.
  I didn't play around with this one, but this seems to me like a
  very very big bug.

My Configuration:
A1000 (PAL), 2 MB, NEC 1036a, A.L.F + ST4096 Seagate
Kickstart 1.3, Workbench 1.3, ARP 1.3, AShell

Any suggestions, reports, flames are welcome.
If someone can reach Dave Haynie (..!cbmvax!daveh or BIX: hazy), please
report this bug.

Everything i wrote maybe discussed before, but my limited diskspace (80 MB)
doesn't allow me to store the whole I-AMIGA-discussion, so please be
indulgent. (nice english word, i found it in a german->english book 8)))


  _____________________________________________________________________
 /       / /   o      | via  BITNET: IFF189@DJUKFA11                   :
|       /|/|   #      | uucp-BITNET: ..!tmpmbx!DJUKFA11.Bitnet!IFF189   |
| Peter/_/_|Marquardt | uucp - uucp: ..!unido!altger!hermann.UUCP       |
|  : :/ /| |   #      |                                                 |
|   :/:/ | | m # g a  |    " Waddaya mean, user error ! ! ? "           |
 :___________________/ :________  <KABOOOOOOOOOOOOOOOM>  ______________/
                                :_______________________/

daveh@cbmvax.UUCP (Dave Haynie) (06/29/89)

in article <2980@wpi.wpi.edu>, john@wpi.wpi.edu (John F Stoffel) says:
> Keywords: DiskSalv 1.32, AmigaDOS, HELP, BIG problem

> Well, it seems i have found a bug in DiskSalv 1.32, but maybe this is
> a bug of the Workbench, so i ask u all to take a blank formatted disk,
> and follow theese steps:
> 1. [...] 9. And now let us be cruel 8). Drag the Empty-drawer into the 
>             'copy of Empty'-Window, and drag the 'copy of Empty'-drawer 
>             into the Empty-Window. Got it? Cruel isn't it? 8)

So Workbench lets you cross link directories, eh?  Sounds like one bug 
there that's not mine, but onward...

> But! Don't use Disksalv 1.32 on a disk like that!!!! [...] ...and DiskSalv 
> begun it's work, not knowing that somewhere on this disk a little trap was 
> waiting for it. As it approached the directory-structure it didn't find a 
> way out of this labyrinth of drawers and presented me a guru-party.

Yup, that's just what's happening.  DiskSalv V1.32 will try to walk the 
directory tree to print the directory name during recovery (also to get
the names of directories to create).  Any kind of directory loops will be
tragic, as the string will just grow and grow, with accompanying function
recursions, until you crash.

> Is this a way to protect disks from being salvaged? (good idea it seems)

No longer...

> Is this a bug of DiskSalv or AmigaDos? (the guru, not the disapearing drawers)

The Guru is DiskSalv's.  Fortunately, this is fixed in DiskSalv V1.40.  The
fix was rather simple.  When DiskSalv finds a file or directory, it checks 
it's internal tree for the existence of that item's directory.  If there isn't
a directory for it yet, you get an entry in the LOOSE-BLOCKS directory.  As
the scanning proceeds, more directories may be found, and if so, they're
moved from the LOOSE-BLOCKS directory to where they belong.  Only now, before
inserting a directory anywhere, I check to make sure that it's not referenced
as a parent of it's intended parent directory.  If it is, it'll have it's name
updated, but it'll still be kept in the LOOSE-BLOCKS directory.  In the event
of self-referential directories, one will wind up as a child of the other, based
on the order they're found on disk, but the looping will be eliminated.

> Any suggestions, reports, flames are welcome.
> If someone can reach Dave Haynie (..!cbmvax!daveh or BIX: hazy), please
> report this bug.

Thanks anyway for the bug report.  Someone beat you to it, but actually had
to send me a disk to examine; you've apparently found a reliable (least till
1.4) way to create such loops that I didn't know about.

> | Peter/_/_|Marquardt | uucp - uucp: ..!unido!altger!hermann.UUCP       |

-- 
Dave Haynie Commodore-Amiga (Systems Engineering) "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
           Be careful what you wish for -- you just might get it