|
From: Tom H. <to...@co...> - 2005-10-04 12:13:45
|
It turns out that shmdt is a bit broken since the merge... The problem is that the post handler unmaps the whole of the segment containing the specified address which is really bad if the shared memory segment has been merged with an adjacent segment by the address space manager because they are compatible. I think the old system mostly got away with it because there was a special flag for shared memory which probably stopped it merging most of the time. I suspect that this problem is the current cause of the shared memory problem reported on the users list recently. The real problem is that shmdt is only given an address and I don't think there is any way (other than walking /proc/self/maps) to get the size from that to do the unmap properly. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |