Package: iptables Version: 1.8.4-3 In our cockpit CI tests on debian-testing I noticed an awful lot of tests that fail due to an iptables crash. (The tests themselves are fine, but we fail tests on unexpected journal messages, such as this one).
coredumpctl shows the following meta-info:
PID: 2020 (iptables)
UID: 0 (root)
GID: 0 (root)
Signal: 11 (SEGV)
Timestamp: Mon 2020-02-17 08:34:38 UTC (6min ago)
Command Line: /usr/sbin/iptables -w -L -n
Executable: /usr/sbin/xtables-nft-multi
Control Group: /system.slice/libvirtd.service
Unit: libvirtd.service
Slice: system.slice
Boot ID: faf0d59c49e6446580b7f2ce9d19c1a3
Machine ID: 7cb7efc599dc4bf0a81ebee56065e42f
Hostname: debian
Storage:
/var/lib/systemd/coredump/core.iptables.0.faf0d59c49e6446580b7f2ce9d19c1a3.2020.1581928478000000000000.lz4
Message: Process 2020 (iptables) of user 0 dumped core.
Stack trace of thread 2020:
#0 0x00007f216f7a07c0 nftnl_rule_lookup_byindex
(libnftnl.so.11 + 0xe7c0)
#1 0x00005617956f6e44 n/a (xtables-nft-multi + 0x19e44)
#2 0x00005617956f714b n/a (xtables-nft-multi + 0x1a14b)
#3 0x00005617956ed149 n/a (xtables-nft-multi + 0x10149)
#4 0x00007f216f7a0aa5 nftnl_chain_list_foreach (libnftnl.so.11
+ 0xeaa5)
#5 0x00005617956efa13 n/a (xtables-nft-multi + 0x12a13)
#6 0x00005617956efa32 n/a (xtables-nft-multi + 0x12a32)
#7 0x00005617956efab7 n/a (xtables-nft-multi + 0x12ab7)
#8 0x00005617956ead65 n/a (xtables-nft-multi + 0xdd65)
#9 0x00005617956e9072 n/a (xtables-nft-multi + 0xc072)
#10 0x00005617956e91ba n/a (xtables-nft-multi + 0xc1ba)
#11 0x00007f216f5e5bbb __libc_start_main (libc.so.6 + 0x26bbb)
#12 0x00005617956e612a n/a (xtables-nft-multi + 0x912a)
I installed the dbgsym packages and generated a full backtrace [2]. However, at
first sight this doesn't look too useful, other than perhaps that
nftnl_rule_lookup_byindex() is called with a NULL value of "c". I attach the
compressed core dump, in case that's useful.
Installed packages:
ii docker.io 19.03.5+dfsg1-2 amd64 Linux
container runtime
ii firewalld 0.8.1-1 all dynamically
managed firewall with support for network zones
ii iptables 1.8.4-3 amd64 administration
tools for packet filtering and NAT
ii libnftables1:amd64 0.9.3-2 amd64 Netfilter
nftables high level userspace API library
ii libnftnl11:amd64 1.1.5-1 amd64 Netfilter
nftables userspace API library
ii linux-image-5.4.0-3-cloud-amd64 5.4.13-1 amd64 Linux 5.4 for
x86-64 cloud (signed)
Notably, nftables is *not* installed. I'm not actually sure why, as iptables
recommends it and our image setup script [3] does not use
--no-install-recommends. I also don't know if nftables will even affect this.
We don't do any iptables configuration on our image (again, see [3]), the only
thing that it does is install "firewalld", which then pulls in iptables.
I haven't yet found a simple CLI way how to reproduce this, I'll keep looking.
For now, I attach the complete journal of that boot, it may reveal some
interesting interactions between firewalld, docker, and iptables.
Thanks,
Martin
[1]
https://logs.cockpit-project.org/logs/pull-532-20200217-072121-d7ba954f-debian-testing-cockpit-project-cockpit/log.html
[2]
#0 nftnl_rule_lookup_byindex (c=c@entry=0x0, index=index@entry=0) at
chain.c:863
__mptr = <optimized out>
r = <optimized out>
#1 0x00005617956f6e44 in nft_rule_list_update (c=0x0, data=0x7ffee5d02ad0) at
nft-cache.c:391
h = 0x7ffee5d02ad0
buf = <optimized out>
nlh = <optimized out>
rule = <optimized out>
ret = <optimized out>
__PRETTY_FUNCTION__ = "nft_rule_list_update"
#2 0x00005617956f714b in fetch_rule_cache (chain=0x56179740d830
"`\327@\227\027V", t=0x56179570fc80 <xtables_ipv4>, h=0x7ffee5d02ad0) at
nft-cache.c:432
list = <optimized out>
c = <optimized out>
i = <optimized out>
i = <optimized out>
list = <optimized out>
c = <optimized out>
type = <optimized out>
#3 __nft_build_cache (h=h@entry=0x7ffee5d02ad0,
level=level@entry=NFT_CL_RULES, t=0x56179570fc80 <xtables_ipv4>, set=0x0,
chain=0x56179740d830 "`\327@\227\027V")
at nft-cache.c:482
genid_start = 69
genid_stop = 69
#4 0x00005617956f730d in __nft_build_cache (chain=<optimized out>,
set=<optimized out>, t=<optimized out>, level=<optimized out>, h=<optimized
out>)
at nft-cache.c:515
genid_start = <optimized out>
genid_stop = <optimized out>
genid_start = <optimized out>
genid_stop = <optimized out>
#5 nft_build_cache (h=h@entry=0x561795702c68, c=c@entry=0x7ffee5d02ad0) at
nft-cache.c:515
t = <optimized out>
table = <optimized out>
chain = <optimized out>
#6 0x00005617956ed149 in nft_is_chain_compatible (c=0x7ffee5d02ad0,
data=0x561795702c68) at nft.c:3303
table = <optimized out>
chain = <optimized out>
tname = <optimized out>
cname = <optimized out>
type = <optimized out>
h = 0x561795702c68
hook = <optimized out>
prio = <optimized out>
#7 0x00007f216f7a0aa5 in nftnl_chain_list_foreach (chain_list=0x56179740b550,
cb=cb@entry=0x5617956ed130 <nft_is_chain_compatible>,
data=data@entry=0x7ffee5d02ad0) at chain.c:1011
cur = <optimized out>
tmp = 0x56179740d870
ret = <optimized out>
#8 0x00005617956efa13 in nft_is_table_compatible (h=0x7ffee5d02ad0,
table=table@entry=0x561795702c68 "filter", chain=chain@entry=0x0) at nft.c:3341
clist = <optimized out>
#9 0x00005617956efa32 in nft_assert_table_compatible (h=<optimized out>,
table=0x561795702c68 "filter", chain=0x0) at nft.c:3352
pfx = 0x561795702338 ""
sfx = 0x561795702338 ""
#10 0x00005617956efab7 in nft_rule_list (h=h@entry=0x7ffee5d02ad0, chain=0x0,
table=0x561795702c68 "filter", rulenum=0, format=15) at nft.c:2358
ops = 0x561795711560 <nft_family_ops_ipv4>
list = <optimized out>
iter = <optimized out>
c = <optimized out>
found = false
#11 0x00005617956ead65 in list_entries (linenumbers=<optimized out>,
expanded=<optimized out>, numeric=<optimized out>, verbose=<optimized out>,
rulenum=<optimized out>, table=<optimized out>, chain=<optimized out>,
h=0x7ffee5d02ad0) at xtables.c:527
format = <optimized out>
format = <optimized out>
#12 do_commandx (h=h@entry=0x7ffee5d02ad0, argc=argc@entry=4,
argv=argv@entry=0x7ffee5d02d68, table=table@entry=0x7ffee5d02ac8,
restore=restore@entry=false)
at xtables.c:1102
ret = 1
p = {command = 32, rulenum = 0, table = 0x561795702c68 "filter", chain
= 0x0, newname = 0x0, policy = 0x0, restore = false, verbose = 0, xlate = false}
cs = {{eb = {bitmask = 0, invflags = 0, ethproto = 0, in = '\000'
<repeats 15 times>, logical_in = '\000' <repeats 15 times>,
out = '\000' <repeats 15 times>, logical_out = '\000' <repeats 15
times>, sourcemac = "\000\000\000\000\000", sourcemsk = "\000\000\000\000\000",
destmac = "\000\000\000\000\000", destmsk =
"\000\000\000\000\000"}, fw = {ip = {src = {s_addr = 0}, dst = {s_addr = 0},
smsk = {s_addr = 0},
dmsk = {s_addr = 0}, iniface = '\000' <repeats 15 times>,
outiface = '\000' <repeats 15 times>, iniface_mask = '\000' <repeats 15 times>,
outiface_mask = '\000' <repeats 15 times>, proto = 0, flags = 0
'\000', invflags = 0 '\000'}, nfcache = 0, target_offset = 0, next_offset = 0,
comefrom = 0, counters = {pcnt = 0, bcnt = 0}, elems =
0x7ffee5d029c0 ""}, fw6 = {ipv6 = {src = {__in6_u = {__u6_addr8 = '\000'
<repeats 15 times>,
__u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0,
0, 0, 0}}}, dst = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>,
__u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0,
0, 0, 0}}}, smsk = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>,
__u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0,
0, 0, 0}}}, dmsk = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>,
__u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0,
0, 0, 0}}}, iniface = '\000' <repeats 15 times>,
outiface = '\000' <repeats 15 times>, iniface_mask = '\000'
<repeats 15 times>, outiface_mask = '\000' <repeats 15 times>, proto = 0,
tos = 0 '\000', flags = 0 '\000', invflags = 0 '\000'}, nfcache
= 0, target_offset = 0, next_offset = 0, comefrom = 0, counters = {pcnt = 0,
bcnt = 0}, elems = 0x7ffee5d029f8 ""}, arp = {arp = {src =
{s_addr = 0}, tgt = {s_addr = 0}, smsk = {s_addr = 0}, tmsk = {s_addr = 0},
arhln = 0 '\000', arhln_mask = 0 '\000', src_devaddr = {addr =
'\000' <repeats 15 times>, mask = '\000' <repeats 15 times>}, tgt_devaddr = {
addr = '\000' <repeats 15 times>, mask = '\000' <repeats 15
times>}, arpop = 0, arpop_mask = 0, arhrd = 0, arhrd_mask = 0, arpro = 0,
arpro_mask = 0, iniface = '\000' <repeats 15 times>, outiface =
'\000' <repeats 15 times>, iniface_mask = '\000' <repeats 15 times>,
outiface_mask = '\000' <repeats 15 times>, flags = 0 '\000',
invflags = 0}, target_offset = 0, next_offset = 0, comefrom = 0, counters = {
pcnt = 0, bcnt = 0}, elems = 0x7ffee5d02a10 ""}}, invert = 0, c
= -1, options = 1, matches = 0x0, match_list = 0x0, target = 0x0, counters = {
pcnt = 0, bcnt = 0}, protocol = 0x0, proto_used = 0, jumpto =
0x561795702338 "", argv = 0x7ffee5d02d68, restore = false}
args = {family = 2, proto = 0, flags = 0 '\000', invflags = 0 '\000',
iniface = '\000' <repeats 15 times>, outiface = '\000' <repeats 15 times>,
iniface_mask = '\000' <repeats 15 times>, outiface_mask = '\000'
<repeats 15 times>, goto_set = false, shostnetworkmask = 0x0, dhostnetworkmask
= 0x0,
pcnt = 0x0, bcnt = 0x0, s = {addr = {v4 = 0x0, v6 = 0x0}, naddrs = 0,
mask = {v4 = 0x0, v6 = 0x0}}, d = {addr = {v4 = 0x0, v6 = 0x0}, naddrs = 0,
mask = {v4 = 0x0, v6 = 0x0}}, pcnt_cnt = 0, bcnt_cnt = 0}
#13 0x00005617956e9072 in xtables_main (family=family@entry=2,
progname=progname@entry=0x561795702011 "iptables", argc=4, argv=0x7ffee5d02d68)
at xtables-standalone.c:72
ret = <optimized out>
table = 0x561795702c68 "filter"
h = {family = 2, nl = 0x56179740b2a0, nlsndbuffsiz = 0, nlrcvbuffsiz =
0, portid = 2020, seq = 0, nft_genid = 68, rule_id = 0, obj_list = {
next = 0x56179740b320, prev = 0x56179740b320}, obj_list_num = 1,
batch = 0x0, err_list = {next = 0x7ffee5d02b18, prev = 0x7ffee5d02b18},
ops = 0x561795711560 <nft_family_ops_ipv4>, tables = 0x56179570fc80
<xtables_ipv4>, cache_index = 0, __cache = {{tables = 0x56179740b370, table = {{
chains = 0x56179740e530, sets = 0x56179740b530, initialized =
true}, {chains = 0x0, sets = 0x0, initialized = false}, {chains = 0x0,
sets = 0x0, initialized = false}, {chains = 0x0, sets = 0x0,
initialized = false}, {chains = 0x0, sets = 0x0, initialized = false}}}, {
tables = 0x0, table = {{chains = 0x0, sets = 0x0, initialized =
false}, {chains = 0x0, sets = 0x0, initialized = false}, {chains = 0x0, sets =
0x0,
initialized = false}, {chains = 0x0, sets = 0x0, initialized
= false}, {chains = 0x0, sets = 0x0, initialized = false}}}},
cache = 0x7ffee5d02b40, cache_level = NFT_CL_NONE, restore = false,
noflush = false, config_done = 0 '\000', error = {lineno = 0}}
#14 0x00005617956e91ba in xtables_ip4_main (argc=<optimized out>,
argv=<optimized out>) at xtables-standalone.c:96
No locals.
#15 0x00007f216f5e5bbb in __libc_start_main (main=0x5617956e60f0 <main>,
argc=4, argv=0x7ffee5d02d68, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7ffee5d02d58) at
../csu/libc-start.c:308
self = <optimized out>
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -2667567350696714500,
94659291275520, 140732754046304, 0, 0, -8563589328024183044,
-8604388788316348676},
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7ffee5d02d90,
0x7f216f806190}, data = {prev = 0x0, cleanup = 0x0, canceltype = -439341680}}}
not_first_call = <optimized out>
#16 0x00005617956e612a in _start ()
No symbol table info available.
[3]
https://github.com/cockpit-project/bots/blob/master/images/scripts/debian.setup
xtables-nft-multi.core.xz
Description: application/xz
journal.txt.xz
Description: application/xz

