Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of detecting locking discipline violations of shared resources of a computing platform, by a testing process to be executed concurrently with one or more other processes on said computing platform, the testing process comprising: locking a shared resource of said computing platform; reading a value of the shared resource; locally storing the value read from the shared resource to a location other than the shared resource; rereading the value of the shared resource which has been locked, after a predefined time period; generating a locking discipline violation report if the value of said shared resource as reread by said rereading is different from the value of said resource as locally stored by said locally storing generating said list of locks prior to execution of a program which includes said testing process and said one or more other processes; wherein generating said list of locks comprises: performing a static analysis of a source code of said program, to detect one or more locks and one or more, respective, shared resources protected by the one or more locks; identifying substantially all the locks in said program; identify a scope of each lock of said locks; identifying one or more variables that are within the scope of each lock; and generating said list of locks, wherein each lock is associated with the one or more variables within its scope.
2. The method of claim 1 , wherein the testing process comprises: selecting said lock from a list of locks corresponding to a list of shared resources, wherein each lock of said list protects one or more of the shared resources of said computing platform.
3. The method of claim 2 , comprising: automatically generating said list of locks during execution of a program on said computing platform, wherein the program includes said testing process and said one or more other processes.
4. The method of claim 3 , comprising, during execution of said program: detecting that a lock is taken; adding a name of the taken lock to the list of locks; adding the name of the taken lock to a sub-list of held locks; detecting access to a shared resource; and associating the name of the accessed shared resource with all the locks of the sub-list of held locks.
5. The method of claim 4 , comprising: subsequent to generation of said list of locks, and prior to selecting said lock from said list of locks, presenting said list of locks to a programmer of said program for review, and modifying said list of locks based on input received from said programmer.
6. The method of claim 1 , comprising: if a performance overhead associated with execution of the testing process is greater than a threshold value, automatically modifying said pre-defined time period.
7. The method of claim 1 , wherein the predefined time period comprises a time period selected from the group consisting of: a pseudo-random time period; a time period calculated by taking into account one or more properties of said computing platform; and a time period calculated by taking into account one or more properties of a program running on said computing platform.
8. A computerized system for detecting locking discipline violations of shared resources of a computing platform, the system comprising: a processor; a testing process adapted, to be executed concurrently with one or more other processes executed by said processor, wherein the testing process is configured: to lock a shared resource of said computing platform; to read a value of the shared resource; to locally store the value read from the shared resource to a location other than the shared resource; to reread the value of the shared resource that has been locked after a predefined time period, to generate a locking discipline violation report if the value of said shared resource as reread is different from the value of said resource as locally stored generating said list of locks prior to execution of a program which includes said testing process and said one or more other processes; wherein generating said list of locks comprises: performing a static analysis of a source code of said program, to detect one or more locks and one or more, respective, shared resources protected by the one or more locks; identifying substantially all the locks in said program; identify a scope of each lock of said locks; identifying one or more variables that are within the scope of each lock; and generating said list of locks, wherein each lock is associated with the one or more variables within its scope.
9. The system of claim 8 , wherein the testing process is to select said lock from a list of locks corresponding to a list of shared resources, wherein each lock of said list protects one or more of the shared resources of said computing platform.
10. The system of claim 9 , comprising: a list generator to automatically generate said list of locks during execution of a program on said computing platform, wherein the program includes said testing process and said one or more other processes.
11. The system of claim 10 , wherein during execution of said program the list generator is to detect that a lock is taken, add a name of the taken lock to the list of locks, add the name of the taken lock to a sub-list of held locks, detect access to a shared resource, and associate the name of the accessed shared resource with all the locks of the sub-list of held locks.
12. The system of claim 11 , wherein subsequent to generation of said list of locks, and prior to selection of said lock from said list of locks, the list generator is to present said list of locks to a programmer of said program for review, and to modify said list of locks based on input received from said programmer.
13. The system of claim 8 , wherein the list of locks is generated prior to execution of a program which includes said testing process and said one or more other processes.
14. The system of claim 8 , comprising: a testing process modifier to automatically modify said pre-defined time period if a performance overhead associated with execution of the testing process is greater than a threshold value.
15. The system of claim 8 , wherein the predefined time period comprises a time period selected from the group consisting of: a pseudo-random time period; a time period calculated by taking into account one or more properties of said computing platform; and a time period calculated by taking into account one or more properties of a program running on said computing platform.
16. A computer program product comprising: a non-transitory computer useable medium a first program instruction for locking a shared resource of said computing platform; a second program instruction for reading a value of the shared resource; a third program instruction for locally storing the value read from the shared resource to a location other than the shared resource; a fourth program instruction for rereading the value of the shared resource that has been locked after a predefined time period; a fifth program instruction for generating a locking discipline violation report if the value of said shared resource as reread by said rereading is different from the value of said resource as locally stored by said locally storing, wherein said first, second, third, fourth and fifth program instructions are stored on said non-transitory computer readable media a sixth program instruction for generating said list of locks prior to execution of a program which includes said testing process and said one or more other processes; wherein generating said list of locks comprises: performing a static analysis of a source code of said program, to detect one or more locks and one or more, respective, shared resources protected by the one or more locks; identifying substantially all the locks in said program; identify a scope of each lock of said locks; identifying one or more variables that are within the scope of each lock; and generating said list of locks, wherein each lock is associated with the one or more variables within its scope.
17. The computer program product of claim 16 , wherein the testing process comprises: selecting said lock from a list of locks corresponding to a list of shared resources, wherein each lock of said list protects one or more of the shared resources of said computing platform.
Unknown
July 2, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.