Fork us on GitHub Follow us on Google+ Follow us on Facebook Follow us on Twitter

Opened 11 months ago

Closed 6 days 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:
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 (4)

comment:1 Changed 11 months ago by Jakub Jermář

Description: modified (diff)

comment:2 Changed 11 months ago by Jakub Jermář

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

comment:3 Changed 11 months ago by Jakub Jermář

Milestone: 0.7.1

comment:4 Changed 6 days ago by Jakub Jermář

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.