On Wednesday, 10 February 2021 00:29:20 CET Paul Boddie wrote:
There shouldn't be so many mutexes allocated, and therefore not so many capabilities involved, but this is one thing I could imagine being troublesome. Anyway, it's very possible that I am not freeing explicitly allocated capabilities in my own code, so I guess I should pay some attention to that and see what might be happening.
The problem was actually in the way I was handling expected items in IPC calls. In my own IPC library, I allocate capability slots and set the buffer registers appropriately, which is what the IPC framework in L4Re seems to do.
However, the "server" function that initiates this allocation and handles incoming calls was not deallocating these slots upon terminating, and since I am starting and stopping a lot of servers, this accumulated slots rather quickly.
Anyway, I'm now back to debugging concurrency issues, and perhaps other resource issues, once again. But it was useful to review this particular issue and to try and venture beyond a basic proof of concept towards something more robust.
Paul