Date: Sat, 8 Jun 2013 20:53:48 -0400 From: Glen Barber <gjb@FreeBSD.org> To: Hiroki Sato <hrs@FreeBSD.org> Cc: freebsd-current@FreeBSD.org, jimmy.kelley@charter.net Subject: Re: 10-CURRENT i386 memstick snapshots broken? Message-ID: <20130609005348.GG13292@glenbarber.us> In-Reply-To: <20130609.050100.598816322573845734.hrs@allbsd.org> References: <20130607205129.GA1103@jmobile.jimmy.net> <20130607212256.GG38117@glenbarber.us> <20130608173411.GD13292@glenbarber.us> <20130609.050100.598816322573845734.hrs@allbsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--qoTlaiD+Y2fIM3Ll Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Jun 09, 2013 at 05:01:00AM +0900, Hiroki Sato wrote: > gj> Because the userland is 32-bit and the kernel is 64-bit, "something" > gj> goes wrong, but interestingly not wrong enough that the script fails > gj> entirely. So, the paritions appear to be created, but in reality, th= ey > gj> are not. > gj> > gj> So, for the snapshots case, the solution is to write the memstick ima= ge > gj> from outside of the chroot environment, which is easy to do because > gj> I already do this for creating the VM disk images (interestingly for = the > gj> same reason as the memstick creation failure). >=20 > I do not think there is a problem with cross building in chroot. cross-building, no, there is no problem. > allbsd.org is also generating i386 snapshots on an amd64 box in > almost the same way as generate-release.sh, but the memstick images > already generated were not broken as far as I can check. Although I > do not use generate-release.sh on it because I added another build > world stage in chroot before cross compiling, the difference is > small. >=20 > What was exactly gone wrong in 32-bit binary on 64-bit kernel? The problem is creating the gpart(8) partition scheme on the md(4) device. Below follows script(1) output of what the make-memstick.sh script does: =20 Script started on Sun Jun 9 00:41:08 2013 root@snap:/snap/releng # chroot /snap/releng/10-i386-snap root@snap:/ # cd /usr/obj/usr/src/release root@snap:/usr/obj/usr/src/release # echo \ '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > release/etc/fstab root@snap:/usr/obj/usr/src/release # makefs -B \ little -o label=3DFreeBSD_Install test.img release Calculated size of `test.img': 649420800 bytes, 12922 inodes Extent size set to 8192 test.img: 619.3MB (1268400 sectors) block size 8192, fragment size 1024 using 12 cylinder groups of 54.40MB, 6963 blks, 1152 inodes. super-block backups (for fsck -b #) at: 32, 111440, 222848, 334256, 445664, 557072, 668480, 779888, 891296, 1002704, 1114112, 1225520, Populating `test.img' Image `test.img' complete root@snap:/usr/obj/usr/src/release # mdconfig -a -t vnode -f test.img md0 =20 All fine up until this point. Now the gpart(8) partition is created: root@snap:/usr/obj/usr/src/release # gpart create -s BSD /dev/md0 gpart: Inappropriate ioctl for device root@snap:/usr/obj/usr/src/release # gpart list md0 Segmentation fault (core dumped) I also ran into this when initially creating the 8.4-RELEASE memory stick images, which uses fdisk(8) instead of gpart(8). I basically attributed this to "probably shouldn't be expected to work", such as doing netstat(1) on within 32-bit chroot/jail on a 64-bit kernel. root@snap:/usr/obj/usr/src/release # gdb -c ./gpart.core gpart GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you = are welcome to change it and/or distribute copies of it under certain conditi= ons. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for detail= s. This GDB was configured as "i386-marcel-freebsd"...(no debugging symbols = found)... Core was generated by `gpart'. Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/libgeom.so.5...(no debugging symbols found)...d= one. Loaded symbols for /lib/libgeom.so.5 Reading symbols from /lib/libsbuf.so.6...(no debugging symbols found)...d= one. Loaded symbols for /lib/libsbuf.so.6 Reading symbols from /lib/libbsdxml.so.4...(no debugging symbols found)..= =2Edone. Loaded symbols for /lib/libbsdxml.so.4 Reading symbols from /lib/libutil.so.9...(no debugging symbols found)...d= one. Loaded symbols for /lib/libutil.so.9 Reading symbols from /lib/libc.so.7...(no debugging symbols found)...done. Loaded symbols for /lib/libc.so.7 Reading symbols from /lib/geom/geom_part.so...(no debugging symbols found= )...done. Loaded symbols for /lib/geom/geom_part.so Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols found).= =2E.done. Loaded symbols for /libexec/ld-elf.so.1 #0 0x28070205 in geom_deletetree () from /lib/libgeom.so.5 (gdb) bt #0 0x28070205 in geom_deletetree () from /lib/libgeom.so.5 #1 0x08049b43 in ?? () #2 0xffffcbf0 in ?? () #3 0x28813050 in ?? () #4 0x0804cb1a in ?? () #5 0x28813030 in ?? () #6 0x0804e63d in __stderrp () #7 0x00000000 in ?? () I can rebuild gpart(8) with debugging symbols enabled tomorrow. The machine is churning through builds at the moment. Glen --qoTlaiD+Y2fIM3Ll Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJRs9IcAAoJEFJPDDeguUajBX0H/A/dc3R7mcnT/mtG2icF+hX+ pLY29H6v9Ois5o8gRl7MkerTse/TStJshp64f7u8FCrCPwB+xkP2MyUMJ/2V7JLg WkFmYiM6M8FdHrak/FQfrHIBe/3RSoIdgYDnZB2LzFjgWDEv5QK+qxZRe5Kv2Tvr 27uAtma3JBlSXiIJ9sfOyEmiXWZMgXNh9TLpO5caBiHT7BJWbQkw8L+eylATWIZV uxZ84R0I6AtulrbYOh32yTpR+Ic5iCz2xP2rRUZIeMVP0n1O+dNuGJo2PGsKtYSV +2wmk2W21gNP1avYTST/FwDcB37dOYlPg+ZyaaiHHt1OoWlxMOhj6e1lOrEnu3A= =1GMu -----END PGP SIGNATURE----- --qoTlaiD+Y2fIM3Ll--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130609005348.GG13292>