News Column

Researchers Submit Patent Application, "Runtime Emulating Static Thread Local Storage of Portable Executable Software Code", for Approval

June 19, 2014



By a News Reporter-Staff News Editor at Computer Weekly News -- From Washington, D.C., VerticalNews journalists report that a patent application by the inventor CLARK, Jonathan (San Francisco, CA), filed on October 16, 2013, was made available online on June 5, 2014.

The patent's assignee is VMware, Inc.

News editors obtained the following quote from the background information supplied by the inventors: "Well known software code commonly contained in portable executable file format also known as PE file format, mainly includes information to be used by a well known Windows.TM. process loader. PE files are well known EXE or DLL files that are provided by the operating system and/or by an installed software application intended to run within the respective Windows.TM. operating system.

"Upon initializing of a software application, the process loader commonly creates new processes in the operation system and uses the loaded PE image to determine various starting properties such as which memory addresses to initially allocate, how much stack space is required and the like as is well known in the art. The process loader also consults the PE image to determine what additional DLLs should be loaded before the process begins executing. These DLLs are commonly known as implicitly referenced DLLs.

"DLL files may optionally specify what is known as Thread Local Storage Data Directory Element [TLS]. TLS instructs, via the process loader, the operating system to allocate and initialize a specific amount of data for each thread created while the related application is running. This is sometimes necessary so that individual threads can read and write data without interference from other threads. A thread is a well known part of a program that can execute independently of other program parts and eventually concurrently with other thread(s).

"During runtime of the related application, the size of the initially allocated and initialized data cannot be changed since it would interfere with thread access. Hence, the Windows.TM. process loader processes only TLS information for implicitly referenced DLL files.

"There are a number of shortcomings that come with the process loader's automatic loading of implicitly referenced DLLs prior to application run. The process loader has limited facilities for programmatically determining where a DLL should be loaded from and which version should be used. The process loader does not provide facilities for loading DLLs from data streams, compressed archives, or application specific encrypted storage. The process loader significantly limits a streamlined application startup during which only immediately needed DLLs are loaded. Therefore, there exists a need for dynamically and programmatically loading DLLs during runtime of the respective application. The present invention addresses this need."

As a supplement to the background information on this patent application, VerticalNews correspondents also obtained the inventor's summary information for this patent application: "The embodiments of the present invention emulates a Windows.TM. process loader for dynamic TLS data allocation during respective application runtime. This is accomplished in several steps. First, the total required size of all TLS data blocks is calculated for implicitly referenced DLLs and/or runtime to be loaded DLLs that contain a TLS directory. Next, a pre-initialized data block duplicate of the previously calculated size is created preferably after initializing execution of the respective application. Total TLS data block calculation and data block duplicate creation may also be provided at a time prior to application initialization, in case of which the data block duplicate may be stored prior to its use. While the application is running, an event notification system generates a number of event notifications associated with intercepted runtime DLL loading and/or intercepted runtime DLL freeing and/or runtime thread create calling and/or runtime thread exit calling made by and/or in association with the application. Upon receipt of a specific event notification, a previously created thread data block duplicate is allocated. The thread data block duplicate is allocated for a thread created by the intercepted runtime thread create call. Upon receipt of other types of event notifications, a thread local storage callback function associated with an intercepted runtime loaded DLL and/or an intercepted runtime freed DLL is executed. The event notification system may be based on a well known debugging system. The event notification system may also incorporate for runtime interception a hooking system such as one described in the cross referenced application.

"In one embodiment, 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.

"In another embodiment, a method for emulating static thread local storage of an executable software code at runtime is disclosed. The method 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.

"In yet another embodiment, a system is disclosed. The system includes a computer system having an operating system. The system also includes a module executable by the operating system. The module is configured to emulate static thread local storage of an executable software code at runtime, the module further configured to perform an operation. 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.

BRIEF DESCRIPTION OF FIGURES

"FIG. 1 is an overview block diagram of a first embodiment of the present invention.

"FIG. 2 is an overview block diagram of a second embodiment of the present invention.

"FIG. 3 is a detail block diagram of step 20 depicted in FIG. 2 in accordance with one or more embodiments.

"FIG. 4 is a detail block diagram of step 30 depicted in FIG. 2 in accordance with one or more embodiments.

"FIG. 5 is a detail block diagram of step 80 depicted in FIGS. 1 and 2 in accordance with one or more embodiments.

"FIG. 6 is a detail block diagram of step 70 depicted in FIGS. 1 and 2 in accordance with one or more embodiments."

For additional information on this patent application, see: CLARK, Jonathan. Runtime Emulating Static Thread Local Storage of Portable Executable Software Code. Filed October 16, 2013 and posted June 5, 2014. Patent URL: http://appft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.html&r=158&p=4&f=G&l=50&d=PG01&S1=20140529.PD.&OS=PD/20140529&RS=PD/20140529

Keywords for this news article include: Software, VMware Inc.

Our reports deliver fact-based news of research and discoveries from around the world. Copyright 2014, NewsRx LLC


For more stories covering the world of technology, please see HispanicBusiness' Tech Channel



Source: Computer Weekly News


Story Tools






HispanicBusiness.com Facebook Linkedin Twitter RSS Feed Email Alerts & Newsletters