Activity log for bug #1499838

Date Who What changed Old value New value Message
2015-09-25 18:47:21 Newell Jensen bug added bug
2015-09-25 18:47:28 Newell Jensen freeipmi (Ubuntu): status New Confirmed
2015-09-25 18:47:35 Newell Jensen freeipmi (Ubuntu): assignee Newell Jensen (newell-jensen)
2015-09-25 18:50:21 dann frazier bug watch added http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800038
2015-09-25 18:50:21 dann frazier bug task added freeipmi (Debian)
2015-09-25 19:02:37 dann frazier nominated for series Ubuntu Precise
2015-09-25 19:02:37 dann frazier bug task added freeipmi (Ubuntu Precise)
2015-09-25 19:02:37 dann frazier nominated for series Ubuntu Vivid
2015-09-25 19:02:37 dann frazier bug task added freeipmi (Ubuntu Vivid)
2015-09-25 19:02:37 dann frazier nominated for series Ubuntu Wily
2015-09-25 19:02:37 dann frazier bug task added freeipmi (Ubuntu Wily)
2015-09-25 19:02:37 dann frazier nominated for series Ubuntu Trusty
2015-09-25 19:02:37 dann frazier bug task added freeipmi (Ubuntu Trusty)
2015-09-25 19:02:49 dann frazier freeipmi (Ubuntu Vivid): status New Confirmed
2015-09-25 19:02:51 dann frazier freeipmi (Ubuntu Trusty): status New Confirmed
2015-09-25 23:50:44 Bug Watch Updater freeipmi (Debian): status Unknown New
2015-09-29 21:06:48 Newell Jensen description strace shows you what is going on. The relevant code is in libfreeipmi/locate/ipmi-locate-dmidecode.c, where it is trolling through /dev/mem. ubuntu@cvm1:~$ dmesg ubuntu@cvm1:~$ sudo strace -f ipmi-locate execve("/usr/sbin/ipmi-locate", ["ipmi-locate"], [/* 14 vars */]) = 0 brk(0) = 0xffffaea81000 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7ca000 faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=39330, ...}) = 0 mmap(NULL, 39330, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffff8a7c0000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/libfreeipmi.so.12", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\200\361\21\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=4443888, ...}) = 0 mmap(NULL, 4507696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a356000 mprotect(0xffff8a5eb000, 65536, PROT_NONE) = 0 mmap(0xffff8a5fb000, 1736704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x295000) = 0xffff8a5fb000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\250\16\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1275592, ...}) = 0 mmap(NULL, 1348480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a20c000 mprotect(0xffff8a33d000, 61440, PROT_NONE) = 0 mmap(0xffff8a34c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x130000) = 0xffff8a34c000 mmap(0xffff8a352000, 13184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffff8a352000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libgcrypt.so.11", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\300~\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=474496, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7bf000 mmap(NULL, 473688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a198000 mmap(0xffff8a208000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x70000) = 0xffff8a208000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\240R\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=588696, ...}) = 0 mmap(NULL, 651944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a0f8000 mprotect(0xffff8a187000, 61440, PROT_NONE) = 0 mmap(0xffff8a196000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8e000) = 0xffff8a196000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\n\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=18312, ...}) = 0 mmap(NULL, 82008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a0e3000 mprotect(0xffff8a0e6000, 65536, PROT_NONE) = 0 mmap(0xffff8a0f6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xffff8a0f6000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7be000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0e2000 mprotect(0xffff8a34c000, 16384, PROT_READ) = 0 mprotect(0xffff8a0f6000, 4096, PROT_READ) = 0 mprotect(0xffff8a196000, 4096, PROT_READ) = 0 mprotect(0xffff8a208000, 4096, PROT_READ) = 0 mprotect(0xffff8a5fb000, 339968, PROT_READ) = 0 mprotect(0xffff8a7e4000, 4096, PROT_READ) = 0 mprotect(0xffff8a7ce000, 4096, PROT_READ) = 0 munmap(0xffff8a7c0000, 39330) = 0 brk(0) = 0xffffaea81000 brk(0xffffaeaa2000) = 0xffffaeaa2000 getrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0 setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0 getuid() = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0d2000 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing KCS device using DMIDECO"..., 45Probing KCS device using DMIDECODE... FAILED ) = 45 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing SMIC device using DMIDEC"..., 46Probing SMIC device using DMIDECODE... FAILED ) = 46 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing BT device using DMIDECOD"..., 44Probing BT device using DMIDECODE... FAILED ) = 44 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing SSIF device using DMIDEC"..., 46Probing SSIF device using DMIDECODE... FAILED ) = 46 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/dev/mem", O_RDONLY|O_SYNC) = 3 mmap(NULL, 65536, PROT_READ, MAP_PRIVATE, 3, 0xf0000) = 0xffff8a0c2000 close(3) = 0 --- SIGBUS {si_signo=SIGBUS, si_code=SI_USER, si_pid=18446744071730634752, si_uid=65535} --- +++ killed by SIGBUS (core dumped) +++ ubuntu@cvm1:~$ dmesg [61820.238001] Unhandled fault: synchronous external abort (0x92000210) at 0x0000ffff8a0c2000 ubuntu@cvm1:~$ ipmi-locate throws a synchronous external abort error on Cavium Thunder crb ARM64 hardware. A fix for this is needed because other programs, such as MAAS (where it was first noticed), rely upon it. strace shows you what is going on. The relevant code is in libfreeipmi/locate/ipmi-locate-dmidecode.c, where it is trolling through /dev/mem. ubuntu@cvm1:~$ dmesg ubuntu@cvm1:~$ sudo strace -f ipmi-locate execve("/usr/sbin/ipmi-locate", ["ipmi-locate"], [/* 14 vars */]) = 0 brk(0) = 0xffffaea81000 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7ca000 faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=39330, ...}) = 0 mmap(NULL, 39330, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffff8a7c0000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/libfreeipmi.so.12", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\200\361\21\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=4443888, ...}) = 0 mmap(NULL, 4507696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a356000 mprotect(0xffff8a5eb000, 65536, PROT_NONE) = 0 mmap(0xffff8a5fb000, 1736704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x295000) = 0xffff8a5fb000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\250\16\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1275592, ...}) = 0 mmap(NULL, 1348480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a20c000 mprotect(0xffff8a33d000, 61440, PROT_NONE) = 0 mmap(0xffff8a34c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x130000) = 0xffff8a34c000 mmap(0xffff8a352000, 13184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffff8a352000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libgcrypt.so.11", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\300~\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=474496, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7bf000 mmap(NULL, 473688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a198000 mmap(0xffff8a208000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x70000) = 0xffff8a208000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\240R\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=588696, ...}) = 0 mmap(NULL, 651944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a0f8000 mprotect(0xffff8a187000, 61440, PROT_NONE) = 0 mmap(0xffff8a196000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8e000) = 0xffff8a196000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\n\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=18312, ...}) = 0 mmap(NULL, 82008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a0e3000 mprotect(0xffff8a0e6000, 65536, PROT_NONE) = 0 mmap(0xffff8a0f6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xffff8a0f6000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7be000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0e2000 mprotect(0xffff8a34c000, 16384, PROT_READ) = 0 mprotect(0xffff8a0f6000, 4096, PROT_READ) = 0 mprotect(0xffff8a196000, 4096, PROT_READ) = 0 mprotect(0xffff8a208000, 4096, PROT_READ) = 0 mprotect(0xffff8a5fb000, 339968, PROT_READ) = 0 mprotect(0xffff8a7e4000, 4096, PROT_READ) = 0 mprotect(0xffff8a7ce000, 4096, PROT_READ) = 0 munmap(0xffff8a7c0000, 39330) = 0 brk(0) = 0xffffaea81000 brk(0xffffaeaa2000) = 0xffffaeaa2000 getrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0 setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0 getuid() = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0d2000 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing KCS device using DMIDECO"..., 45Probing KCS device using DMIDECODE... FAILED ) = 45 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing SMIC device using DMIDEC"..., 46Probing SMIC device using DMIDECODE... FAILED ) = 46 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing BT device using DMIDECOD"..., 44Probing BT device using DMIDECODE... FAILED ) = 44 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing SSIF device using DMIDEC"..., 46Probing SSIF device using DMIDECODE... FAILED ) = 46 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/dev/mem", O_RDONLY|O_SYNC) = 3 mmap(NULL, 65536, PROT_READ, MAP_PRIVATE, 3, 0xf0000) = 0xffff8a0c2000 close(3) = 0 --- SIGBUS {si_signo=SIGBUS, si_code=SI_USER, si_pid=18446744071730634752, si_uid=65535} --- +++ killed by SIGBUS (core dumped) +++ ubuntu@cvm1:~$ dmesg [61820.238001] Unhandled fault: synchronous external abort (0x92000210) at 0x0000ffff8a0c2000 ubuntu@cvm1:~$ [Test Case] To reproduce this bug, you will need: 1. Have access to Cavium Thunder crb arm64 hardware (I have not tested this on other arm64 systems but those could work as well) and have Ubuntu with ipmi-locate installed. 2. Run the strace command as shown above. [Regression Potential] Although unlikely, if any regressions were to manifest it would most likely be with/without ARM systems and how these C preprocessor directives are compiled into or out of the binaries. Both x86 and arm64 systems have been tested with the patch and no regressions surfaced.
2015-09-29 21:07:44 Newell Jensen attachment added ipmi-locate.diff https://bugs.launchpad.net/ubuntu/+source/freeipmi/+bug/1499838/+attachment/4479304/+files/ipmi-locate.diff
2015-09-29 21:12:46 Newell Jensen attachment added strace.txt https://bugs.launchpad.net/ubuntu/+source/freeipmi/+bug/1499838/+attachment/4479306/+files/strace.txt
2015-09-29 21:15:31 Newell Jensen description ipmi-locate throws a synchronous external abort error on Cavium Thunder crb ARM64 hardware. A fix for this is needed because other programs, such as MAAS (where it was first noticed), rely upon it. strace shows you what is going on. The relevant code is in libfreeipmi/locate/ipmi-locate-dmidecode.c, where it is trolling through /dev/mem. ubuntu@cvm1:~$ dmesg ubuntu@cvm1:~$ sudo strace -f ipmi-locate execve("/usr/sbin/ipmi-locate", ["ipmi-locate"], [/* 14 vars */]) = 0 brk(0) = 0xffffaea81000 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7ca000 faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=39330, ...}) = 0 mmap(NULL, 39330, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffff8a7c0000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/libfreeipmi.so.12", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\200\361\21\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=4443888, ...}) = 0 mmap(NULL, 4507696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a356000 mprotect(0xffff8a5eb000, 65536, PROT_NONE) = 0 mmap(0xffff8a5fb000, 1736704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x295000) = 0xffff8a5fb000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\250\16\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1275592, ...}) = 0 mmap(NULL, 1348480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a20c000 mprotect(0xffff8a33d000, 61440, PROT_NONE) = 0 mmap(0xffff8a34c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x130000) = 0xffff8a34c000 mmap(0xffff8a352000, 13184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffff8a352000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libgcrypt.so.11", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\300~\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=474496, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7bf000 mmap(NULL, 473688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a198000 mmap(0xffff8a208000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x70000) = 0xffff8a208000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\240R\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=588696, ...}) = 0 mmap(NULL, 651944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a0f8000 mprotect(0xffff8a187000, 61440, PROT_NONE) = 0 mmap(0xffff8a196000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8e000) = 0xffff8a196000 close(3) = 0 faccessat(AT_FDCWD, "/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\n\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=18312, ...}) = 0 mmap(NULL, 82008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff8a0e3000 mprotect(0xffff8a0e6000, 65536, PROT_NONE) = 0 mmap(0xffff8a0f6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xffff8a0f6000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a7be000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0e2000 mprotect(0xffff8a34c000, 16384, PROT_READ) = 0 mprotect(0xffff8a0f6000, 4096, PROT_READ) = 0 mprotect(0xffff8a196000, 4096, PROT_READ) = 0 mprotect(0xffff8a208000, 4096, PROT_READ) = 0 mprotect(0xffff8a5fb000, 339968, PROT_READ) = 0 mprotect(0xffff8a7e4000, 4096, PROT_READ) = 0 mprotect(0xffff8a7ce000, 4096, PROT_READ) = 0 munmap(0xffff8a7c0000, 39330) = 0 brk(0) = 0xffffaea81000 brk(0xffffaeaa2000) = 0xffffaeaa2000 getrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0 setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM64_INFINITY}) = 0 getuid() = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0d2000 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing KCS device using DMIDECO"..., 45Probing KCS device using DMIDECODE... FAILED ) = 45 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing SMIC device using DMIDEC"..., 46Probing SMIC device using DMIDECODE... FAILED ) = 46 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing BT device using DMIDECOD"..., 44Probing BT device using DMIDECODE... FAILED ) = 44 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/proc/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/sys/firmware/efi/systab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0400, st_size=4096, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff8a0c2000 read(3, "ACPI20=0xffea16000\n", 4096) = 19 read(3, "", 4096) = 0 close(3) = 0 munmap(0xffff8a0c2000, 65536) = 0 write(1, "Probing SSIF device using DMIDEC"..., 46Probing SSIF device using DMIDECODE... FAILED ) = 46 write(1, "\n", 1 ) = 1 openat(AT_FDCWD, "/dev/mem", O_RDONLY|O_SYNC) = 3 mmap(NULL, 65536, PROT_READ, MAP_PRIVATE, 3, 0xf0000) = 0xffff8a0c2000 close(3) = 0 --- SIGBUS {si_signo=SIGBUS, si_code=SI_USER, si_pid=18446744071730634752, si_uid=65535} --- +++ killed by SIGBUS (core dumped) +++ ubuntu@cvm1:~$ dmesg [61820.238001] Unhandled fault: synchronous external abort (0x92000210) at 0x0000ffff8a0c2000 ubuntu@cvm1:~$ [Test Case] To reproduce this bug, you will need: 1. Have access to Cavium Thunder crb arm64 hardware (I have not tested this on other arm64 systems but those could work as well) and have Ubuntu with ipmi-locate installed. 2. Run the strace command as shown above. [Regression Potential] Although unlikely, if any regressions were to manifest it would most likely be with/without ARM systems and how these C preprocessor directives are compiled into or out of the binaries. Both x86 and arm64 systems have been tested with the patch and no regressions surfaced. ipmi-locate throws a synchronous external abort error on Cavium Thunder crb ARM64 hardware. A fix for this is needed because other programs, such as MAAS (where it was first noticed), rely upon it. The strace log (see attached below) shows the error. [Test Case] To reproduce this bug, you will need: 1. Have access to Cavium Thunder crb arm64 hardware (I have not tested this on other arm64 systems but those could work as well) and have Ubuntu with ipmi-locate installed. 2. Run the strace command as shown above. [Regression Potential] Although unlikely, if any regressions were to manifest it would most likely be with/without ARM systems and how these C preprocessor directives are compiled into or out of the binaries. Both x86 and arm64 systems have been tested with the patch and no regressions surfaced.
2015-09-30 00:18:24 Ubuntu Foundations Team Bug Bot tags patch
2015-09-30 00:18:35 Ubuntu Foundations Team Bug Bot bug added subscriber Ubuntu Review Team
2015-09-30 15:27:58 Newell Jensen freeipmi (Ubuntu Wily): status Confirmed In Progress
2015-10-09 05:17:53 Launchpad Janitor branch linked lp:~ubuntu-branches/ubuntu/wily/freeipmi/wily-proposed
2015-10-09 06:16:01 Launchpad Janitor freeipmi (Ubuntu Wily): status In Progress Fix Released
2015-10-14 19:15:06 Chris J Arges freeipmi (Ubuntu Trusty): status Confirmed Fix Committed
2015-10-14 19:15:11 Chris J Arges bug added subscriber Ubuntu Stable Release Updates Team
2015-10-14 19:15:19 Chris J Arges bug added subscriber SRU Verification
2015-10-14 19:15:28 Chris J Arges tags patch patch verification-needed
2015-10-14 19:16:39 Chris J Arges freeipmi (Ubuntu Vivid): status Confirmed Fix Committed
2015-10-14 19:34:38 Launchpad Janitor branch linked lp:ubuntu/vivid-proposed/freeipmi
2015-10-14 19:34:40 Launchpad Janitor branch linked lp:ubuntu/trusty-proposed/freeipmi
2015-10-14 23:52:21 dann frazier tags patch verification-needed patch verification-done
2015-10-21 20:13:18 Launchpad Janitor freeipmi (Ubuntu Trusty): status Fix Committed Fix Released
2015-10-21 20:13:23 Chris J Arges removed subscriber Ubuntu Stable Release Updates Team
2015-10-21 20:13:50 Launchpad Janitor freeipmi (Ubuntu Vivid): status Fix Committed Fix Released
2017-06-29 06:48:51 Bug Watch Updater freeipmi (Debian): status New Confirmed
2021-03-08 17:14:33 Bug Watch Updater freeipmi (Debian): status Confirmed Fix Released
2021-10-14 02:22:20 Steve Langasek freeipmi (Ubuntu Precise): status New Won't Fix