grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] fix for partmap detection on RAID/LVM


From: Sam Morris
Subject: Re: [PATCH] fix for partmap detection on RAID/LVM
Date: Fri, 08 Feb 2008 19:20:31 +0000

On Fri, 2008-02-08 at 15:52 +0100, Robert Millan wrote:
> New patch to fix partmap detection in LVM/RAID.  Changes in comparison to
> previous patch:

        (gdb) run -t partmap /boot/grub/
        Starting program: /home/sam/grub/grub2/grub-probe -t partmap /boot/grub/
        
        Program received signal SIGSEGV, Segmentation fault.
        0x0806035a in grub_raid_scan_device (name=0x806b080 "hd3,2") at 
disk/raid.c:442
        442           if (array->device[sb.this_disk.number]->name != 0)
        
        (gdb) print array
        $1 = (struct grub_raid_array *) 0x806f1f8
        
        (gdb) print array->device
        $2 = {0x806b118, 0x0 <repeats 31 times>}
        
        (gdb) print sb.this_disk.number
        $3 = 1
        
        (gdb) bt full
        #0  0x0806035a in grub_raid_scan_device (name=0x806b080 "hd3,2")
            at disk/raid.c:442
                err = <value optimized out>
                disk = <value optimized out>
                size = 578415649617870848
                sb = {md_magic = 2838187772, major_version = 0, minor_version = 
90, 
          patch_version = 3, gvalid_words = 0, set_uuid0 = 395026485, 
          ctime = 1139358627, level = 1, size = 292519488, nr_disks = 2, 
          raid_disks = 2, md_minor = 0, not_persistent = 0, set_uuid1 = 
2852015029, 
          set_uuid2 = 1808090526, set_uuid3 = 3461511789, gstate_creserved = {
            0 <repeats 16 times>}, utime = 1202498002, state = 1, active_disks 
= 2, 
          working_disks = 2, failed_disks = 0, spare_disks = 0, sb_csum = 
1132908899, 
          events_lo = 14301400, events_hi = 0, cp_events_lo = 14301400, 
          cp_events_hi = 0, recovery_cp = 4294967295, gstate_sreserved = {
            0 <repeats 20 times>}, layout = 0, chunk_size = 0, root_pv = 0, 
          root_block = 0, pstate_reserved = {0 <repeats 60 times>}, disks = {{
              number = 0, major = 3, minor = 66, raid_disk = 0, state = 6, 
reserved = {
                0 <repeats 27 times>}}, {number = 1, major = 34, minor = 2, 
              raid_disk = 1, state = 6, reserved = {0 <repeats 27 times>}}, {
              number = 0, major = 0, minor = 0, raid_disk = 0, state = 0, 
reserved = {
                0 <repeats 27 times>}} <repeats 25 times>}, reserved = 
0xbfb8175c, 
          this_disk = {number = 1, major = 34, minor = 2, raid_disk = 1, state 
= 6, 
            reserved = {0 <repeats 27 times>}}}
                p = (struct grub_raid_array *) 0x806f1f8
                array = (struct grub_raid_array *) 0x806f1f8
        #1  0x0804b69e in iterate_partition (disk=0x806b008, 
partition=0xbfb81b94)
            at kern/device.c:132
                partition_name = 0x806f378 "\001"
                ret = 1
                hook = (int (*)(const char *)) 0x80601c0 <grub_raid_scan_device>
        #2  0x0805cd0c in pc_partition_map_iterate (disk=0x806b008, 
