IP Library Granted Patent US 9,766,958
Granted Patent B2
US 9,766,958 · App. 15/164,653 · Granted Sep 19, 2017

Runtime emulating static thread local storage of portable executable software code

Inventor: Jonathan Clark (San Francisco, CA)
Assignee: VMware, Inc.
G06F9/542G06F9/44521
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 9,766,958
App. No.
15/164,653
Granted
Sep 19, 2017
Kind
B2
Abstract

A computer readable storage medium containing a program which, when executed by a processor, performs an operation of emulating static thread local storage of an executable software code at runtime, is disclosed. The operation includes executing the executable software code within a process memory space. During the execution of the executable software code, an occurrence of an event that is associated with a thread create operation is monitored. When the monitored event occurs, a thread data block duplicate is established within the process memory space and associated with a thread created by the thread create operation. The thread data block duplicate is configured to be accessed by executing a thread local storage callback function.

Claims (36)

1. A method comprising:

generating a thread data block duplicate having a predetermined size within an isolated process memory space, wherein the predetermined size is based on local storage block sizes calculated for one or more implicitly-referenced dynamic link libraries (DLLs) and the identified runtime to be loaded DLLs identified in portable executable software code;

initializing an application for execution within the isolated process memory, wherein the application is associated with the portable executable software code;

while the application is executing, generating one or more event notifications, wherein a first event notification is associated with a thread create call made by the application;

in response to the first event notification, allocating the thread data block duplicate within the process memory space for access by a thread created by the thread create operation; and

executing the thread, wherein executing the thread includes accessing the thread data block duplicate.

2. The method of claim 1 , wherein the thread data block duplicate is configured to provide one or more partitions while established within the isolated process memory.

3. The method of claim 1 , wherein a second event notification is associated with an intercepted runtime (DLL) loading.

4. The method of claim 3 , wherein in response to the second event notification of loading of a DLL by the application, determining whether the loaded DLL matches a previously identified runtime to be loaded DLL.

5. The method of claim 4 , in response to determining that the loaded DLL matches, calling an associated thread local storage callback function.

6. The method of claim 1 , wherein a third event notification is associated with an intercepted runtime DLL freeing.

7. The method of claim 6 , wherein in response to the third even notification of freeing of a DLL by the application, executing a thread local storage callback function associated with the freed DLL.

8. The method of claim 1 , wherein a fourth even notification is associated with an intercepted runtime thread exit call.

9. The method of claim 1 , wherein in response to the thread create call of the first notification, calling respective thread local storage callback functions for each implicitly referenced DLL and each runtime to be loaded DLL associated with the created thread.

10. A system, comprising:

a computer system having an operating system;

a module executable by the operating system, the module configured to emulate static thread local storage of an executable software code at runtime, the module further configured to perform an operation, the operation comprising:

generating a thread data block duplicate having a predetermined size within an isolated process memory space, wherein the predetermined size is based on local storage block sizes calculated for one or more implicitly-referenced dynamic link libraries (DLLs) and the identified runtime to be loaded DLLs identified in portable executable software code;

initializing an application for execution within the isolated process memory, wherein the application is associated with the portable executable software code;

while the application is executing, generating one or more event notifications, wherein a first event notification is associated with a thread create call made by the application;

in response to the first event notification, allocating the thread data block duplicate within the process memory space for access by a thread created by the thread create operation; and

executing the thread, wherein executing the thread includes accessing the thread data block duplicate.

11. The system of claim 10 , wherein the thread data block duplicate is configured to provide one or more partitions while established within the isolated process memory.

12. The system of claim 10 , wherein a second event notification is associated with an intercepted runtime dynamic link library (DLL) loading.

13. The system of claim 12 , wherein in response to the second event notification of loading of a DLL by the application, determining whether the loaded DLL matches a previously identified runtime to be loaded DLL.

14. The system of claim 13 , in response to determining that the loaded DLL matches, calling an associated thread local storage callback function.

15. The system of claim 10 , wherein a third event notification is associated with an intercepted runtime DLL freeing.

16. The system of claim 15 , wherein in response to the third even notification of freeing of a DLL by the application, executing a thread local storage callback function associated with the freed DLL.

17. The system of claim 10 , wherein a fourth even notification is associated with an intercepted runtime thread exit call.

18. The system of claim 10 , wherein in response to the thread create call of the first notification, calling respective thread local storage callback functions for each implicitly referenced DLL and each runtime to be loaded DLL associated with the created thread.

19. A non-transitory computer readable storage medium containing a program which, when executed by a processor, performs an operation of emulating static thread local storage of an executable software code at runtime, the operation comprising:

generating a thread data block duplicate having a predetermined size within an isolated process memory space, wherein the predetermined size is based on local storage block sizes calculated for one or more implicitly-referenced dynamic link libraries (DLLs) and the identified runtime to be loaded DLLs identified in portable executable software code;

initializing an application for execution within the isolated process memory, wherein the application is associated with the portable executable software code;

while the application is executing, generating one or more event notifications, wherein a first event notification is associated with a thread create call made by the application;

in response to the first event notification, allocating the thread data block duplicate within the process memory space for access by a thread created by the thread create operation; and

executing the thread, wherein executing the thread includes accessing the thread data block duplicate.

Assignments (3)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
Continuity (4)
Continuation 14055597 · Oct 16, 2013
Continuation 12973664 · Dec 20, 2010
Continuation 11552734 · Oct 25, 2006
Related Publication 20160266945A1 · Sep 15, 2016