What does macOS kernel return 1024 (MACH_MSG_VM_KERNEL) mean?

 
Previous Next
KERN_DENIED MACH_MSG_IPC_KERNEL

MACH_MSG_VM_KERNEL

How this bit is used

MACH_MSG_VM_KERNEL is a supplemental bit, not a complete mach_msg result by itself. The kernel ORs it into MACH_RCV_HEADER_ERROR, MACH_RCV_BODY_ERROR, or a send result whose pseudo-receive could not fully restore the message. It identifies a kernel-side virtual-memory resource shortage while an out-of-line memory descriptor was being transferred.

That distinction matters because the message may already have been dequeued or partially transformed. A failed send can also return a buffer whose out-of-line addresses or port names changed during pseudo-receive. Code must first separate the base result from the special bits and then apply cleanup appropriate to the base result.

What to inspect

  • Decode the result with MACH_MSG_MASK and log the base send or receive error separately.
  • Record every out-of-line descriptor, its size, copy option, and deallocate flag.
  • Look for system-wide memory pressure rather than assuming the receiver merely lacks address space; that case is MACH_MSG_VM_SPACE.
  • Do not blindly resend a complex message until ownership of moved memory and rights has been revalidated.

References


Looking for a different code? Search another status or error code.