Important notices
Before you add a new report, we ask you kindly to acknowledge the following:
Describe the bug
Kernel panic (fatal trap 12: page fault) occurs when the FreeBSD
netlink subsystem polls interface status while an AX88179A USB
Ethernet adapter simultaneously disconnects or flaps.
The race condition occurs between rtnl_handle_getlink() iterating
all interfaces and axge_miibus_readreg() attempting a USB request
to an adapter that has already been detached, causing a
use-after-free at __mtx_lock_sleep().
Additionally, physically unplugging the AX88179A adapter while
OPNsense is running consistently triggers an immediate kernel panic
and automatic reboot, making it impossible to safely remove the
adapter during operation.
The adapter continuously flaps (link UP/DOWN cycling) from boot,
eventually triggering the panic when netlink polls coincide with
a disconnect event.
Last known working state: unknown — issue appeared after updating
from OPNsense 26.1 to 26.1.6 and installing os-ddclient.
To Reproduce
- Attach an ASIX AX88179A USB Ethernet adapter (plugable model: USB3-E1000) to OPNsense
- Assign it as a network interface (WAN or LAN) via
Interfaces → Assignments
- Allow system to boot fully and observe ue0 link flapping
repeatedly in dmesg (UP/DOWN cycling every 1-2 seconds)
- Either:
a) Wait for netlink poll to coincide with adapter disconnect, OR
b) Physically unplug the USB adapter while system is running
- System immediately panics and reboots
Panic is 100% reproducible by physically unplugging the adapter.
Expected behavior
Physically unplugging a USB Ethernet adapter should gracefully
detach the interface without causing a kernel panic. The netlink
subsystem should safely handle interface detachment during
status polling without accessing freed memory.
Describe alternatives you considered
- Attempted ifconfig ue0 down before unplugging — does not prevent
the panic
- Swapped interface roles (WAN/LAN) — does not resolve the flapping
or panic
- Rebooting the system — panic recurs whenever adapter is unplugged
- The crash report GUI in OPNsense could not submit automatically
due to no internet connectivity on the firewall during testing
Screenshots
If applicable, add screenshots to help explain your problem.
Relevant log files
Panic string: page fault
Backtrace:
kdb_enter()
panic()
trap_pfault()
calltrap()
__mtx_lock_sleep() at __mtx_lock_sleep+0xc9
usbd_do_request_flags() at usbd_do_request_flags+0x8a8
usbd_do_request_proc() at usbd_do_request_proc+0x5e
axge_miibus_readreg() at axge_miibus_readreg+0x94
ukphy_status() at ukphy_status+0x243
ukphy_service() at ukphy_service+0x37
mii_pollstat() at mii_pollstat+0x57
axge_ifmedia_sts() at axge_ifmedia_sts+0x48
ifmedia_ioctl() at ifmedia_ioctl+0x176
dump_iface() at dump_iface+0x145
dump_cb() at dump_cb+0x1c
if_foreach_sleep() at if_foreach_sleep+0x227
rtnl_handle_getlink() at rtnl_handle_getlink+0x24d
rtnl_handle_message() at rtnl_handle_message+0x195
nl_taskqueue_handler() at nl_taskqueue_handler+0x7ab
taskqueue_run_locked() at taskqueue_run_locked+0x182
taskqueue_thread_loop() at taskqueue_thread_loop+0xc2
fork_exit()
fork_trampoline()
fault virtual address = 0x458
fault code = supervisor read data, page not present
instruction pointer = 0xffffffff80bbbd09
Panic: page fault
Additional context
The adapter was detected as:
ugen2.3: at usbus2
axge0: <ASIX AX88179A, class 0/0, rev 2.10/2.00, addr 2> on usbus2
ue0: on axge0
dmesg shows continuous flapping from boot second [8] through [55]
when panic occurred:
ue0: link state changed to DOWN
ue0: link state changed to UP
(repeated dozens of times every second)
[55] ugen2.3: at usbus2 (disconnected)
[56] Fatal trap 12: page fault while in kernel mode
Full crash dump and OPNsense bug report file available on request.
Note: This may be a FreeBSD kernel bug also reportable at
https://bugs.freebsd.org — the axge driver does not safely
handle concurrent detachment during MII polling.
Environment
OPNsense 26.1.6 (amd64)
FreeBSD 14.3-RELEASE-p10 stable/26.1-n272047-4ad47b697b0a
Plugins: os-ddclient-1.30_2
OpenSSL 3.0.20
Python 3.13.12
PHP 8.3.30
Hardware:
Lenovo ThinkCentre M715q Tiny
AMD Ryzen 5 2400GE with Radeon Vega Graphics
8GB RAM
256GB NVMe (Patriot M.2 P320)
Built-in NIC: RealTek 8168/8111 PCIe Gigabit (re0)
USB NIC: ASIX AX88179A USB 3.0 Gigabit Ethernet (ue0/axge0)
OPNsense_bug_report.txt
Important notices
Before you add a new report, we ask you kindly to acknowledge the following:
Describe the bug
Kernel panic (fatal trap 12: page fault) occurs when the FreeBSD
netlink subsystem polls interface status while an AX88179A USB
Ethernet adapter simultaneously disconnects or flaps.
The race condition occurs between rtnl_handle_getlink() iterating
all interfaces and axge_miibus_readreg() attempting a USB request
to an adapter that has already been detached, causing a
use-after-free at __mtx_lock_sleep().
Additionally, physically unplugging the AX88179A adapter while
OPNsense is running consistently triggers an immediate kernel panic
and automatic reboot, making it impossible to safely remove the
adapter during operation.
The adapter continuously flaps (link UP/DOWN cycling) from boot,
eventually triggering the panic when netlink polls coincide with
a disconnect event.
Last known working state: unknown — issue appeared after updating
from OPNsense 26.1 to 26.1.6 and installing os-ddclient.
To Reproduce
Interfaces → Assignments
repeatedly in dmesg (UP/DOWN cycling every 1-2 seconds)
a) Wait for netlink poll to coincide with adapter disconnect, OR
b) Physically unplug the USB adapter while system is running
Panic is 100% reproducible by physically unplugging the adapter.
Expected behavior
Physically unplugging a USB Ethernet adapter should gracefully
detach the interface without causing a kernel panic. The netlink
subsystem should safely handle interface detachment during
status polling without accessing freed memory.
Describe alternatives you considered
the panic
or panic
due to no internet connectivity on the firewall during testing
Screenshots
If applicable, add screenshots to help explain your problem.
Relevant log files
Panic string: page fault
Backtrace:
kdb_enter()
panic()
trap_pfault()
calltrap()
__mtx_lock_sleep() at __mtx_lock_sleep+0xc9
usbd_do_request_flags() at usbd_do_request_flags+0x8a8
usbd_do_request_proc() at usbd_do_request_proc+0x5e
axge_miibus_readreg() at axge_miibus_readreg+0x94
ukphy_status() at ukphy_status+0x243
ukphy_service() at ukphy_service+0x37
mii_pollstat() at mii_pollstat+0x57
axge_ifmedia_sts() at axge_ifmedia_sts+0x48
ifmedia_ioctl() at ifmedia_ioctl+0x176
dump_iface() at dump_iface+0x145
dump_cb() at dump_cb+0x1c
if_foreach_sleep() at if_foreach_sleep+0x227
rtnl_handle_getlink() at rtnl_handle_getlink+0x24d
rtnl_handle_message() at rtnl_handle_message+0x195
nl_taskqueue_handler() at nl_taskqueue_handler+0x7ab
taskqueue_run_locked() at taskqueue_run_locked+0x182
taskqueue_thread_loop() at taskqueue_thread_loop+0xc2
fork_exit()
fork_trampoline()
fault virtual address = 0x458
fault code = supervisor read data, page not present
instruction pointer = 0xffffffff80bbbd09
Panic: page fault
Additional context
The adapter was detected as:
ugen2.3: at usbus2
axge0: <ASIX AX88179A, class 0/0, rev 2.10/2.00, addr 2> on usbus2
ue0: on axge0
dmesg shows continuous flapping from boot second [8] through [55]
when panic occurred:
ue0: link state changed to DOWN
ue0: link state changed to UP
(repeated dozens of times every second)
[55] ugen2.3: at usbus2 (disconnected)
[56] Fatal trap 12: page fault while in kernel mode
Full crash dump and OPNsense bug report file available on request.
Note: This may be a FreeBSD kernel bug also reportable at
https://bugs.freebsd.org — the axge driver does not safely
handle concurrent detachment during MII polling.
Environment
OPNsense 26.1.6 (amd64)
FreeBSD 14.3-RELEASE-p10 stable/26.1-n272047-4ad47b697b0a
Plugins: os-ddclient-1.30_2
OpenSSL 3.0.20
Python 3.13.12
PHP 8.3.30
Hardware:
Lenovo ThinkCentre M715q Tiny
AMD Ryzen 5 2400GE with Radeon Vega Graphics
8GB RAM
256GB NVMe (Patriot M.2 P320)
Built-in NIC: RealTek 8168/8111 PCIe Gigabit (re0)
USB NIC: ASIX AX88179A USB 3.0 Gigabit Ethernet (ue0/axge0)
OPNsense_bug_report.txt