Am Freitag, den 24.07.2009, 20:40 +0200 schrieb Jean-Luc Coulon (f5ibh):
> Hi Felix,
> 
> >> Jean-Luc
> >
> >Oh not good.
> >Then please do again a debug compile with `DEB_BUILD_OPTIONS="nostrip
> >noopt debug" dpkg-buildpackage -b'
> >and get a backtrace with gdb.
> >See [0] for my previous mail but note the spaces now in
> >DEB_BUILD_OPTIONS instead of the commas. I was wrong.
> >
> >[0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=495949#30
> >
> 
> So, I rebuilt grub.
> Then as I don't know how to debug directly the shell script (grub-
> install), I laaunched it with set -x and got the failing line:
> 
> --->8---------->8------------->8----------->8------------>8----------
> ...
> + /usr/bin/grub-mkimage --output=/boot/grub/core.img '--prefix=(md0)/
> grub' biosdisk ext2 pc raid mdraid
> + /usr/sbin/grub-setup --force --directory=/boot/grub --device-map=/
> boot/grub/device.map /dev/md0
> ./grub-install: line 323:  4663 Erreur de segmentation  $grub_setup 
> ${setup_verbose} ${setup_force} --directory=${grubdir} --device-map=
> ${device_map} ${install_device}
> + exit 1
> --->8---------->8------------->8----------->8------------>8----------
> 
> So I launched gdb as follos, I don't know if it is the right process... 
> but I got a (small) backtrace):
> 
> --->8---------->8------------->8----------->8------------>8----------
> [jean-...@tangerine] % sudio gdb --args /usr/sbin/grub-setup --force --
> directory=/boot/grub --device-map=/boot/grub/device.map /dev/md0
> GNU gdb (GDB) 6.8.50.20090628-cvs-debian
> Copyright (C) 2009 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/
> gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show 
> copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> (gdb) run
> Starting program: /usr/sbin/grub-setup --force --directory=/boot/grub 
> --device-map=/boot/grub/device.map /dev/md0
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007ffff7b08c60 in strcmp () from /lib/libc.so.6
> (gdb) bt
> #0  0x00007ffff7b08c60 in strcmp () from /lib/libc.so.6
> #1  0x0000000000401cb1 in setup (dir=0x63e010 "/boot/grub", 
>     boot_file=0x4279f4 "boot.img", core_file=0x4279eb "core.img", 
>     root=0x64b9c0 "md0", dest=0x0, must_embed=1, force=1)
>     at /usr/local/src/tmp/grub/grub2-1.96+20090721/util/i386/pc/grub-
> setup.c:335
> #2  0x0000000000402cea in main (argc=5, argv=0x7fffffffe8a8)
>     at /usr/local/src/tmp/grub/grub2-1.96+20090721/util/i386/pc/grub-
> setup.c:774
> (gdb) 
> --->8---------->8------------->8----------->8------------>8----------
> 
> Best regards
> 
> Jean-Luc

Please test if the attached patch solves it.

-- 
Felix Zielcke
Index: util/i386/pc/grub-setup.c
===================================================================
--- util/i386/pc/grub-setup.c	(Revision 2441)
+++ util/i386/pc/grub-setup.c	(Revision 2442)
@@ -329,10 +329,18 @@
       dest_partmap = p->partmap->name;
       return 1;
     }
+  dest_partmap = 0;
   grub_partition_iterate (dest_dev->disk, identify_partmap);
 
+  if (! dest_partmap)
+    {
+      grub_util_warn ("Attempting to install GRUB to a partitionless disk.  This is a BAD idea.");
+      goto unable_to_embed;
+    }
+
   grub_partition_iterate (dest_dev->disk, (strcmp (dest_partmap, "pc_partition_map") ?
 					   find_usable_region_gpt : find_usable_region_msdos));
+
   if (embed_region.end == embed_region.start)
     {
       if (! strcmp (dest_partmap, "pc_partition_map"))

Reply via email to