winsys/sw/xlib: Prevent shared memory segment leakage.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 24 Apr 2013 09:49:57 +0000 (10:49 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 24 Apr 2013 15:54:58 +0000 (16:54 +0100)
commite29525f79fdb62993e14a4bc87a9e0955b838de0
tree9b859911b1d1f76d9c2501c9c236037081de9226
parent1a87473998b4af2dbe37aa3ce0c004e62d3fe2c0
winsys/sw/xlib: Prevent shared memory segment leakage.

Running piglit with this was causing all sort of weird stuff happening
to my desktop (Chromium webpages become blank, Qt Creator flickered,
etc).  I tracked this down to shared memory segment leakage when GL is
not shutdown properly. The segments can be seen running `ipcs` and
looking for nattch==0.

This changes fixes this by calling shmctl(IPC_RMID) soon after creation
(which does not remove the segment immediately, but simply marks it for
removal when no more processes are attached).

This matches src/mesa/drivers/x11/xm_buffer.c behaviour.

v2:
- move shmctl(IPC_RMID) after XShmAttach() for *BSD, per Chris Wilson
- remove stray debug printfs, spotted by Ian Romanick

NOTE: This is a candidate for stable branches.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/winsys/sw/xlib/xlib_sw_winsys.c