Opened 6 years ago

Last modified 5 years ago

#708 closed defect

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

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

There is a hard limit on the number of calls that can be active on any one phone. Currently, this 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 (0)

Note: See TracTickets for help on using tickets.