Hi,
What happens with a task resources when a task crashes or it leaks
resources at exit? How this resources (e.g. memory, file descriptors, any other capabilities) are reclaimed back by the o.s. ?
FDs and caps are local to the task, so just memory.
Hmm it must be a misunderstanding here, it can't be just memory because IMHO also FDs can't be local ... I can't image how they can be managed locally ... Let me give two (very similar) examples to be more clear: - when I open a file (exclusive mode) a VFS has to do something to prevent other FDs to read/write into that file, so it creates and keeps a thing (FD, capability) inside it until the application close the FD. Now the problem comes when the application exits (it crashes) without closing the FD, is there any way to notify the VFS server about it?
- when I create a socket and listen on a port, other apps can't listen on the same port, meaning that there is another server which manage this resource. Like in the previous example I don't want to reboot my os to use that port after the application crashed :)
Providers need to
check whether there are any further users of their resource and if not they can free it (the kernel provides support for doing so).
The providers need to check or they are notified by the kernel when a resources is not referenced by anyone? I'm very interested in this topic, is there any example that I can check?
Thanks!
Cheers, BogDan.