Reducing likelihood of concurrency error in virtualized computing environment

US9785506B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9785506-B2
Application numberUS-201314050322-A
CountryUS
Kind codeB2
Filing dateOct 9, 2013
Priority dateDec 29, 2005
Publication dateOct 10, 2017
Grant dateOct 10, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A system and method for reducing the likelihood of concurrency errors by identifying vulnerable segments of computer code and stalling other virtual machine threads of execution. According to one embodiment of the present invention, the vulnerable segment is identified at runtime, for example in a dynamic translator. According to another embodiment of the present invention, the vulnerable segment is identified ahead of time, for example in a static translator. According to yet another embodiment of the present invention, the vulnerable segment is identified in the binary translator of a virtual machine monitor.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for reducing likelihood of concurrency error, the method comprising: translating computer code for execution on a plurality of processors, wherein translating the computer code includes identifying a vulnerable segment of the computer code and inserting additional code for executing the vulnerable segment of the computer code to form a translated code fragment, wherein the vulnerable segment of the computer code is code containing computer instructions capable of causing a concurrency error when executed by a processor concurrently with another portion of the computer code executed by another processor; executing a first portion of the translated computer code on a first processor of the plurality of processors, wherein the first portion of the translated computer code includes a segment identified as the vulnerable segment of the computer code; prior to the first processor executing the vulnerable segment of the computer code and responsive to execution of the inserted additional code of the translated code fragment: sending a request instructing a second processor of the plurality of processors to stall execution of a second portion of the translated computer code; receiving an indication that the second processor is stalled; upon receiving the indication that the second processor is stalled, executing the vulnerable segment of the computer code; and upon completing execution of the vulnerable segment of the computer code, sending an instruction to the second processor to resume execution of the second portion of the translated computer code, wherein the first processor and the second processor are virtual processors executing respective virtual threads of execution. 2. The method of claim 1 , wherein the second processor is stalled by one of the following: by denying computer code runtime on a central processing unit, by replacing instructions of the second portion of the translated computer code with filler instructions, or by relegating the second portion of the translated computer code to safe instructions. 3. The method of claim 1 , wherein receiving the indication that the second processor is stalled comprises receiving an indication that the second processor is not going to execute the second portion of the translated computer code concurrently with the execution, by the first processor, of the vulnerable segment of the computer code. 4. The method of claim 1 , wherein the second processor is stalled for a defined period of time that is less than a time it takes to complete the execution of the vulnerable segment of the computer code. 5. The method of claim 1 , wherein the request instructing the second processor to stall enables the second processor to execute computer code that is safe to execute while the first processor is executing the vulnerable segment of the computer code. 6. The method of claim 1 , wherein translating the computer code includes translating the vulnerable code segment using a first translation mode and translating other segments of the computer code using a second translation mode. 7. A system for reducing likelihood of concurrency error, the system comprising: one or more computers configured to translate computer code for execution on a plurality of processors including a first processor and a second processor, wherein translating the computer code includes identifying a vulnerable segment of the computer code and inserting additional code for executing the vulnerable segment of the computer code to form a translated code fragment, wherein the vulnerable segment of the computer code is code containing computer instructions capable of causing a concurrency error when executed by a processor concurrently with another portion of the computer code executed by another processor; and wherein the first processor is programmed to: execute a first portion of the translated computer code on the first processor, wherein the first portion of the translated computer code includes a segment identified as the vulnerable segment of the computer code; prior to executing the vulnerable segment of the computer code on the first processor and responsive to execution of the inserted additional code of the translated code fragment: sending a request instructing the second processor to stall execution of a second portion of the translated computer code; receiving an indication that the first processor is stalled; upon receiving the indication that the first processor is stalled, executing the vulnerable segment of the computer code; and upon completing execution of the vulnerable segment of the computer code, sending an instruction to the second processor to resume execution of the second portion of the translated computer code, wherein the first processor and the second processor are virtual processors executing respective virtual threads of execution. 8. The system of claim 7 , wherein the second processor is stalled by one of the following: by denying computer code runtime on a central processing unit, by replacing instructions of the second portion of the translated computer code with filler instructions, or by relegating the second portion of the translated computer code to safe instructions. 9. The system of claim 7 , wherein receiving the indication that the second processor is stalled comprises receiving an indication that the second processor is not going to execute the second portion of the translated computer code concurrently with the execution, by the first processor, of the vulnerable segment of the computer code. 10. The system of claim 7 , wherein the second processor is stalled for a defined period of time that is less than a time it takes to complete the execution of the vulnerable segment of the computer code. 11. The system of claim 7 , wherein the request instructing the second processor to stall enables the second processor to execute computer code that is safe to execute while the first processor is executing the vulnerable segment of the computer code. 12. A non-transitory computer-readable medium comprising computer executable instructions for reducing likelihood of concurrency error, the computer executable instructions, when executed by a first processor, cause the first processor to perform the steps of: translating computer code for execution on a plurality of processors, wherein translating the computer code includes identifying a vulnerable segment of the computer code and inserting additional code for executing the vulnerable segment of the computer code to form a translated code fragment, wherein the vulnerable segment of the computer code is code containing computer instructions capable of causing concurrency error when executed by a processor concurrently with another portion of the computer code executed by another processor; executing a first portion of the translated computer code on the first processor of the plurality of processors, wherein the first portion of the translated computer code includes a segment identified as the vulnerable segment of the computer code; prior to the first processor executing the vulnerable segment of the computer code and responsive to execution of the inserted additional code of the translated code fragment: sending a request instructing a second processor of the plurality of processors to stall execution of a second portion of the translated computer code; receiving an indication that the second processor is stalled; upon receiving the indication that the second processor is stalled, executing the vulnerable segment of the computer code; and upon completing execution of the vulnerable segment of the computer code, sending an instruction to the secon

Assignees

Inventors

Classifications

  • Solving problems relating to consistency · CPC title

  • Virtual · CPC title

  • Runtime code conversion or optimisation · CPC title

  • Saving, restoring, recovering or retrying · CPC title

  • Error avoidance (G06F11/07 and subgroups take precedence) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9785506B2 cover?
A system and method for reducing the likelihood of concurrency errors by identifying vulnerable segments of computer code and stalling other virtual machine threads of execution. According to one embodiment of the present invention, the vulnerable segment is identified at runtime, for example in a dynamic translator. According to another embodiment of the present invention, the vulnerable segme…
Who is the assignee on this patent?
Vmware Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/45516. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 10 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).