I encountered this bug since I build a custom kernel that didn't used an
initrd.

To produce an core dump, use the attached wrapper script and change
/etc/init.d/early-readahead to use it instead of /sbin/readahead (idea
taken from https://bugzilla.redhat.com/show_bug.cgi?id=500946).

In my case the problem is that readahead fails to check the return value
of blkid_devno_to_devname in get_file_device/readahead.c.

The comment in devno.c from libblkid clearly states that
blkid_devno_to_devname might fail and return NULL (that's what leads to
the segmentation fault when NULL is handed to ext2fs_open), so this is
definitively a bug in readahead-fedora.

I am not sure whats the big picture here, but that's whats happening:

I added some tracing to readahead.c and blkid_devno_to_devname fails
when called with 2053 as argument. A quick test with the attached
blkid.c says that this device number resolves to /dev/root, but when
early-readahead is run on an system without an initrd, there is no
/dev/root (on my system it's symlinked to my root partition later on, I
suspect udev does this, not sure though...).

Justus
#!/bin/sh

cd /lib/init/rw
ulimit -Sc unlimited

ls -l /dev/root >root_is 2>&1
/sbin/readahead "$@" 2> readahead.stderr
#include <stdio.h>
#include <blkid/blkid.h>

int
main()
{
	printf("%s\n", blkid_devno_to_devname(2053));
	return 0;
}

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to