I finally found the parted_servec.c into
http://packages.debian.org/squeeze/partman-base . I think the problem is
in the OPEN command path for /dev/sdb:
void
command_open()
{
log("command_open()"); <=== found in the log
char *device;
scan_device_name();
if (1 != iscanf("%as", &device))
critical_error("Expected device name.");
log("Request to open %s", device_name); <=== in the log
open_out();
if (device_opened(device_name)) {
static char *only_ok[] = { "OK", NULL };
log("Warning: the device is already opened");
pseudo_exception("Warning",
"The device is already opened.", only_ok);
} else {
set_device_named(device_name, ped_device_get(device));
}
oprintf("OK\n"); <=== In the log too
if (NULL != device_named(device_name)) {
oprintf("OK\n"); <=== Last line from the log
deactivate_exception_handler();
set_disk_named(device_name,
ped_disk_new(device_named(device_name)));
unchange_named(device_name);
activate_exception_handler();
} else
oprintf("failed\n");
free(device);
}
So I now suspect that the function ped_disk_new() is where parted_server
failed. But it's actually just a beat, not a proven fact.
I have see that in the install expert mode that parted can be loaded as
a additional component, so I did and give it a try:
parted /dev/sda print
Model: ATA ST9250315AS (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 54.5GB 54.5GB primary ntfs
3 54.5GB 55.1GB 537MB primary ext3 boot
4 55.1GB 250GB 195GB extended
5 55.1GB 109GB 53.7GB logical btrfs
2 250GB 250GB 21.2MB primary
Seem to be OK, despite the btrfs partition. Now with /dev/sdb:
parted /dev/sdb print
You found a bug in GNU Parted! Here's what you have to do:
Don't panic! The bug has most likely not affected any of your data.
Help us to fix this bug by doing the following:
Check whether the bug has already been fixed by checking
the last version of GNU Parted that you can find at:
http://ftp.gnu.org/gnu/parted/
Please check this version prior to bug reporting.
If this has not been fixed yet or if you don't know how to check,
please visit the GNU Parted website:
http://www.gnu.org/software/parted
for further information.
Your report should contain the version of this release (2.3)
along with the error message below, the output of
parted DEVICE unit co print unit s print
and the following history of commands you entered.
Also include any additional information about your setup you
consider important.
Assertion (dev != NULL) at ../../libparted/cs/geom.c:78 in function
ped_geometry_new() failed.
Ah! It's now clear that this is the 5MB FAT12 partition on /dev/sdb that
cause the problem. I think that the bug can now safely be assigned to
either parted or libparted0-udeb.
Here is the offending code:
/**
* Create a new PedGeometry object on \p disk, starting at \p start with a
* size of \p length sectors.
*
* \return NULL on failure.
*/
PedGeometry*
ped_geometry_new (const PedDevice* dev, PedSector start, PedSector length)
{
PedGeometry* geom;
PED_ASSERT (dev != NULL, return NULL); <=== Abort here.
geom = (PedGeometry*) ped_malloc (sizeof (PedGeometry));
if (!geom)
goto error;
if (!ped_geometry_init (geom, dev, start, length))
goto error_free_geom;
return geom;
error_free_geom:
free (geom);
error:
return NULL;
}
Obviously, this problem is not really into ped_geometry_new(), but into
a previously executed code that should have created the const PedDevice*
dev.
Now, is parted abort with a so clear assert message, this don't explain
why parted_server can terminate without generating a comparable message,
and why 30parted is unable to see that parted_server is not there
anymore. So maybe some more bugs should be open to fix all of this.
Regards,
Jean-Christian de Rivaz
--
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4cd538fb.2030...@eclis.ch