Parted crashed with a partition table modified by fdisk in a certain way(Assertion (metadata_length > 0) at ../../../libparted/labels/dos.c:2313 in function add_logical_part_metadata() failed.)

Bug #1600557 reported by V字龍(Vdragon)
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
GNU Parted
New
Undecided
auto-bug-parted
parted (Ubuntu)
New
Medium
Unassigned

Bug Description

## Bug Reproduce Instructions ##
````````````````````````````

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 # print the partition table
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 # enter extra functionality menu (experts only)

Expert command (m for help): f # fix partitions order

Expert command (m for help): r # return to main menu

Command (m for help): w # write table to disk and exit
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)
````````````````````````````
ProblemType: Crash
DistroRelease: Ubuntu 16.04
Package: parted 3.2-15
ProcVersionSignature: Ubuntu 4.4.0-28.47-generic 4.4.13
Uname: Linux 4.4.0-28-generic x86_64
ApportVersion: 2.20.1-0ubuntu2.1
Architecture: amd64
CurrentDesktop: Unity
Date: Sun Jul 10 13:31:29 2016
ExecutablePath: /sbin/parted
ExecutableTimestamp: 1455197005
InstallationDate: Installed on 2016-01-07 (184 days ago)
InstallationMedia: Ubuntu 15.10 "Wily Werewolf" - Release amd64 (20151021)
ProcCmdline: parted /tmp/emulated-disk.img
ProcCwd: /var/crash
Signal: 6
SourcePackage: parted
StacktraceTop:
 ped_assert () from /lib/x86_64-linux-gnu/libparted.so.2
 ?? () from /lib/x86_64-linux-gnu/libparted.so.2
 ?? () from /lib/x86_64-linux-gnu/libparted.so.2
 ped_disk_add_partition () from /lib/x86_64-linux-gnu/libparted.so.2
 ?? () from /lib/x86_64-linux-gnu/libparted.so.2
Title: parted crashed with SIGABRT in ped_assert()
UpgradeStatus: Upgraded to xenial on 2016-04-07 (93 days ago)
UserGroups: adm lpadmin sambashare sudo

Revision history for this message
V字龍(Vdragon) (vdragon) wrote :
Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 ped_assert (cond_text=cond_text@entry=0x7fc3f164808e "metadata_length > 0", file=file@entry=0x7fc3f1647e80 "../../../libparted/labels/dos.c", line=line@entry=2313, function=function@entry=0x7fc3f1648400 <__PRETTY_FUNCTION__.5892> "add_logical_part_metadata") at ../../libparted/debug.c:111
 add_logical_part_metadata (log_part=0x55687bcf8d20, disk=0x55687bcf8230) at ../../../libparted/labels/dos.c:2313
 msdos_alloc_metadata (disk=0x55687bcf8230) at ../../../libparted/labels/dos.c:2444
 _disk_alloc_metadata (disk=0x55687bcf8230) at ../../libparted/disk.c:1011
 _disk_pop_update_mode (disk=0x55687bcf8230) at ../../libparted/disk.c:1164

Revision history for this message
Apport retracing service (apport) wrote : Stacktrace.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceSource.txt
Revision history for this message
Apport retracing service (apport) wrote : ThreadStacktrace.txt
Changed in parted (Ubuntu):
importance: Undecided → Medium
tags: removed: need-amd64-retrace
summary: - parted crashed with SIGABRT in ped_assert()
+ Parted crashed with a partition table modified by fdisk in a certain
+ way(Assertion (metadata_length > 0) at
+ ../../../libparted/labels/dos.c:2313 in function
+ add_logical_part_metadata() failed.)
description: updated
information type: Private → Public
description: updated
description: updated
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

  • auto-bug-parted Edit

Bug watches keep track of this bug in other bug trackers.