[parted-devel] parted crashing on partially recovered disk
Peter Lorenzen
peter at lorenzen.us
Fri Nov 26 15:54:40 UTC 2010
Hi
I had a disk-crash (a 320Gb disk) and managed to get the first half
of the disk copied to a new disk (500Gb)
and are now trying to rebuild the rest.
My problem is that parted crashes. This happens with stock ubuntu-10.4
and parted-2.3 build from source.
# sudo sfdisk -l /dev/sdb
Disk /dev/sdb: 60801 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdb1 * 0+ 12- 13- 102400 7 HPFS/NTFS
/dev/sdb2 12+ 4863- 4851- 38965248 7 HPFS/NTFS
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 4863+ 29981 25119- 201761743 5 Extended
/dev/sdb5 4863+ 7413- 2550- 20480000 83 Linux
/dev/sdb6 7414+ 7873 460- 3694918+ 82 Linux swap / Solaris
/dev/sdb7 7874+ 14401- 6528- 52428800 af HFS / HFS+
# sudo parted-2.3/parted/parted -l /dev/sdb
Model: ATA WDC WD20EARS-00S (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 20.0GB 20.0GB primary ext3 boot
2 20.0GB 25.0GB 5009MB primary linux-swap(v1)
3 25.0GB 1979GB 1954GB primary ext3
4 1979GB 2000GB 21.0GB primary ext3
Backtrace has 18 calls on stack:
18: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(ped_assert+0x2a)
[0x64beda]
17: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(ped_geometry_read+0x116)
[0x655c56]
16: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(hfsplus_probe+0x3a1)
[0x67bf51]
15: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(ped_file_system_probe_specific+0x6c)
[0x64da3c]
14: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(ped_file_system_probe+0x81)
[0x64e031]
13: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(+0x4750f)
[0x68650f]
12: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(+0x47631)
[0x686631]
11: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(+0x47631)
[0x686631]
10: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(+0x47571)
[0x686571]
9: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(+0x4773f)
[0x68673f]
8: /home/peter/src/parted-2.3/libparted/.libs/libparted.so.0(ped_disk_new+0x75)
[0x654e45]
7: /home/peter/src/parted-2.3/parted/.libs/lt-parted() [0x804e408]
6: /home/peter/src/parted-2.3/parted/.libs/lt-parted() [0x804f593]
5: /home/peter/src/parted-2.3/parted/.libs/lt-parted() [0x80518aa]
4: /home/peter/src/parted-2.3/parted/.libs/lt-parted() [0x8052f21]
3: /home/peter/src/parted-2.3/parted/.libs/lt-parted(main+0x2e) [0x805302e]
2: /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6) [0x126bd6]
1: /home/peter/src/parted-2.3/parted/.libs/lt-parted() [0x804c451]
Aborted
Using ddd I can see that this is caused by
ped_geometry_read (const PedGeometry* geom, void* buffer, PedSector offset,
PedSector count)
{
PedSector real_start;
PED_ASSERT (geom != NULL, return 0);
PED_ASSERT (buffer != NULL, return 0);
-> PED_ASSERT (offset >= 0, return 0);
PED_ASSERT (count >= 0, return 0);
It would have been nice if parted would inform of bogus paritition
instead of just crashing.
eventually a comment like "remove the bogus partition using fdisk" and
try again could have been helpfull
Best Regrads
Peter Lorenzen
More information about the parted-devel
mailing list