I have looked at the 3 coredumps, and it is always the same type of crash. The program terminated with an abort signal (SIGABRT). In this case SIGABRT is called by libc and other libraries to abort the program due to error.
# gdb - post-crash analysis
---
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `xfs_logprint -c /dev/mapper/image-glance'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f534e0dfc37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007f534e0dfc37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007f534e0e3028 in __GI_abort () at abort.c:89
#2 0x00000000004323e1 in xlog_panic (fmt=<optimized out>) at util.c:129
#3 0x000000000040447e in xlog_print_trans_inode (ptr=ptr@entry=0x7fff4a571798, len=<optimized out>, i=i@entry=0x7fff4a571794, num_ops=num_ops@entry=68) at log_misc.c:748
#4 0x0000000000404cf9 in xlog_print_record (fd=<optimized out>, num_ops=68, len=<optimized out>, read_type=<optimized out>, partial_buf=<optimized out>, rhead=<optimized out>, xhdrs=0x0) at log_misc.c:984
#5 0x0000000000404f49 in xfs_log_print (log=log@entry=0x7fff4a571aa0, fd=fd@entry=3, print_block_start=print_block_start@entry=-1) at log_misc.c:1349
#6 0x0000000000401eba in main (argc=<optimized out>, argv=<optimized out>) at logprint.c:241
(gdb) frame 3
#3 0x000000000040447e in xlog_print_trans_inode (ptr=ptr@entry=0x7fff4a571798, len=<optimized out>, i=i@entry=0x7fff4a571794, num_ops=num_ops@entry=68) at log_misc.c:748
748 log_misc.c: No such file or directory.
It seems like the "ilf_fields" value is outside the range of what xfsprogs is expecting too. Forcing the code to pick the default: statement, display the error and then xlog_panic().
There is an upstream commit that does a rework of the function xlog_print_trans_inode() found in frame #3 to handle more than one field type set (f->ilf_fields).
I have strong believe this rework will fix the actual situation.
I have looked at the 3 coredumps, and it is always the same type of crash. The program terminated with an abort signal (SIGABRT). In this case SIGABRT is called by libc and other libraries to abort the program due to error.
# xfsprogs: logprint/log_misc.c _("xlog_ print_trans_ inode: illegal inode type")); trans_inode */
---
default: {
xlog_panic(
}
}
return 0;
} /* xlog_print_
---
# gdb - post-crash analysis 64-linux- gnu/libthread_ db.so.1" . image-glance' . sysdeps/ unix/sysv/ linux/raise. c:56 sysdeps/ unix/sysv/ linux/raise. c: No such file or directory.
---
Using host libthread_db library "/lib/x86_
Core was generated by `xfs_logprint -c /dev/mapper/
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f534e0dfc37 in __GI_raise (sig=sig@entry=6) at ../nptl/
56 ../nptl/
(gdb) bt sysdeps/ unix/sysv/ linux/raise. c:56 trans_inode (ptr=ptr@ entry=0x7fff4a5 71798, len=<optimized out>, i=i@entry= 0x7fff4a571794, num_ops= num_ops@ entry=68) at log_misc.c:748 <optimized out>, partial_ buf=<optimized out>, rhead=<optimized out>, xhdrs=0x0) at log_misc.c:984 entry=0x7fff4a5 71aa0, fd=fd@entry=3, print_block_ start=print_ block_start@ entry=- 1) at log_misc.c:1349
#0 0x00007f534e0dfc37 in __GI_raise (sig=sig@entry=6) at ../nptl/
#1 0x00007f534e0e3028 in __GI_abort () at abort.c:89
#2 0x00000000004323e1 in xlog_panic (fmt=<optimized out>) at util.c:129
#3 0x000000000040447e in xlog_print_
#4 0x0000000000404cf9 in xlog_print_record (fd=<optimized out>, num_ops=68, len=<optimized out>, read_type=
#5 0x0000000000404f49 in xfs_log_print (log=log@
#6 0x0000000000401eba in main (argc=<optimized out>, argv=<optimized out>) at logprint.c:241
(gdb) frame 3 trans_inode (ptr=ptr@ entry=0x7fff4a5 71798, len=<optimized out>, i=i@entry= 0x7fff4a571794, num_ops= num_ops@ entry=68) at log_misc.c:748
#3 0x000000000040447e in xlog_print_
748 log_misc.c: No such file or directory.
(gdb) p *f
$1 = {ilf_type = 4667, ilf_size = 4, ==>ilf_fields = 133<==, ilf_asize = 16, ilf_dsize = 16, ilf_ino = 21772003, ilf_u = {ilfu_rdev = 0, ilfu_uuid = '\000' <repeats 15 times>}, ilf_blkno = 7740272,
ilf_len = 16, ilf_boffset = 768}
---
It seems like the "ilf_fields" value is outside the range of what xfsprogs is expecting too. Forcing the code to pick the default: statement, display the error and then xlog_panic().
There is an upstream commit that does a rework of the function xlog_print_ trans_inode( ) found in frame #3 to handle more than one field type set (f->ilf_fields).
I have strong believe this rework will fix the actual situation.