{"record":{"id":"66dfef157dc43007","repo":"probelabs/goreplay","slug":"setsockopt-packet-rx-ring-v","errorCode":null,"errorMessage":"setsockopt packet_rx_ring: %v","messagePattern":"setsockopt packet_rx_ring: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/capture/sock_linux.go","lineNumber":112,"sourceCode":"\t\tuintptr(unsafe.Pointer(&addr)),\n\t\tuintptr(unix.SizeofSockaddrLinklayer),\n\t)\n\tif e != 0 {\n\t\tunix.Close(fd)\n\t\treturn nil, e\n\t}\n\n\t// create shared-memory ring buffer\n\ttp := &unix.TpacketReq{\n\t\tBlock_size: BLOCKSIZE,\n\t\tBlock_nr:   BLOCKNR,\n\t\tFrame_size: FRAMESIZE,\n\t\tFrame_nr:   FRAMENR,\n\t}\n\terr = unix.SetsockoptTpacketReq(sock.fd, unix.SOL_PACKET, unix.PACKET_RX_RING, tp)\n\tif err != nil {\n\t\tunix.Close(fd)\n\t\treturn nil, fmt.Errorf(\"setsockopt packet_rx_ring: %v\", err)\n\t}\n\tsock.buf, err = unix.Mmap(\n\t\tsock.fd,\n\t\t0,\n\t\tBLOCKSIZE*BLOCKNR,\n\t\tunix.PROT_READ|unix.PROT_WRITE,\n\t\tunix.MAP_SHARED|MAPHUGE2MB,\n\t)\n\tif err != nil {\n\t\tunix.Close(fd)\n\t\treturn nil, fmt.Errorf(\"socket mmap error: %v\", err)\n\t}\n\treturn sock, nil\n}\n\n// ReadPacketData implements gopacket.PacketDataSource.\nfunc (sock *SockRaw) ReadPacketData() (buf []byte, ci gopacket.CaptureInfo, err error) {\n\tsock.mu.Lock()","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/probelabs/goreplay/blob/251e45abd242886bb64ff2b2dc98789556b56330/internal/capture/sock_linux.go#L94-L130","documentation":"NewSocket failed creating the PACKET_RX_RING shared-memory ring via setsockopt (usually ENOMEM or insufficient privileges/no hugepage support); the fd is closed and the errno is wrapped, so the memory-mapped receive path cannot be established.","triggerScenarios":"Thrown at internal/capture/sock_linux.go:112 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Free memory or reduce ring size (BLOCKSIZE/BLOCKNR) if ENOMEM","Verify hugepage (2MB) availability for the MAPHUGE2MB mapping","Run with CAP_NET_RAW and check container resource limits"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"251e45abd242886bb64ff2b2dc98789556b56330","analyzedAt":"2026-09-02T16:44:11.369Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T21:17:11.164Z"}