Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kernel panic with an Intel 10-Gigabit X540-AT2 card #31

Closed
benalexau opened this issue Feb 18, 2021 · 2 comments
Closed

Kernel panic with an Intel 10-Gigabit X540-AT2 card #31

benalexau opened this issue Feb 18, 2021 · 2 comments

Comments

@benalexau
Copy link

I undertook a fresh install of Arch Linux on a spare Supermicro server, including Booster 0.2-1 from the official Arch binary packages during pacstrap and a LUKS encrypted partition. Booster was configured for DHCP networking during the arch-chroot stage. The DHCP server returns a DNS server on the same subnet.

The initial reboot was successful and Tang-based unlocking was then configured using clevis luks bind -d /dev/sda2 tang '{"url": "http://cwdsrrkms1.acegi.com.au"}' (this host is on the same subnet as the host; ie no gateway is required). After rebooting the following kernel panic was displayed:

image

This server includes an Intel 10-Gigabit X540-AT2 (ensf30) card in addition to the inbuilt Intel I350 Gigabit Network Controller on the motherboard.

Following the above failed boot I restarted with a live image, disabled the network in /etc/booster.yaml, reinstalled Booster, and rebooted without issue.

Any thoughts on how to overcome the kernel panic?

@anatol
Copy link
Owner

anatol commented Feb 18, 2021

It is a known race condition between closing udev reader and reading udev event - #22. See also s-urbaniak/uevent#3.

It has been fixed in master f51031a

So as a workaround you can try to use booster-git package from AUR until booster 0.3 is released to the official repo.

@benalexau
Copy link
Author

benalexau commented Feb 18, 2021

Thanks @anatol.

Using AUR booster-git (built against bc5b255) fixed this issue and the server booted with Tang-based unlocking without any issue.

anatol added a commit that referenced this issue Jun 1, 2022
uevent.NewDecoder uses bufio.ReadString() that is blocking until data is available.
When booster switches to the userspace it needs to close all file descriptors
including the udev one.

Unfortunately there is no clear way to break the bufio.ReadString() blocking.
Attempt to close the fd causes panic inside the bufio.(*Reader).fill() function.

To prevent the app crash we just recover from panic in the udev goroutine.

Issue #22
Issue #31
Issue #153
anatol added a commit that referenced this issue Jun 2, 2022
uevent.NewDecoder uses bufio.ReadString() that is blocking until data is available.
When booster switches to the userspace it needs to close all file descriptors
including the udev one.

Unfortunately there is no clear way to break the bufio.ReadString() blocking.
Attempt to close the fd causes panic inside the bufio.(*Reader).fill() function.

To prevent the app crash we just recover from panic in the udev goroutine.

Issue #22
Issue #31
Issue #153
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants