← Back to Patent Explorer
US5491808A Expired / Lapsed US ⏱️ 0.0 years remaining

Method for tracking memory allocation in network file server

Assignee: Seagate Technology LLC
•
Filing: 1992-09-30
•
Granted: 1996-02-13
•
Expires: 2012-09-30
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method for dynamically tracking memory resource allocations/deallocations of a program resident in the memory of a network file server is disclosed wherein calls to system memory allocation functions are intercepted and diverted to memory resident tracker routines, interposed between the caller and the called functions to monitor returns from the called functions. Public symbol lists of application program interfaces are scanned for functions to be tracked, and function entry points are taken over by replacing initial instructions of the system functions with jumps to the tracker routines. The tracker routines then call the remainder of the system functions and record the reply before passing control back to the original caller program. Information on allocated blocks is written to ABLK blocks taken from an ABLK free block pool allocated at tracker startup. Subsequent deallocations of the allocated blocks release the same ABLK blocks back to the ABLK free pool. Information on "NULL" pointer and similar returns indicating allocation/deallocation errors is written to MSG queue blocks taken from a MSG free block pool allocated at tracker startup. Log file generator threads are activated to list the filled ABLK and MSG blocks when signalled. Cleanup routines restore the replaced code and deallocate all ABLK and MSG memory blocks when the tracker exits.

Inventors

  • 👤 James F. Geist, Jr.

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 19:32
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/30; G06F11/34; G06F11/3466; G06F11/3495; G06F12/00; G06F12/02; G06F12/0223; G06F12/023; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99952; Y10S707/99953; Y10S707/99956

Claims Analysis

