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 +++

Reply via email to