Re: BUG: tools/testing/selftests/net/l2_tos_ttl_inherit.sh hangs when selftest restarted

From: Mirsad Goran Todorovac
Date: Fri Jan 06 2023 - 20:17:22 EST


On 07. 01. 2023. 01:14, Guillaume Nault wrote:
On Fri, Jan 06, 2023 at 02:44:11AM +0100, Mirsad Goran Todorovac wrote:
[root@pc-mtodorov linux_torvalds]# tools/testing/selftests/net/l2_tos_ttl_inherit.sh
┌────────┬───────┬───────┬──────────────┬──────────────┬───────┬────────┐
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ 4 │ inherit 0xc4 │ inherit 116 │ false │Cannot create namespace file "/var/run/netns/testing": File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists

You probably have leftovers from a previous test case. In particular
the "testing" network name space already exists, which prevents the
script from creating it. You can delete it manually with
"ip netns del testing". If this netns is there because of a previous
incomplete run of l2_tos_ttl_inherit.sh, then you'll likely need to
also remove the tunnel interface it created in your current netns
("ip link del tep0").

Thanks, it worked :)

Ideally this script wouldn't touch the current netns and would clean up
its environment in all cases upon exit. I have a patch almost ready
that does just that.

As these interfaces were not cleared by "make kselftest-clean",
this patch with a cleanup trap would be most welcome.

However, after the cleanup above, the ./l2_tos_ttl_inherit.sh
script hangs at the spot where it did in the first place (but
only on Lenovo desktop 10TX000VCR with BIOS M22KT49A from
11/10/2022, AlmaLinux 8.7, and kernel 6.2-rc2; not on Lenovo
Ideapad3 with Ubuntu 22.10, where it worked like a charm with
the same kernel RC).

The point of hang is this:

[root@pc-mtodorov net]# ./l2_tos_ttl_inherit.sh
┌────────┬───────┬───────┬──────────────┬──────────────┬───────┬────────┐
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ 4 │ inherit 0xb8 │ inherit 102 │ false │ OK │
│ gre │ 4 │ 4 │ inherit 0x10 │ inherit 53 │ true │ OK │
│ gre │ 4 │ 4 │ fixed 0xa8 │ fixed 230 │ false │ OK │
│ gre │ 4 │ 4 │ fixed 0x0c │ fixed 96 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ 6 │ inherit 0xbc │ inherit 159 │ false │ OK │
│ gre │ 4 │ 6 │ inherit 0x5c │ inherit 242 │ true │ OK │
│ gre │ 4 │ 6 │ fixed 0x38 │ fixed 113 │ false │ OK │
│ gre │ 4 │ 6 │ fixed 0x78 │ fixed 34 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ other │ inherit 0xec │ inherit 69 │ false │ OK │
│ gre │ 4 │ other │ inherit 0xf0 │ inherit 201 │ true │ OK │
│ gre │ 4 │ other │ fixed 0xec │ fixed 14 │ false │ OK │
│ gre │ 4 │ other │ fixed 0xe4 │ fixed 15 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 6 │ 4 │ inherit 0xc4 │ inherit 21 │ false │ OK │
│ gre │ 6 │ 4 │ inherit 0xc8 │ inherit 230 │ true │ OK │
│ gre │ 6 │ 4 │ fixed 0x24 │ fixed 193 │ false │ OK │
│ gre │ 6 │ 4 │ fixed 0x1c │ fixed 200 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 6 │ 6 │ inherit 0xe4 │ inherit 81 │ false │ OK │
│ gre │ 6 │ 6 │ inherit 0xa4 │ inherit 130 │ true │ OK │
│ gre │ 6 │ 6 │ fixed 0x18 │ fixed 140 │ false │ OK │
│ gre │ 6 │ 6 │ fixed 0xc8 │ fixed 175 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 6 │ other │ inherit 0x74 │ inherit 142 │ false │ OK │
│ gre │ 6 │ other │ inherit 0x50 │ inherit 125 │ true │ OK │
│ gre │ 6 │ other │ fixed 0x90 │ fixed 84 │ false │ OK │
│ gre │ 6 │ other │ fixed 0xb8 │ fixed 240 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 4 │ 4 │ inherit 0xb4 │ inherit 93 │ false │

Developers usually ask for bash -x output of the script that failed or hung
when reporting problems (too long for an email):

https://domac.alu.unizg.hr/~mtodorov/linux/selftests/net-namespace-20230106/bash-l2_tos_ttl_inherit.html

dmesg might be useful:

https://domac.alu.unizg.hr/~mtodorov/linux/selftests/net-namespace-20230106/dmesg-20230107.txt

Hope this helps.

I am rather new to namespaces, so I can't help more than that with the current
state of my learning curve :)

Thanks,
Mirsad

--
Mirsad Goran Todorovac
Sistem inženjer
Grafički fakultet | Akademija likovnih umjetnosti
Sveučilište u Zagrebu
--
System engineer
Faculty of Graphic Arts | Academy of Fine Arts
University of Zagreb, Republic of Croatia
The European Union