bug#23059: parted Debian 8

"V字龍" <[email protected]>
Newsgroups gmane.comp.gnu.parted.bugs
Message-ID <[email protected]>
Hi, after a few attempts I found the exact steps to reproduce this bug:

````````````````````````````
user $ dd if=/dev/zero of=emulated-disk.img bs=1M count=100 # Let's 
pretend this small file is our disk
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.112727 s, 930 MB/s

user $ parted --script emulated-disk.img mklabel msdos
user $ parted --script emulated-disk.img mkpart extended 1s -- -1s
Warning: The resulting partition is not properly aligned for best 
performance.

user $ parted --script emulated-disk.img mkpart logical -- 99MiB -1s # I 
used to create a tiny partition at the end and name it "XXX_Security" to 
store the disk's owner information, sometime Parted will hide small 
inter-partition gap so I usually create it first
user $ parted --script emulated-disk.img mkpart logical 3s 99MiB # Then 
I create a filesystem to install GNU/Linux, it's not M$ Windows so I can 
just give them a logical partition
Warning: The resulting partition is not properly aligned for best 
performance.

user $ parted --script emulated-disk.img print
user $ parted --script emulated-disk.img \
 > unit s \
 > print # Notice that the partition record is not in order and even 
that it's valid I still hate it...
Model:  (file)
Disk emulated-disk.img: 204800s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start    End      Size     Type      File system  Flags
  1      1s       204799s  204799s  extended               lba
  6      3s       202751s  202749s  logical
  5      202752s  204799s  2048s    logical

user $ fdisk emulated-disk.img # ...since it seems that Parted doesn't 
support fixing the order let's use fdisk from util-linux to do the task
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk emulated-disk.img: 100 MiB, 104857600 bytes, 204800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xee29eef8

Device             Boot  Start    End Sectors  Size Id Type
emulated-disk.img1           1 204799  204799  100M  f W95 Ext'd (LBA)
emulated-disk.img5      202752 204799    2048    1M 83 Linux
emulated-disk.img6           3 202751  202749   99M 83 Linux

Partition table entries are not in disk order.

Command (m for help): x

Expert command (m for help): f

Expert command (m for help): r

Command (m for help): w
The partition table has been altered.
Syncing disks.

user $ parted --script emulated-disk.img print # ...then Parted 
crashed...:-(
Backtrace has 14 calls on stack:
   14: /lib/x86_64-linux-gnu/libparted.so.2(ped_assert+0x44) 
[0x7f686ef4dea4]
   13: /lib/x86_64-linux-gnu/libparted.so.2(+0x1e45f) [0x7f686ef6145f]
   12: /lib/x86_64-linux-gnu/libparted.so.2(+0xf8ba) [0x7f686ef528ba]
   11: 
/lib/x86_64-linux-gnu/libparted.so.2(ped_disk_add_partition+0x25f) 
[0x7f686ef531af]
   10: /lib/x86_64-linux-gnu/libparted.so.2(+0x1dd4f) [0x7f686ef60d4f]
   9: /lib/x86_64-linux-gnu/libparted.so.2(+0x1dde0) [0x7f686ef60de0]
   8: /lib/x86_64-linux-gnu/libparted.so.2(+0x1dd89) [0x7f686ef60d89]
   7: /lib/x86_64-linux-gnu/libparted.so.2(+0x1ed75) [0x7f686ef61d75]
   6: /lib/x86_64-linux-gnu/libparted.so.2(ped_disk_new+0x48) 
[0x7f686ef52dd8]
   5: parted(+0x7343) [0x560b013b5343]
   4: parted(non_interactive_mode+0x92) [0x560b013bb102]
   3: parted(main+0x1238) [0x560b013b4028]
   2: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) 
[0x7f686e72b830]
   1: parted(_start+0x29) [0x560b013b41d9]

You found a bug in GNU Parted!

(...)

Assertion (metadata_length > 0) at ../../../libparted/labels/dos.c:2313 
in function add_logical_part_metadata() failed.

Aborted (core dumped)
````````````````````````````

Note that I do align the partitions in the real life, the operation 
above is just for simplicity.
I'm using Parted 3.2 from Ubuntu 16.04's software archive, I will try 
attach a coredump from the current HEAD of the master branch in the next 
reply.

V字龍 <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.