SysV IPC message queues

From: Kyle Hubert
Date: Sun Mar 21 2010 - 22:28:52 EST


Hi, I recently found myself using SysV IPC message queues in a Linux
specific application. However, I have one concern, I'm using
IPC_PRIVATE for the key to instantiate the message queue (then doing
pthread_creates with the open file descriptor accessed from children
threads).

Anyways, upon reception of signals, the message queue lingers around
taking up memory. I wouldn't mind this if I was using a key_t which I
could use to reopen the message queue at a later instantiation.
However, IPC_PRIVATE just grabs an available queue, and I don't have
access to the key, so I can't exactly open and remove it later. It's
my opinion that IPC_PRIVATE should cause the message queue to get
destroyed when all the open file descriptors are closed, not solely
when msgctl is used to remove it. Also, I don't want to capture
signals, since that's a slippery slope and SIGKILL will still leak
message queues. I also don't think ipcs/ipcrm are long term solutions,
since I'm handing the library off as an abstraction.

Would it be worth it to generate a patch to the Linux kernel to add
this functionality? Or, is there an undocumented ioctl I can call to
set that feature on?

IE: IPC_PRIVATE message queues should be freed when ref count drops to zero.

Thank you very much for your time,

-Kyle Hubert
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/