Package: mdadm Version: 3.2.2-1 Severity: normal I can reproducibly get a segmentation fault from mdadm by trying to convert a RAID10 array to a RAID0 array.
mdadm(8) says: > Grow Grow (or shrink) an array, or otherwise reshape it in some way. > Currently supported growth options including changing the active > size of component devices and changing the number of active > devices in Linear and RAID levels 0/1/4/5/6, changing the RAID > level between 0, 1, 5, and 6, and between 0 and 10, changing the > chunk size and layout for RAID 0,4,5,6, as well as adding or > removing a write-intent bitmap. here is a quick bash recipe for a system that is not already using the loop devices or any other MD device to get the segmentation fault (must be done as root): for x in 0 1 2 3; do dd if=/dev/zero of=./d$x bs=1M count=100 losetup /dev/loop$x ./d$x done mdadm /dev/md0 --create --level 10 --raid-devices 4 /dev/loop[0123] # get the array synced up: dd if=/dev/zero bs=512 count=1 of=/dev/md0 sleep 10 cat /proc/mdstat mdadm /dev/md0 --grow --level 0 I'm attaching an strace of the final command, which is what gives the segmentation fault. Although i'm reporting this on powerpc, i've also seen the same segfault on i386. The same segfault happens with metadata 0.9 and 1.2, so i don't think it's metadata version-related. Thanks for maintaining mdadm in debian! --dkg -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (500, 'testing'), (50, 'unstable') Architecture: powerpc (ppc64) Kernel: Linux 3.0.0-1-powerpc64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages mdadm depends on: ii debconf 1.5.40 ii initscripts 2.88dsf-13.11 ii libc6 2.13-21 ii lsb-base 3.2-28 ii makedev 2.3.1-89 ii udev 172-1 Versions of packages mdadm recommends: ii exim4-daemon-light [mail-transport-agent] 4.76-3 ii module-init-tools 3.16-1 mdadm suggests no packages. -- debconf information excluded
13080 execve("/sbin/mdadm", ["mdadm", "/dev/md0", "--grow", "--level", "0"], [/* 16 vars */]) = 0 13080 brk(0) = 0x101f3000 13080 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 13080 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf796a000 13080 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) 13080 open("/etc/ld.so.cache", O_RDONLY) = 3 13080 fstat64(3, {st_mode=S_IFREG|0644, st_size=107593, ...}) = 0 13080 mmap(NULL, 107593, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf794f000 13080 close(3) = 0 13080 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 13080 open("/lib/powerpc-linux-gnu/libc.so.6", O_RDONLY) = 3 13080 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\1\372\220\0\0\0004"..., 512) = 512 13080 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf794e000 13080 fstat64(3, {st_mode=S_IFREG|0755, st_size=1499344, ...}) = 0 13080 mmap(0xfe6f000, 1574176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfe6f000 13080 mprotect(0xffd9000, 61440, PROT_NONE) = 0 13080 mmap(0xffe8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x169000) = 0xffe8000 13080 mmap(0xffed000, 9504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffed000 13080 close(3) = 0 13080 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf794d000 13080 mprotect(0xffe8000, 16384, PROT_READ) = 0 13080 mprotect(0xf798b000, 4096, PROT_READ) = 0 13080 munmap(0xf794f000, 107593) = 0 13080 time(NULL) = 1318811433 13080 getpid() = 13080 13080 brk(0) = 0x101f3000 13080 brk(0x10214000) = 0x10214000 13080 open("/dev/md0", O_RDWR|O_LARGEFILE) = 3 13080 fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0 13080 ioctl(3, 0x400c0910, 0xfff09e68) = 0 13080 open("/etc/mdadm/mdadm.conf", O_RDONLY|O_LARGEFILE) = 4 13080 fstat64(4, {st_mode=S_IFREG|0644, st_size=626, ...}) = 0 13080 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7969000 13080 read(4, "# mdadm.conf\n#\n# Please refer to"..., 1024) = 626 13080 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5 13080 connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 13080 close(5) = 0 13080 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5 13080 connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 13080 close(5) = 0 13080 open("/etc/nsswitch.conf", O_RDONLY) = 5 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=475, ...}) = 0 13080 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7968000 13080 read(5, "# /etc/nsswitch.conf\n#\n# Example"..., 1024) = 475 13080 read(5, "", 1024) = 0 13080 close(5) = 0 13080 munmap(0xf7968000, 4096) = 0 13080 open("/etc/ld.so.cache", O_RDONLY) = 5 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=107593, ...}) = 0 13080 mmap(NULL, 107593, PROT_READ, MAP_PRIVATE, 5, 0) = 0xf7932000 13080 close(5) = 0 13080 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 13080 open("/lib/powerpc-linux-gnu/libnss_compat.so.2", O_RDONLY) = 5 13080 read(5, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\17\0\0\0\0004"..., 512) = 512 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=34640, ...}) = 0 13080 mmap(0xfe46000, 98868, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xfe46000 13080 mprotect(0xfe4e000, 61440, PROT_NONE) = 0 13080 mmap(0xfe5d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x7000) = 0xfe5d000 13080 close(5) = 0 13080 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 13080 open("/lib/powerpc-linux-gnu/libnsl.so.1", O_RDONLY) = 5 13080 read(5, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0008\360\0\0\0004"..., 512) = 512 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=96140, ...}) = 0 13080 mmap(0xfe0c000, 169660, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xfe0c000 13080 mprotect(0xfe22000, 65536, PROT_NONE) = 0 13080 mmap(0xfe32000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x16000) = 0xfe32000 13080 mmap(0xfe34000, 5820, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfe34000 13080 close(5) = 0 13080 mprotect(0xfe32000, 4096, PROT_READ) = 0 13080 mprotect(0xfe5d000, 4096, PROT_READ) = 0 13080 munmap(0xf7932000, 107593) = 0 13080 open("/etc/ld.so.cache", O_RDONLY) = 5 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=107593, ...}) = 0 13080 mmap(NULL, 107593, PROT_READ, MAP_PRIVATE, 5, 0) = 0xf7932000 13080 close(5) = 0 13080 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 13080 open("/lib/powerpc-linux-gnu/libnss_nis.so.2", O_RDONLY) = 5 13080 read(5, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\33 \0\0\0004"..., 512) = 512 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=46820, ...}) = 0 13080 mmap(0xfde0000, 111168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xfde0000 13080 mprotect(0xfdeb000, 61440, PROT_NONE) = 0 13080 mmap(0xfdfa000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xa000) = 0xfdfa000 13080 close(5) = 0 13080 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 13080 open("/lib/powerpc-linux-gnu/libnss_files.so.2", O_RDONLY) = 5 13080 read(5, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\33@\0\0\0004"..., 512) = 512 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=50844, ...}) = 0 13080 mmap(0xfdb3000, 115404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xfdb3000 13080 mprotect(0xfdbf000, 61440, PROT_NONE) = 0 13080 mmap(0xfdce000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xb000) = 0xfdce000 13080 close(5) = 0 13080 mprotect(0xfdce000, 4096, PROT_READ) = 0 13080 mprotect(0xfdfa000, 4096, PROT_READ) = 0 13080 munmap(0xf7932000, 107593) = 0 13080 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 5 13080 _llseek(5, 0, [0], SEEK_CUR) = 0 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=1628, ...}) = 0 13080 mmap2(NULL, 1628, PROT_READ, MAP_SHARED, 5, 0) = 0xf7968000 13080 _llseek(5, 1628, [1628], SEEK_SET) = 0 13080 munmap(0xf7968000, 1628) = 0 13080 close(5) = 0 13080 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5 13080 connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 13080 close(5) = 0 13080 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5 13080 connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 13080 close(5) = 0 13080 open("/etc/group", O_RDONLY|O_CLOEXEC) = 5 13080 _llseek(5, 0, [0], SEEK_CUR) = 0 13080 fstat64(5, {st_mode=S_IFREG|0644, st_size=874, ...}) = 0 13080 mmap2(NULL, 874, PROT_READ, MAP_SHARED, 5, 0) = 0xf7968000 13080 _llseek(5, 874, [874], SEEK_SET) = 0 13080 munmap(0xf7968000, 874) = 0 13080 close(5) = 0 13080 read(4, "", 1024) = 0 13080 read(4, "", 1024) = 0 13080 close(4) = 0 13080 munmap(0xf7969000, 4096) = 0 13080 uname({sys="Linux", node="tut", ...}) = 0 13080 geteuid() = 0 13080 ioctl(3, 0x40480911, 0xfff09d08) = 0 13080 ioctl(3, 0x400c0910, 0xfff07ba8) = 0 13080 fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0 13080 open("/sys/block/md0/md/metadata_version", O_RDONLY|O_LARGEFILE) = 4 13080 read(4, "1.2\n", 1024) = 4 13080 close(4) = 0 13080 fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0 13080 ioctl(3, 0x400c0910, 0xfff07c38) = 0 13080 fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0 13080 open("/sys/block/md0/md/metadata_version", O_RDONLY|O_LARGEFILE) = 4 13080 read(4, "1.2\n", 1024) = 4 13080 close(4) = 0 13080 open("/sys/block/md0/md/level", O_RDONLY|O_LARGEFILE) = 4 13080 read(4, "raid10\n", 1024) = 7 13080 close(4) = 0 13080 open("/sys/block/md0/md/raid_disks", O_RDONLY|O_LARGEFILE) = 4 13080 read(4, "4\n", 1024) = 2 13080 close(4) = 0 13080 open("/sys/block/md0/md/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4 13080 getdents64(4, /* 33 entries */, 32768) = 1104 13080 open("/sys/block/md0/md/dev-loop1/slot", O_RDONLY|O_LARGEFILE) = 5 13080 read(5, "1\n", 1024) = 2 13080 close(5) = 0 13080 open("/sys/block/md0/md/dev-loop1/block/dev", O_RDONLY|O_LARGEFILE) = 5 13080 read(5, "7:1\n", 1024) = 4 13080 close(5) = 0 13080 open("/sys/block/md0/md/dev-loop1/block/device/state", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) 13080 open("/sys/block/md0/md/dev-loop1/state", O_RDONLY|O_LARGEFILE) = 5 13080 read(5, "in_sync\n", 1024) = 8 13080 close(5) = 0 13080 open("/sys/block/md0/md/dev-loop3/slot", O_RDONLY|O_LARGEFILE) = 5 13080 read(5, "3\n", 1024) = 2 13080 close(5) = 0 13080 open("/sys/block/md0/md/dev-loop3/block/dev", O_RDONLY|O_LARGEFILE) = 5 13080 read(5, "7:3\n", 1024) = 4 13080 close(5) = 0 13080 open("/sys/block/md0/md/dev-loop3/block/device/state", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) 13080 open("/sys/block/md0/md/dev-loop3/state", O_RDONLY|O_LARGEFILE) = 5 13080 read(5, "in_sync\n", 1024) = 8 13080 close(5) = 0 13080 getdents64(4, /* 0 entries */, 32768) = 0 13080 close(4) = 0 13080 open("/sys/block/md0/md/metadata_version", O_RDONLY|O_LARGEFILE) = 4 13080 read(4, "1.2\n", 1024) = 4 13080 close(4) = 0 13080 open("/sys/block/md0/md//array_state", O_RDWR|O_LARGEFILE) = 4 13080 _llseek(4, 0, [0], SEEK_SET) = 0 13080 read(4, "active\n", 20) = 7 13080 close(4) = 0 13080 stat64("/sys/block/md0/md//sync_action", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 13080 open("/sys/block/md0/md//sync_action", O_RDWR|O_LARGEFILE) = 4 13080 _llseek(4, 0, [0], SEEK_SET) = 0 13080 read(4, "frozen\n", 20) = 7 13080 close(4) = 0 13080 open("/sys/block/md0/md//sync_action", O_WRONLY|O_LARGEFILE) = 4 13080 write(4, "frozen", 6) = 6 13080 close(4) = 0 13080 fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0 13080 open("/proc/devices", O_RDONLY|O_LARGEFILE) = 4 13080 fstat64(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 13080 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7969000 13080 read(4, "Character devices:\n 1 mem\n 4 /"..., 1024) = 501 13080 read(4, "", 1024) = 0 13080 close(4) = 0 13080 munmap(0xf7969000, 4096) = 0 13080 open("/sys/block/md0/md/component_size", O_RDONLY|O_LARGEFILE) = 4 13080 read(4, "101888\n", 50) = 7 13080 close(4) = 0 13080 --- SIGSEGV (Segmentation fault) @ 0 (0) --- 13080 +++ killed by SIGSEGV +++