Skip to content
  • Keith Packard's avatar
    Trap SIGBUS to handle truncated shared memory segments · 41da295e
    Keith Packard authored
    
    
    If a client passes a section of memory via file descriptor and then
    subsequently truncates that file, the underlying pages will be freed
    and the addresses invalidated. Subsequent accesses to the page will
    fail with a SIGBUS error.
    
    Trap that SIGBUS, figure out which segment was causing the error and
    then allocate new pages to fill in for that region. Mark the offending
    shared segment as invalid and free the resource ID so that the client
    will be able to tell when subsequently attempting to use the segment.
    
    Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
    
    v2: Use MAP_FIXED to simplify the recovery logic (Mark Kettenis)
    v3: Also catch errors in ShmCreateSegment
    
    Conflicts:
    	include/dix-config.h.in
    	include/xorg-config.h.in
    41da295e