Provided is a method for mitigating the effects of an application which crashes as the result of supplemental code (e.g., plug-in), particularly a plug-in from a source other than the source of the operating system of the device or the source of the application that crashes. The method includes executing the application. As the application is running, it may be monitored to determine if normal execution of instructions ceases. When that occurs, the system will make a determination if code from a supplemental code module was the cause of the crash, and will make an evaluation if that supplemental code module is from a source other than the source(s) of the operating system and application in question. In some implementations, remedial steps may be provided, such as providing information on subsequent executions of the application.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method comprising: determining, by a processor executing an application, that the application has crashed since its last execution because of execution of a third party supplemental code module; retrieving, by the processor, a supplemental code module name corresponding to the third party supplemental code module; retrieving, by the processor, a plurality of supplemental code module names corresponding to supplemental code modules that caused earlier crashes of the application; checking, by the processor, whether the name of the third party supplemental code module occurs a predetermined number of times in the plurality of supplemental code module names to determine a pattern of crashes caused by the third party supplemental code module; and selectively performing, by the processor, an action based on the checking, the action selected from the group consisting of uninstalling, disabling and loading the third party supplemental code module.
2. The method of claim 1 , wherein selectively performing an action comprises: presenting a user interface to a user identifying the third party supplemental code module that was responsible for crashing the application; querying the user as to a selection of one of uninstalling, disabling and loading of the third party supplemental code module in response to the identification of the third party supplemental code module; and receiving the user's selection in response to the querying.
3. The method of claim 2 , wherein presenting the user interface to the user identifying the third party supplemental code module comprises: presenting a suggestion on the user interface to contact the developer of the identified third party supplemental code module.
4. The method of claim 1 , wherein the determining comprises: retrieving a date and time associated with the last execution of the application; retrieving a date and time associated with a most recent crash of the application; and comparing the date and time of the most recent crash to the time and date of the last execution to determine whether the application has crashed since its last execution.
5. The method of claim 1 , wherein the determining comprises: retrieving a supplemental code module name corresponding to a supplemental code module that has caused a most recent crash of the application; and determining whether the supplemental code module is provided by a third party.
6. The method of claim 1 , comprising: retrieving a current date and time associated with the execution of the application; and recording the current date and time for retrieval during a next execution of the application to determine whether the application crashed since its execution represented by the current date and time.
7. The method of claim 1 , comprising: generating a hint for a supplemental code module when the supplemental code module is loaded into the application, the hint identifying a developer of the supplemental code module and a descriptive name for the supplemental code module.
8. The method of claim 1 , wherein the determining comprises detecting the crash of the application during its last execution.
9. The method of claim 8 , comprising deciding whether the third party supplemental code module was a cause of the crash of the application during its last execution.
10. The method of claim 9 , wherein the deciding comprises: identifying a recent frame in a plurality of frames, each of the frames representing an address of code executed by the application during its prior execution; determining whether an address of the identified frame is within an address range of a code module in a plurality of code modules loaded by the application during the prior execution; and determining whether an origin attribute of the code module is indicative of third party origin.
11. The method of claim 10 , where determining whether the origin attribute of the code module is indicative of third party origin comprises: retrieving the descriptive attribute corresponding to an attribute type for the code module; retrieving a descriptive attribute for each of the application and an operating system of an attribute type that corresponds to the attribute type for the descriptive attribute for the code module; and determining whether the retrieved descriptive attribute of the code module does not match the retrieved descriptive attribute of the operating system and the retrieved descriptive attribute of the application.
12. The method of claim 9 , wherein the deciding comprises: obtaining a plurality of frames, each of said frames representing an address of code executed by the application during the last execution; determining, for each of a predetermined number of frames of the plurality of frames, whether an address of a frame is within an address range of a code module of a plurality of code modules loaded by the application during the last execution, each of said code modules having an address range associated with a respective code module; determining whether an origin attribute of the code module is third party; and identifying a code module having the most frames within its address range and the origin attribute of third party as the cause of the crash of the application during its last execution.
13. The method of claim 9 , comprising: presenting a user interface to the user identifying the third party supplemental code module as the cause of crashing the application during its last execution and querying the user as to a selection in response to the identification of the third party supplemental code module; and receiving the user's selection in response to the querying.
14. A system for deciding whether to load one or more supplemental code modules into an application, the system comprising: a processor; a crash determination module including instructions embedded in a non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to: determine that the application has crashed since its last execution because of execution of a third party supplemental code module; retrieve a supplemental code module name corresponding to the third party supplemental code module; retrieve a plurality of supplemental code module names corresponding to supplemental code modules that caused earlier crashes of the application; and check whether the name of the third party supplemental code module occurs a predetermined number of times in the plurality of supplemental code module names to determine a pattern of crashes caused by the third party supplemental code module; and a supplemental code loading module including instructions embedded in the non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to selectively perform an action relative to the third party supplemental code module based on the checking, the action selected from the group consisting of uninstalling, disabling and loading the third party supplemental code module.
15. The system of claim 14 , further including an application presentation module that includes instructions embedded in the non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to: present a user interface to a user identifying the third party supplemental code module that was responsible for crashing the application; query the user as to a selection of one of uninstalling, disabling and loading of the third party supplemental code module in response to the identification of the third party supplemental code module; and receive the user's selection in response to the query.
16. The system of claim 15 , wherein the instructions that are configured to cause the processor to present the user interface to the user identifying the third party supplemental code module include instructions that are configured to cause the processor to: present a suggestion on the user interface to contact the developer of the identified third party supplemental code module.
17. The system of claim 14 , wherein the crash determination module includes instructions that are configured to cause the processor to: retrieve a date and time associated with the last execution of the application; retrieve a date and time associated with a most recent crash of the application; and compare the date and time of the most recent crash to the time and date of the last execution to determine whether the application has crashed since its last execution.
18. The system of claim 14 , wherein the crash determination module includes instructions that are configured to cause the processor to: retrieve a supplemental code module name corresponding to a supplemental code module that has caused a most recent crash of the application; and determine whether the supplemental code module is provided by a third party.
19. The system of claim 14 , wherein the crash determination module includes instructions that are configured to cause the processor to: retrieve a current date and time associated with the execution of the application; record the current date and time for retrieval during a next execution of the application to determine whether the application crashed since its execution represented by the current date and time.
20. The system of claim 14 , comprising a hint module including instructions embedded in the non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to generate a hint for a supplemental code module when the supplemental code module is loaded into the application, the hint identifying a developer of the supplemental code module and a descriptive name for the supplemental code module.
21. The system of claim 14 , further comprising a second crash detection module including instructions embedded in the non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to detect the crash of the application during its last execution.
22. The system of claim 21 , comprising a crash cause decision module including instructions embedded in the non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to decide whether the third party supplemental code module was a cause of the crash of the application during its last execution.
23. The system of claim 21 , wherein the crash cause decision module includes instructions that are configured to cause the processor to: identify a recent frame in a plurality of frames, each of the frames representing an address of code executed by the application during its last execution; determine whether an address of the identified frame is within an address range of a code module in a plurality of code modules loaded by the application during its last execution; and determine whether an origin attribute of the code module indicates third party origin.
24. The system of claim 21 , wherein the crash cause decision module includes instructions that are configured to cause the processor to: obtain a plurality of frames, each of said frames representing an address of code executed by the application during the last execution; determine, for each of a predetermined number of frames of the plurality of frames, whether an address of a frame is within an address range of a code module of a plurality of code modules loaded by the application during the last execution, each of said code modules having an address range associated with a respective code module; determine whether an origin attribute of the code module indicates third party origin; and identify a code module having the most frames within its address range and the origin attribute of third party as the cause of the crash of the application during its last execution.
25. The system of claim 24 , comprising a supplemental code origin determination module including instructions embedded in the non-transitory machine readable medium for execution by the processor, the instructions, when executed, configured to cause the processor to: retrieve a descriptive attribute corresponding to an attribute type for the code module; retrieve a descriptive attribute for each of the application and an operating system of an attribute type that corresponds to the attribute type for the descriptive attribute for the code module; and set the origin attribute to third party origin based on a determination of whether the descriptive attribute of the code module does not match a descriptive attribute of the operating system and the descriptive attribute of the application.
26. A computer program product, implemented in a non-transitory machine readable medium storing instructions that, when executed by a processor, are configured to cause the processor to: determine that an application has crashed since its last execution because of execution of a third party supplemental code module; retrieve a supplemental code module name corresponding to the third party supplemental code module; retrieve a plurality of supplemental code module names corresponding to supplemental code modules that caused earlier crashes of the application; and check whether the name of the third party supplemental code module occurs a predetermined number of times in the plurality of supplemental code module names to determine a pattern of crashes caused by the third party supplemental code module; and selectively perform an action relative to the third party supplemental code module based on the checking, the action selected from the group consisting of uninstalling, disabling and loading the third party supplemental code module.
27. The computer program product of claim 26 , wherein the instructions that are configured to cause the processor to selectively perform the action includes instructions that are configured to cause the processor to: present a user interface to a user identifying the third party supplemental code module that was responsible for crashing the application; query the user as to a selection of one of uninstalling, disabling and loading of the third party supplemental code module in response to the identification of the third party supplemental code module; and receive the user's selection in response to the query.
28. The computer program product of claim 27 , wherein the instructions that are configured to cause the processor to present the user interface to the user identifying the third party supplemental code module include instructions that are configured to cause the processor to: present a suggestion on the user interface to contact the developer of the identified third party supplemental code module.
29. The computer program product of claim 26 , including instructions that are configured to cause the processor to generate a hint for a supplemental code module when the supplemental code module is loaded into the application, the hint identifying a developer of the supplemental code module and a descriptive name for the supplemental code module.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
August 9, 2011
May 7, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.