{"record":{"id":"49711b334ec1769b","repo":"netbirdio/netbird","slug":"tun-device-s-panic-v","errorCode":null,"errorMessage":"tun device %s panic: %v","messagePattern":"tun device (.+?) panic: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"client/iface/device/device_filter.go","lineNumber":167,"sourceCode":"// wintun write path and converting them into errors.\nfunc (d *FilteredDevice) deviceWrite(bufs [][]byte, offset int) (n int, err error) {\n\tdefer d.recoverFromPanic(\"write\", &n, &err)\n\treturn d.Device.Write(bufs, offset)\n}\n\n// recoverFromPanic converts a panic in the underlying device into a regular\n// error and invokes the registered panic handler. The wintun read path is\n// known to panic on zero-length packets that third-party filter drivers can\n// place in the ring.\nfunc (d *FilteredDevice) recoverFromPanic(op string, n *int, err *error) {\n\tr := recover()\n\tif r == nil {\n\t\treturn\n\t}\n\n\tlog.Errorf(\"recovered panic in tun device %s: %v\\n%s\", op, r, debug.Stack())\n\t*n = 0\n\t*err = fmt.Errorf(\"tun device %s panic: %v\", op, r)\n\n\tif handler := d.panicHandler.Load(); handler != nil {\n\t\t(*handler)()\n\t}\n}\n\n// SetFilter sets packet filter to device\nfunc (d *FilteredDevice) SetFilter(filter PacketFilter) {\n\td.mutex.Lock()\n\td.filter = filter\n\td.mutex.Unlock()\n}\n\n// SetPanicHandler registers a handler invoked after a recovered panic in Read\n// or Write. The device is unusable after such a panic; the handler should\n// trigger recreation of the interface. Pass nil to remove.\nfunc (d *FilteredDevice) SetPanicHandler(handler func()) {\n\tif handler == nil {","sourceCodeStart":149,"sourceCodeEnd":185,"githubUrl":"https://github.com/netbirdio/netbird/blob/93e97f4bf1ad715072dcb3fb6cdb1763431b5a9c/client/iface/device/device_filter.go#L149-L185","documentation":"Error \"tun device %s panic: %v\" thrown in netbirdio/netbird.","triggerScenarios":"Thrown at client/iface/device/device_filter.go:167 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"93e97f4bf1ad715072dcb3fb6cdb1763431b5a9c","analyzedAt":"2026-08-16T03:09:19.136Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}