Total Claims: 16
Claim 1
Independent Claim 269 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocation, the method comprising the steps of: (a) allocating memory blocks for storing tracking information wherein said step (a) of allocating memory blocks includes: (a.1) allocating a first pool of memory blocks for storing normal return information; and (a.2) allocating a second pool of memory blocks for storing exception messages; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information, and (g) returning the received return information to the server resident program that made the system call.
Claim 2
Independent Claim 269 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocation, the method comprising the steps of: (a) allocating memory blocks for storing tracking information wherein said step (a) of allocating memory blocks includes: (a.1) allocating a first pool of memory blocks for storing normal return information; and (a.2) allocating a second pool of memory blocks for storing exception messages; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information, and (g) returning the received return information to the server resident program that made the system call.
Claim 3
Dependent Claim 68 words
A tracking method according to claim 1 wherein said step (f) of recording includes for each call made by a server resident program to a system memory allocation function: (f.1) recording normal return information, if any, in a corresponding portion of the pre-allocated first pool of memory blocks; and (f.2) recording exception return information, if any, in a corresponding portion of the pre-allocated second pool of memory blocks.
Claim 4
Independent Claim 314 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations and wherein said network operating system has both externally and internally listed groups of public functions that are callable by a server resident program, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions and wherein the step (b) of identifying entry points includes: (b.1) searching the externally listed public functions for callable memory allocation functions; (b.2) searching the internally listed public functions for callable memory allocation functions; and (b.3) identifying the entry points of found memory allocation functions in both the externally and internally listed groups of public functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information, and (g) returning the received return information to the server resident program that made the system call.
Claim 5
Independent Claim 314 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations and wherein said network operating system has both externally and internally listed groups of public functions that are callable by a server resident program, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions and wherein the step (b) of identifying entry points includes: (b.1) searching the externally listed public functions for callable memory allocation functions; (b.2) searching the internally listed public functions for callable memory allocation functions; and (b.3) identifying the entry points of found memory allocation functions in both the externally and internally listed groups of public functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information, and (g) returning the received return information to the server resident program that made the system call.
Claim 6
Dependent Claim 29 words
A tracking method according to claim 3 further comprising: setting up a thunk structure for each callable memory allocation function identified by said step (b) of identifying entry points.
Claim 7
Dependent Claim 26 words
A tracking method according to claim 4 wherein each thunk structure includes an assembly code portion and a second portion executable at a higher language level.
Claim 8
Independent Claim 272 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information and wherein said step (f) of recording is limited to memory allocations and deallocations that are attempted or invoked by system calls made from an identified one of plural server resident programs running in the computer network server; and (g) returning the received return information to the server resident program that made the system call.
Claim 9
Independent Claim 272 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information and wherein said step (f) of recording is limited to memory allocations and deallocations that are attempted or invoked by system calls made from an identified one of plural server resident programs running in the computer network server; and (g) returning the received return information to the server resident program that made the system call.
Claim 10
Dependent Claim 29 words
A tracking method according to claim 6 further comprising the step of: spawning the identified one of the plural server resident programs after performing said steps (a) through (c).
Claim 11
Independent Claim 297 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information; (g) returning the received return information to the server resident program that made the system call; and (h) using the return information recorded in the allocated memory blocks for identifying improper attempts or invocations of server memory allocations and deallocations by system calls made from one or more server resident programs being tracked wherein the one or more tracked server resident programs allocate system memory after being loaded but do not deallocate the allocated system memory prior to being unloaded.
Claim 12
Independent Claim 297 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information; (g) returning the received return information to the server resident program that made the system call; and (h) using the return information recorded in the allocated memory blocks for identifying improper attempts or invocations of server memory allocations and deallocations by system calls made from one or more server resident programs being tracked wherein the one or more tracked server resident programs allocate system memory after being loaded but do not deallocate the allocated system memory prior to being unloaded.
Claim 13
Independent Claim 299 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information; (g) returning the received return information to the server resident program that made the system call; and (h) using the return information recorded in the allocated memory blocks for identifying improper attempts or invocations of server memory allocations and deallocations by system calls made from one or more server resident programs being tracked wherein the one or more tracked server resident programs attempt to deallocate system memory after being loaded but have not previously allocated system memory prior to attempting the deallocation.
Claim 14
Independent Claim 299 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information; (g) returning the received return information to the server resident program that made the system call; and (h) using the return information recorded in the allocated memory blocks for identifying improper attempts or invocations of server memory allocations and deallocations by system calls made from one or more server resident programs being tracked wherein the one or more tracked server resident programs attempt to deallocate system memory after being loaded but have not previously allocated system memory prior to attempting the deallocation.
Claim 15
Independent Claim 301 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information; (g) returning the received return information to the server resident program that made the system call; and (h) using the return information recorded in the allocated memory blocks for identifying improper attempts or invocations of server memory allocations and deallocations by system calls made from one or more server resident programs being tracked wherein the one or more tracked server resident programs attempt to deallocate system memory to a first free pool after having allocated the system memory from a different second free pool.
Claim 16
Independent Claim 301 words
A method for tracking server memory allocations and deallocations that are attempted or invoked by system calls made from one or more server resident programs running in a computer network server, where the server is operating under control of a network operating system having system memory allocation functions callable by the one or more server resident programs for making desired memory allocations and deallocations, the method comprising the steps of: (a) allocating memory blocks for storing tracking information; (b) identifying entry points for accessing the system memory allocation functions; (c) replacing initial instructions of the system memory allocation functions that are accessed by the identified entry points with jump instructions so as to cause system calls made to those system functions to be redirected to respective tracker routines; (d) in response to each system call whose execution is redirected to a respective tracker routine, executing instructions equivalent to the respectively replaced initial instructions of the called system memory allocation function, and then calling the remainder of the called system memory allocation function from the tracker routine to which the redirection jump was made; (e) receiving return information from the called remainder of the system memory allocation function at the corresponding tracker routine; (f) recording the received return information in the memory blocks allocated for storing tracking information; (g) returning the received return information to the server resident program that made the system call; and (h) using the return information recorded in the allocated memory blocks for identifying improper attempts or invocations of server memory allocations and deallocations by system calls made from one or more server resident programs being tracked wherein the one or more tracked server resident programs attempt to deallocate system memory to a first free pool after having allocated the system memory from a different second free pool.

References Cited (Backward Citations)

US4817080A Cited
US4891639A Cited
US5133065A Cited
US5220655A Cited
US5226120A Cited
US5255183A Cited
US5315580A Cited
US5327489A Cited
US5257381A Cited
US5430709A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-02-12 1999-08-14 2000-02-13 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-02-12 2003-08-14 2004-02-13 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-02-12 2007-08-14 2008-02-13 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag