IP Library Granted Patent US 10,785,346
Granted Patent B1
US 10,785,346 · App. 16/377,879 · Granted Sep 22, 2020

Unblocking processes in interprocess messaging passing

Inventors: Brian John Stecher (Kanata, CA); Kaushik Thirukonda (Kanata, CA)
Assignee: 2236008 Ontario Inc.
H04L67/42G06F9/4416H04L67/10H04L67/32
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,785,346
App. No.
16/377,879
Granted
Sep 22, 2020
Kind
B1
Abstract

A thread of a client process may become blocked awaiting a reply to a message sent to a server process. Unblocking the client may include determining by the operating system that a timeout has expired without the server having replied to the message and then sending a request to the server process reply to the message to unblock the client. After sending the request for the server to reply to the message, the operating system may determine that the server has still not replied to the message after a further period has elapsed. If so, one or more actions related to the server process may be triggered. For example, a signal may be sent to the server process or the computer system may be rebooted.

Claims (48)

1. A computer-implemented method comprising:

sending a message by a sending thread of a client process to a server process, wherein the sending thread of the client process is blocked by the sending to await a reply to the message from the server process;

determining by an operating system managing the client process and the server process that a timeout has expired without the server process having replied to the message;

upon determining that the timeout has expired without the server process having replied to the message, sending a request to the server process to unblock the sending thread of the client process by replying to the message;

after sending the request for the server process to unblock the sending thread by replying to the message, determining, by the operating system, that a further period has elapsed without the server process having replied to the message; and

upon determining that the further period has elapsed without the server process having unblocked the sending thread by replying to the message, triggering one or more actions related to the server process.

2. The computer-implemented method of claim 1 , wherein the one or more actions include sending a signal to the server process.

3. The computer-implemented method of claim 2 , wherein the signal comprises a signal to the server process to terminate.

4. The computer-implemented method of claim 1 , wherein the one or more actions include restarting the operating system.

5. The computer-implemented method of claim 1 , wherein the one or more actions are performed in sequence.

6. The computer-implemented method of claim 5 , wherein the one or more actions are performed in sequence with a configurable delay between the performing of a given one of the actions and the performing of a next one of the actions.

7. The computer-implemented method of claim 1 , further comprising identifying the one or more actions based on at least one of a process name of the server process or a process identifier of the server process.

8. The computer-implemented method of claim 1 , wherein triggering the one or more actions related to the server process includes sending an indication identifying the server process to a server monitor process, the server monitor process causing the one or more actions to be performed responsive to the indication.

9. The computer-implemented method of claim 8 , wherein causing the one or more actions to be performed responsive to the indication includes:

sending, by the server monitor process, a request to the operating system that further indications identifying the server process be suppressed.

10. The computer-implemented method of claim 1 wherein the client process is safety-certified and wherein the server process is not safety-certified.

11. A non-transitory computer-readable storage medium storing an operating system comprising instructions that, when executed by one or more processors of a computer system cause the computer system to:

receive, by a kernel of the operating system from a client process managed by the operating system, a call to send a message to a server process, the call blocking a calling thread of the client process to await a reply to the message from the server process;

deliver, by the kernel, the message to the server process;

determine that a timeout has expired without the server process having replied to the message;

upon determining that the timeout has expired without the server process having replied to the message, send, by the kernel to the server process, a request for the server process to reply to the message;

after sending the request for the server process to reply to the message, determine that a further period of time has elapsed without the server process having replied to the message; and

upon determining that the further period of time has elapsed without the server process having replied to the message, triggering, by the kernel, one or more actions related to the server process.

12. The computer-readable storage medium of claim 11 , wherein the one or more actions include sending a signal to the server process.

13. The computer-readable storage medium of claim 12 , wherein the signal is a signal to the server process to terminate.

14. The computer-readable storage medium of claim 11 , wherein the one or more actions include rebooting the computer system.

15. The computer-readable storage medium of claim 11 , wherein the one or more actions are performed in sequence.

16. The computer-readable storage medium of claim 15 , wherein the one or more actions are performed in sequence with a configurable delay between the performing of a given one of the actions and the performing of a next one of the actions.

17. The computer-readable storage medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the computer system to:

identify the one or more actions based on at least one of a process name of the server process and a process identifier of the server process.

18. The computer-readable storage medium of claim 11 , wherein the operating system includes a server monitor process, and wherein triggering the one or more actions related to the server process includes sending, by the kernel to the server monitor process, an indication identifying the server process, the server monitor process causing the one or more actions to be performed responsive to the indication.

19. A computer system comprising:

one or more processors; and

a memory communicably coupled to the one or more processors, the memory storing instructions that, when executed by at least one of the one or more processors, cause the computer system to:

receive, by a kernel of an operating system of the computer system from a client process managed by the operating system, a call to send a message to a server process, the call blocking a calling thread of the client process to await a reply to the message from the server process;

deliver, by the kernel, the message to the server process;

determine that a timeout has expired without the server process having replied to the message;

send, by the kernel to the server process, a request for the server process to reply to the message;

determine that a further period of time has elapsed without the server process having replied to the message; and

trigger, by the kernel, one or more actions related to the server process.

20. The computer system of claim 19 , wherein the one or more actions include sending a signal to the server process.

21. The computer system of claim 20 , wherein the signal is a signal to the server process to terminate.

22. The computer system of claim 19 , wherein the one or more actions include rebooting the computer system.

23. The computer system of claim 19 , wherein the one or more actions are performed in sequence.

24. The computer system of claim 23 , wherein the one or more actions are performed in sequence with a configurable delay between the performing of a given one of the actions and the performing of a next one of the actions.

25. The computer system of claim 19 , wherein the instructions, when executed by the at least one of the one or more processors, further cause the computer system to:

identify the one or more actions based on at least one of a process name of the server process and a process identifier of the server process.

26. The computer system of claim 19 , wherein the operating system includes a server monitor process, and wherein triggering the one or more actions related to the server process includes sending, by the kernel to the server monitor process, an indication identifying the server process, the server monitor process causing the one or more actions to be performed responsive to the indication.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2019
From: QNX SOFTWARE SYSTEMS LIMITED
To: 2236008 ONTARIO INC.
Reel/Frame 049237/0374 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2019
From: STECHER, BRIAN JOHN; THIRUKONDA, KAUSHIK
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 049135/0570 →