From: Sven L. <sve...@wa...> - 2003-08-14 11:42:14
|
On Thu, Aug 14, 2003 at 12:36:53PM +0200, Geert Uytterhoeven wrote: > On Wed, 13 Aug 2003, Sven Luther wrote: > > On Wed, Aug 13, 2003 at 06:11:52PM +0200, Geert Uytterhoeven wrote: > > > On Wed, 13 Aug 2003, Sven Luther wrote: > > > > On Wed, Aug 13, 2003 at 05:34:35PM +0200, Geert Uytterhoeven wrote: > > > > > BTW, removing the (un)register calls for UFS didn't help, as expected (the > > > > > assertion just causes UFS not being registered). > > > > > > > > What about removing the affs stuff ? > > > > > > Still the same ;-( > > > > Ok, i have to go today, but i will prepare a new version tomorrow, with > > more debuging messages. It would be nice to know which function is > > called when the probe is done. I expect you don't get the real values, > > because it is a a table with function pointers or so. Could you try to > > get which of the function pointers is called with gdb or whatever you > > where using? > > Apparently the last probe function called before the crash is reiserfs_probe(), So, maybe this has to do with you don't having installed the reiserfs -dev libraries, which somehow makes sense. > which seems to corrupt the stack. After disabling the registration of reiserfs > I get: > > | Disk geometry for /dev/hda: 0.000-1039.500 megabytes > | Disk label type: amiga > | Minor Start End Filesystem Flags > | 1 0.984 9.351 > | 2 9.352 259.382 These two are the MuFS partitions. > | 3 259.383 291.867 ext2 > | 4 291.867 324.351 linux-swap > | 5 324.352 424.757 ext2 > | 6 424.758 1039.500 ext2 > > Which is consistent with the data from HdToolBox. > > After re-enabling affs and adding support for MultiUser (patch below), I get: > > | PROBING FOR AN AMIGA PARTITION TABLE. > | Reserved = 2, Prealloc = 0 > | Cyl = 2112, Sect = 63, Head = 16, Sect*Head = 1008, CylBlocks = 1008 > | Block size is 128 > | AMIGA FFS : boot block detected FFS\3 > | AMIGA FFS : root block should be at 10584 (2016-19151:17136) > | AMIGA FFS : root-2 block : type = 653206047, subtype = -628857599, sum = > | -1976770243 > | AMIGA FFS : root-1 block : type = 637044347, subtype = -1881946650, sum = > | 1885671754 > | AMIGA FFS : root+1 block : type = 0, subtype = 0, sum = 0 > | AMIGA FFS : root+2 block : type = -33552265, subtype = -1, sum = 0 > | AMIGA FFS : root block : type = 2, subtype = 1, sum = 0 Ok, i correctly calculate the root block place here. > | Program received signal SIGSEGV, Segmentation fault. > | 0xc012e16a in free () from /lib/libc.so.6 > > :-( Err, that should not happen :((( > For /dev/hdb, which doesn't contain any affs partitions: > > | PROBING FOR AN AMIGA PARTITION TABLE. > | Reserved = 0, Prealloc = 0 > | Cyl = 1057, Sect = 63, Head = 16, Sect*Head = 1008, CylBlocks = 1008 > | Block size is 128 > | AMIGA FFS : boot block detected FFS\3 > | AMIGA FFS : root block should be at 287280 (2016-572543:570528) > | AMIGA FFS : root-2 block : type = 1026176313, subtype = 1598254958, sum = > | 1968231241 > | AMIGA FFS : root-1 block : type = 1937011297, subtype = 842283008, sum = > | 302493690 > | AMIGA FFS : root+1 block : type = 741552950, subtype = 741552699, sum = > | -1510802252 > | AMIGA FFS : root+2 block : type = 1634495599, subtype = 1601200498, sum = > | -1940758414 > | AMIGA FFS : root block : type = 1599038058, subtype = 976433203, sum = > | -463838221 The root block is not found, but then you have 0 reserved blocks here. > | Reserved = 0, Prealloc = 0 > | Cyl = 1057, Sect = 63, Head = 16, Sect*Head = 1008, CylBlocks = 1008 > | Block size is 128 > | Disk geometry for /dev/hdb: 0.000-520.242 megabytes > | Disk label type: amiga > | Minor Start End Filesystem Flags > | 1 0.984 279.562 ext2 > | 2 279.562 520.242 ext2 > > Which is OK. But i suppose that the first partition has a wrong boot block of DOS\3 type, but since libparted does more advanced checking, and doesn't find the root block, it is correcly detected as ext2. > --- parted-1.6.5-1.0.0.1/libparted/fs_affs/interface.c.orig Thu Aug 14 12:16:10 2003 > +++ parted-1.6.5-1.0.0.1/libparted/fs_affs/interface.c Thu Aug 14 12:20:08 2003 > @@ -55,6 +55,13 @@ > case 0x444f5303 : /* 'DOS\3' : FFS Int. */ > case 0x444f5304 : /* 'DOS\4' : OFS DirCache */ > case 0x444f5305 : /* 'DOS\5' : FFS DirCache */ > + case 0x6d754653 : /* 'muFS' : MultiUser FFS Int. */ > + case 0x6d754600 : /* 'muF\0' : MultiUser OFS */ > + case 0x6d754601 : /* 'muF\1' : MultiUser FFS */ > + case 0x6d754602 : /* 'muF\2' : MultiUser OFS Int. */ > + case 0x6d754603 : /* 'muF\3' : MultiUser FFS Int. */ > + case 0x6d754604 : /* 'muF\4' : MultiUser OFS DirCache */ > + case 0x6d754605 : /* 'muF\5' : MultiUser FFS DirCache */ > printf ("AMIGA FFS : boot block detected FFS\\%d \n", block[0]&0xff); > printf ("AMIGA FFS : root block should be at %llu (%llu-%llu:%llu)\n", > root, geom->start, geom->end, geom->length); Ok thanks, i had added similar code already. I will try to prepare a new version today, with more extensive information dumping, and we can go looking at why it segfaults above. It clearly is in the affs code, so i am responsible for it. Thanks for testing. Friendly, Sven Luther |