Fork us on GitHub Follow us on Facebook Follow us on Twitter

Opened 3 years ago

Last modified 19 months ago

#708 closed defect

Resource management and failure mode of async calls leads to deadlocks — at Version 1

Reported by: Jakub Jermář Owned by:
Priority: major Milestone: 0.7.1
Component: helenos/unspecified Version: mainline
Keywords: ipc Cc:
Blocker for: Depends on:
See also: #700

Description (last modified by Jakub Jermář)

There is a hard limit on the number of calls that can be active on any one phone. Currently, this is defined as:

/** Maximum active async calls per phone */
#define IPC_MAX_ASYNC_CALLS  4

When the limit is exceeded, kernel IPC will fail with a temporary error and the async framework will block the offending fibril until some calls are answered. Which may be never.

This has proved problematic (for instance in #700) because it forces fibrils to wait for asynchronously sent messages for which they never intended to wait explicitly.

I think we should remove or upgrade the hard limit immediately to allow fixing of #700 and later replace it with a limit based on available memory resources of the calling task. The failure mode shall also be changed to hard failure if the task does not have enough resources to allocate another call.

Change History (1)

comment:1 Changed 3 years ago by Jakub Jermář

Description: modified (diff)
Note: See TracTickets for help on using tickets.