Opened 7 years ago

Closed 6 years ago

Last modified 6 years ago

#708 closed defect (fixed)

Resource management and failure mode of async calls leads to deadlocks

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 (5)

comment:1 by Jakub Jermář, 7 years ago

Description: modified (diff)

comment:2 by Jakub Jermář, 7 years ago

The hard limit was upgraded to 64 in mainline,2873 and the failure mode was made hard in mainline,2874.

comment:3 by Jakub Jermář, 7 years ago

Milestone: 0.7.1

comment:4 by Jakub Jermář, 6 years ago

Resolution: fixed
Status: newclosed

comment:5 by Jakub Jermář, 6 years ago

Milestone: 0.7.1
Note: See TracTickets for help on using tickets.