hook=0xbfb81c9e)
            at partmap/pc.c:153
                i = <value optimized out>
                e = (struct grub_pc_partition_entry *) 0xbfb81a2a
                p = {start = 1060290, len = 585039105, offset = 0, index = 1, 
          data = 0xbfb81bb8, partmap = 0x8063a1c}
                pcdata = {dos_part = 1, bsd_part = -1, dos_type = 253, bsd_type 
= -1, 
          ext_offset = 0}
                mbr = {
          code = 
"��\000\020\216м\000��\000\000\216�\216���\000|�\000\006�\000\002���!\006\000\000��\a8\004u\v\203�\020\201��\au��\026�\002�\001�\000|�\200\212t\001\213L\002�\023�\000|\000\000��",
 '\0' <repeats 365 times>, "\204�\002\000\000", 
          entries = {{flag = 0 '\0', start_head = 1 '\001', start_sector = 1 
'\001', 
              start_cylinder = 0 '\0', type = 130 '\202', end_head = 254 '�', 
              end_sector = 63 '?', end_cylinder = 65 'A', start = 63, 
              length = 1060227}, {flag = 0 '\0', start_head = 0 '\0', 
              start_sector = 1 '\001', start_cylinder = 66 'B', type = 253 '
              end_head = 254 '�', end_sector = 255 '�', end_cylinder = 255 '�', 
              start = 1060290, length = 585039105}, {flag = 0 '\0', 
              start_head = 0 '\0', start_sector = 0 '\0', start_cylinder = 0 
'\0', 
              type = 0 '\0', end_head = 0 '\0', end_sector = 0 '\0', 
              end_cylinder = 0 '\0', start = 0, length = 0}, {flag = 0 '\0', 
              start_head = 0 '\0', start_sector = 0 '\0', start_cylinder = 0 
'\0', 
              type = 0 '\0', end_head = 0 '\0', end_sector = 0 '\0', 
              end_cylinder = 0 '\0', start = 0, length = 0}}, signature = 43605}
                label = {magic = 0, padding = '\0' <repeats 127 times>, magic2 
= 0, 
          checksum = 0, num_partitions = 0, boot_size = 0, superblock_size = 0, 
          entries = {{size = 0, offset = 0, fragment_size = 0, fs_type = 0 
'\0', 
              fs_fragments = 0 '\0', fs_cylinders = 0}, {size = 0, offset = 0, 
              fragment_size = 0, fs_type = 0 '\0', fs_fragments = 0 '\0', 
              fs_cylinders = 0}, {size = 0, offset = 0, fragment_size = 0, 
              fs_type = 0 '\0', fs_fragments = 0 '\0', fs_cylinders = 0}, {
              size = 134656064, offset = 134625056, fragment_size = 3216513864, 
              fs_type = 255 '�', fs_fragments = 225 '�', fs_cylinders = 2053}, {
              size = 128, offset = 131, fragment_size = 0, fs_type = 0 '\0', 
              fs_fragments = 0 '\0', fs_cylinders = 0}, {size = 134625820, 
              offset = 3216514036, fragment_size = 3216513880, fs_type = 158 
'\236', 
              fs_fragments = 227 '�', fs_cylinders = 2053}, {size = 0, offset = 
0, 
              fragment_size = 3216513928, fs_type = 131 '\203', 
              fs_fragments = 220 '�', fs_cylinders = 2052}, {size = 134615777, 
              offset = 134625820, fragment_size = 0, fs_type = 255 '�', 
              fs_fragments = 255 '�', fs_cylinders = 65535}}}
                raw = {name = 0x806b040 "hd3", dev = 0x8063720, 
          total_sectors = 586114704, has_partitions = 128, id = 131, partition 
= 0x0, 
          read_hook = 0, data = 0x0}
        #3  0x0804e1bf in grub_partition_iterate (hook=0xbfb81c9e)
            at kern/partition.c:126
                ret = <value optimized out>
                partmap = (grub_partition_map_t) 0x8063a1c
                disk = (struct grub_disk *) 0x806b008
        #4  0x0804b812 in iterate_disk (disk_name=0xbfb81c42 "hd3")
            at kern/device.c:101
                dev = (grub_device_t) 0x806b030
                hook = (int (*)(const char *)) 0x80601c0 <grub_raid_scan_device>
        #5  0x08049810 in grub_util_biosdisk_iterate (hook=0xbfb81c94)
            at util/biosdisk.c:131
                i = 131
        #6  0x0804b914 in grub_disk_dev_iterate (hook=0xbfb81c94) at 
kern/disk.c:205
                p = (grub_disk_dev_t) 0x8063720
        #7  0x0804b614 in grub_device_iterate (hook=0x80601c0 
<grub_raid_scan_device>)
            at kern/device.c:138
        No locals.
        #8  0x0805f9e2 in grub_mod_init (mod=0x0) at disk/raid.c:563
        No locals.
        #9  0x0805fa02 in grub_raid_init () at disk/raid.c:561
        No locals.
        #10 0x0804927c in main (argc=Cannot access memory at address 0xa9fe4bb5
        ) at util/grub-probe.c:338
                c = <value optimized out>
                dev_map = 0x0
                path = 0xbfb83bd7 "/boot/grub/"
        

I'll debug this further later if you don't know why it happened.

-- 
Sam Morris
http://robots.org.uk/

PGP key id 1024D/5EA01078
3412 EA18 1277 354B 991B  C869 B219 7FDB 5EA0 1078

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]