Patents by Inventor Thomas Lai

Thomas Lai has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20200310942
    Abstract: Collecting runtime virtual machine external state for an application running in an application runtime virtual machine, for use in emulation of the application. A method includes identifying application bytecode for which runtime virtual machine external state is to be collected. The method further includes executing machine code generated from the bytecode to generate the runtime virtual machine external state. The method further includes collecting the runtime virtual machine external state. The method further includes storing the runtime virtual machine external state for use in emulating the application.
    Type: Application
    Filed: April 1, 2019
    Publication date: October 1, 2020
    Inventors: Patrick Lothian NELSON, Jackson Michael DAVIS, Del MYERS, Thomas LAI
  • Publication number: 20200272555
    Abstract: The automatic identification of execution behavior(s) of software. This automatic identification is based on a historical analysis of execution records to identify a particular pattern that represents an execution behavior. In order to automatically identify an execution behavior present within particular software, an execution record (or perhaps multiple execution records) representing the execution of that particular software may be accessed. Based on finding the particular pattern within the execution record (or one, some, or all of the multiple execution records) representing the execution of that particular software, the computing system may automatically identify that the execution behavior is present within the software. This may dramatically assist in modifying that execution behavior.
    Type: Application
    Filed: February 25, 2019
    Publication date: August 27, 2020
    Inventors: Leslie Yvette RICHARDSON, Jackson Michael DAVIS, Del MYERS, Thomas LAI, Andrew R. STERLAND, Jordi MOLA, James M. PINKERTON
  • Patent number: 10747645
    Abstract: Expressly turning tracing on and off at each juncture between code that a developer wants to have traced and other code may reduce trace file size but adds computational cost. Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number of trace enablement and disablement operations. A trace controller uses a tracing disablement distance variable whose values indicate the computational distance from trace disablement. A distance variable modifier automatically moves the distance variable closer to a stop-tracing value as the process executes. The amount of extra tracing is balanced against the reduction in trace enablement/disablement operations by tuning thresholds, based on information about routine size and computational cost.
    Type: Grant
    Filed: April 27, 2018
    Date of Patent: August 18, 2020
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Del Myers, Jackson Davis, Thomas Lai, Patrick Nelson, Jordi Mola, Juan Carlos Arevalo Baeza
  • Publication number: 20200257615
    Abstract: Techniques are provided to use historic execution state information to visualize tracepoint data. For example, historic execution state information corresponding to an application's previous execution is accessed. This historic execution state information was collected while the application was executing. After correlating the historic execution state information to the application's code, a tracepoint is associated with a portion of the code. Consequently, when the code is replayed based on the historic execution state information, the tracepoint causes a behavior of that code portion to be logged while the code is replayed uninterrupted. The code is then actually replayed based on the historic execution state information. During the replay, the tracepoint causes the behavior of the code portion to be logged. The logged behavior is visualized on a user interface.
    Type: Application
    Filed: February 7, 2019
    Publication date: August 13, 2020
    Inventors: Leslie Yvette RICHARDSON, Jackson Michael DAVIS, Thomas LAI, Del MYERS, Patrick Lothian NELSON, Jordi MOLA, James M. PINKERTON, Andrew R. STERLAND, Andrew Joseph LUHRS, Timothy Gardner MISIAK
  • Patent number: 10740219
    Abstract: Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number of trace enablement and disablement operations. A trace controller uses a tracing disablement distance variable whose values indicate the computational distance from trace disablement. A distance variable modifier automatically moves the distance variable closer to a stop-tracing value as the process executes. A create task function is modified to include the setting of an indicator that a newly created task is to be traced if a current task or thread is being traced. An execute task function is modified to request the tracing of the newly created task when it is executed based on the indicator, thereby enabling selective tracing that operates across process boundaries and traces asynchronous code execution.
    Type: Grant
    Filed: October 29, 2018
    Date of Patent: August 11, 2020
    Assignee: WORKMAN NYDEGGER
    Inventors: Del Myers, Thomas Lai, Patrick Nelson, Jordi Mola, Juan Carlos Arevalo Baeza, Stephen Harris Toub
  • Publication number: 20200242007
    Abstract: Dynamically instrumenting code that executes based on a historic execution of a subject executable entity. Historic execution information for a subject executable entity is accessed. The historic execution information includes execution state information for at least one point in time in the historic execution the executable entity. Diagnostic code instruction(s) are identified, for instrumenting subject code instruction(s) of the executable entity. The subject code instruction(s) are virtually executed based at least on supplying the subject code instruction(s) with data from the historic execution information. While virtually executing the identified executable code instruction(s), the diagnostic code instruction(s) are also executed. The diagnostic code instruction(s) collecting diagnostic data regarding the virtual execution of the subject code instruction(s), or override at least one of a value or an execution behavior of the subject code instruction(s).
    Type: Application
    Filed: January 25, 2019
    Publication date: July 30, 2020
    Inventors: Jackson Michael DAVIS, Patrick Lothian NELSON, Andrew R. STERLAND, Jordi MOLA, Del MYERS, Leslie Yvette RICHARDSON, Thomas LAI
  • Patent number: 10698792
    Abstract: Described technologies aid execution control during replays of traced program behavior. Cross-level mapping correlates source code, an intermediate representation, and native instructions in a trace. The trace includes a record of native code instructions which were executed by a runtime-managed program. The trace does not include any executing instance of the runtime. Breakpoints are set to align trace locations with source code expressions or statements, and to skip over garbage collection and other code unlikely to interest a developer. A live debugging environment is adapted to support trace-based reverse execution. An execution controller in a debugger or other tool may utilize breakpoint ranges, cross-level mappings, backward step-out support, and other items to control a replay execution of the trace.
    Type: Grant
    Filed: May 2, 2018
    Date of Patent: June 30, 2020
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Patrick Nelson, Jackson Davis, Del Myers, Thomas Lai, Deborah Chen, Jordi Mola, Noah Falk
  • Patent number: 10592396
    Abstract: Presenting historical state associated with prior execution of an entity. Based on replaying segment(s) of execution of an entity based on a trace, embodiments could present an indication of whether a value of a code element is, at a first execution time point, unknown, known, previously known, and/or known in the future. Additionally, or alternatively, embodiments could present an indication of a value relied upon by simulated execution of a function at a second execution time point, along with an indication of a timing of knowledge of the value in relation to the second execution time point. Additionally, or alternatively, embodiments could present an indication that a return value of a function would be known if the function had executed at a third execution time point, or an indication that the return value would be unknown if the function had executed at the third execution time point.
    Type: Grant
    Filed: April 23, 2018
    Date of Patent: March 17, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Henry Gabryjelski, Jackson Michael Davis, Patrick Lothian Nelson, Del Myers, Thomas Lai, Jordi Mola
  • Patent number: 10541042
    Abstract: Described technologies extend the information available from an execution trace of a program by providing heuristically-derived values for memory contents when the trace does not include data expressly showing the value of a memory cell at a particular execution time. Various heuristics are described. The heuristics may use information about the memory cell at other times to produce the derived value. Some heuristics use other trace data, such as whether the memory cell is in a stack, whether there are gaps in the trace, or whether garbage collection or compilation occurred near the time in question. Grounds for the derived value are reported along with the derived value. A time-travel debugger or other program analysis tool can then present the derived values to users, or make other use of the derived values and grounds to assist debugging and other efforts to improve the functioning of a computing system.
    Type: Grant
    Filed: April 23, 2018
    Date of Patent: January 21, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Patrick Nelson, Jackson Davis, Del Myers, Thomas Lai, Deborah Chen, Jordi Mola, Juan Carlos Arevalo Baeza
  • Publication number: 20190340103
    Abstract: Described technologies aid execution control during replays of traced program behavior. Cross-level mapping correlates source code, an intermediate representation, and native instructions in a trace. The trace includes a record of native code instructions which were executed by a runtime-managed program. The trace does not include any executing instance of the runtime. Breakpoints are set to align trace locations with source code expressions or statements, and to skip over garbage collection and other code unlikely to interest a developer. A live debugging environment is adapted to support trace-based reverse execution. An execution controller in a debugger or other tool may utilize breakpoint ranges, cross-level mappings, backward step-out support, and other items to control a replay execution of the trace.
    Type: Application
    Filed: May 2, 2018
    Publication date: November 7, 2019
    Inventors: Patrick NELSON, Jackson DAVIS, Del MYERS, Thomas LAI, Deborah CHEN, Jordi MOLA, Noah FALK
  • Publication number: 20190332520
    Abstract: Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number of trace enablement and disablement operations. A trace controller uses a tracing disablement distance variable whose values indicate the computational distance from trace disablement. A distance variable modifier automatically moves the distance variable closer to a stop-tracing value as the process executes. A create task function is modified to include the setting of an indicator that a newly created task is to be traced if a current task or thread is being traced. An execute task function is modified to request the tracing of the newly created task when it is executed based on the indicator, thereby enabling selective tracing that operates across process boundaries and traces asynchronous code execution.
    Type: Application
    Filed: October 29, 2018
    Publication date: October 31, 2019
    Inventors: Del MYERS, Thomas LAI, Patrick NELSON, Jordi MOLA, Juan Carlos AREVALO BAEZA, Stephen Harris TOUB
  • Publication number: 20190332519
    Abstract: Expressly turning tracing on and off at each juncture between code that a developer wants to have traced and other code may reduce trace file size but adds computational cost. Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number of trace enablement and disablement operations. A trace controller uses a tracing disablement distance variable whose values indicate the computational distance from trace disablement. A distance variable modifier automatically moves the distance variable closer to a stop-tracing value as the process executes. The amount of extra tracing is balanced against the reduction in trace enablement/disablement operations by tuning thresholds, based on information about routine size and computational cost.
    Type: Application
    Filed: April 27, 2018
    Publication date: October 31, 2019
    Inventors: Del MYERS, Jackson DAVIS, Thomas LAI, Patrick NELSON, Jordi MOLA, Juan Carlos AREVALO BAEZA
  • Publication number: 20190324892
    Abstract: Presenting historical state associated with prior execution of an entity. Based on replaying segment(s) of execution of an entity based on a trace, embodiments could present an indication of whether a value of a code element is, at a first execution time point, unknown, known, previously known, and/or known in the future. Additionally, or alternatively, embodiments could present an indication of a value relied upon by simulated execution of a function at a second execution time point, along with an indication of a timing of knowledge of the value in relation to the second execution time point. Additionally, or alternatively, embodiments could present an indication that a return value of a function would be known if the function had executed at a third execution time point, or an indication that the return value would be unknown if the function had executed at the third execution time point.
    Type: Application
    Filed: April 23, 2018
    Publication date: October 24, 2019
    Inventors: Henry GABRYJELSKI, Jackson Michael DAVIS, Patrick Lothian NELSON, Del MYERS, Thomas LAI, Jordi MOLA
  • Publication number: 20190325980
    Abstract: Described technologies extend the information available from an execution trace of a program by providing heuristically-derived values for memory contents when the trace does not include data expressly showing the value of a memory cell at a particular execution time. Various heuristics are described. The heuristics may use information about the memory cell at other times to produce the derived value. Some heuristics use other trace data, such as whether the memory cell is in a stack, whether there are gaps in the trace, or whether garbage collection or compilation occurred near the time in question. Grounds for the derived value are reported along with the derived value. A time-travel debugger or other program analysis tool can then present the derived values to users, or make other use of the derived values and grounds to assist debugging and other efforts to improve the functioning of a computing system.
    Type: Application
    Filed: April 23, 2018
    Publication date: October 24, 2019
    Inventors: Patrick NELSON, Jackson DAVIS, Del MYERS, Thomas LAI, Deborah CHEN, Jordi MOLA, Juan Carlos AREVALO BAEZA
  • Publication number: 20190324891
    Abstract: Presenting historical state of a code element of a prior execution of an entity. An embodiment includes presenting historical state of the code element based on replaying segment(s) of the prior execution from trace data. Presenting the historical state includes presenting a first state of the code element, in connection with a first execution time point. The first state is based on a first memory access for the code element at the first execution time point. Presenting the historical state also includes presenting the first state of the code element along with an indication that the first state is a last known state (in connection with a subsequent execution time point) or a next known state (in connection with a prior execution time point).
    Type: Application
    Filed: April 23, 2018
    Publication date: October 24, 2019
    Inventors: Jordi MOLA, Henry GABRYJELSKI, Jackson Michael DAVIS, Deborah Liang CHEN, Del MYERS, Thomas LAI, Patrick Lothian NELSON, Juan Carlos AREVALO BAEZA, Kenneth Walter SYKES
  • Patent number: 8429454
    Abstract: Systems and methods are described for coordinating error reporting among a plurality of managed runtimes that are concurrently executing in the same process. In accordance with various embodiments, an error reporting manager that executes concurrently in the same process as the managed runtimes coordinates error reporting among the managed runtimes in a manner that does not require the managed runtimes to be aware of each other or to communicate directly with each other.
    Type: Grant
    Filed: December 16, 2009
    Date of Patent: April 23, 2013
    Assignee: Microsoft Corporation
    Inventors: Hsu-chieh Yuan, Richard M. Byers, Thomas Lai, Jon Langdon, Kumar Gaurav Khanna, Vipul D. Patel
  • Patent number: 8291381
    Abstract: Where a process in a computing system comprises mixed code, having different sections of code managed by different runtimes, the call stack used to coordinate function invocations may comprise call stack frames created according to multiple calling conventions. In order to analyze this call stack in a stack walk or unwinding, a debugger may be configured to request the runtimes managing the process to claim a particular call stack frame, and to request the runtime that claims it to parse the contents of the frame, or to utilize call stack analysis techniques if the call stack frame was created by unmanaged code.
    Type: Grant
    Filed: September 27, 2007
    Date of Patent: October 16, 2012
    Assignee: Microsoft Corporation
    Inventors: Thomas Lai, Mike Stall, Jon Langdon, Jan Stranik, Drew Bliss
  • Publication number: 20110145662
    Abstract: Systems and methods are described for coordinating error reporting among a plurality of managed runtimes that are concurrently executing in the same process. In accordance with various embodiments, an error reporting manager that executes concurrently in the same process as the managed runtimes coordinates error reporting among the managed runtimes in a manner that does not require the managed runtimes to be aware of each other or to communicate directly with each other.
    Type: Application
    Filed: December 16, 2009
    Publication date: June 16, 2011
    Applicant: MICROSOFT CORPORATION
    Inventors: Hsu-chieh Yuan, Richard M. Byers, Thomas Lai, Jon Langdon, Kumar Gaurav Khanna, Vipul D. Patel
  • Publication number: 20090089764
    Abstract: Where a process in a computing system comprises mixed code, having different sections of code managed by different runtimes, the call stack used to coordinate function invocations may comprise call stack frames created according to multiple calling conventions. In order to analyze this call stack in a stack walk or unwinding, a debugger may be configured to request the runtimes managing the process to claim a particular call stack frame, and to request the runtime that claims it to parse the contents of the frame, or to utilize call stack analysis techniques if the call stack frame was created by unmanaged code.
    Type: Application
    Filed: September 27, 2007
    Publication date: April 2, 2009
    Applicant: Microsoft Corporation
    Inventors: Thomas Lai, Mike Stall, Jon Langdon, Jan Stranik, Andrew Bliss
  • Patent number: 7257146
    Abstract: A method and system for stabilizing energy consumption in multiple loads, or in single multi-phase loads. The method and system also compensates for unbalance in multi-phase loads. A central controller monitors variable reactances in the loads and identifies situations of power and/or current fluctuation and/or unbalance. It determines appropriate corrective action by the other loads/phases to compensate for the power and/or current change or unbalance due to the problematic load, and it issues control signals instructing variable reactor controllers associated with the other loads to adjust accordingly. The method and system may by applied to electric arc furnace installations. The system and method may be employed to maintain a predetermined level of unbalance in the system.
    Type: Grant
    Filed: September 1, 2005
    Date of Patent: August 14, 2007
    Assignee: Hatch Ltd.
    Inventors: Mohammad Sedighy, Thomas Lai Wai Ma