{"record":{"id":"352a08e6846cca38","repo":"probelabs/goreplay","slug":"socket-mmap-error-v","errorCode":null,"errorMessage":"socket mmap error: %v","messagePattern":"socket mmap error: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/capture/sock_linux.go","lineNumber":123,"sourceCode":"\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()\n\tdefer sock.mu.Unlock()\n\tvar tpHdr *unix.Tpacket2Hdr\n\tpoll := &unix.PollFd{\n\t\tFd:     int32(sock.fd),\n\t\tEvents: unix.POLLIN,\n\t}\n\tvar i int\nread:\n\ti = int(sock.frame * FRAMESIZE)\n\ttpHdr = (*unix.Tpacket2Hdr)(unsafe.Pointer(&sock.buf[i]))\n\tsock.frame = (sock.frame + 1) % FRAMENR","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/probelabs/goreplay/blob/251e45abd242886bb64ff2b2dc98789556b56330/internal/capture/sock_linux.go#L105-L141","documentation":"NewSocket failed to mmap the ring buffer of BLOCKSIZE*BLOCKNR bytes into the process (out of memory, hugepage unavailability, or limits on mapped memory); the fd is closed and the wrapped errno returned, so the socket is unusable.","triggerScenarios":"Thrown at internal/capture/sock_linux.go:123 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check available memory and vm.max_map_count / ulimit -l","Ensure 2MB hugepages are reserved (nr_hugepages) since MAPHUGE2MB is requested","Reduce ring buffer constants if the host cannot back the allocation"],"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"}