IP Library Granted Patent US 9,940,579
Granted Patent B2
US 9,940,579 · App. 15/005,777 · Granted Apr 10, 2018

Methods and systems for automated tagging based on software execution traces

Inventors: Xinruo Sun (Beijing, CN); Tianpeng Jin (Beijing, CN)
Assignee: Google LLC
G06N5/02G06F11/3636G06F8/75G06F11/3409G06F11/3466G06F11/3688
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,940,579
App. No.
15/005,777
Filed
Jan 25, 2016
Granted
Apr 10, 2018
Kind
B2
Examiner
WANG, BEN C
Art Unit
2192
USPC
717/128
Abstract

Systems and methods for analysis of execution patterns for applications executing on remote devices. In some implementations of the system, a knowledge base stores successful traces from a plurality of instances of an application and one or more computing processors in the system receive, via a network interface, call-stack information from an instance of the application executing on a remote device, call-stack information including periodic captures of an execution status for the instance of the application, and determine whether there is a similarity between the call-stack information received from the instance of the application and the stored plurality of successful traces. Responsive to determining a similarity, the computing processors add the remote device to a population of devices likely to execute the object and facilitate further actions specific to the device population.

Claims (44)

1. A method comprising:

receiving, from a first instance of an application executing on a first remote device, one or more units of call-stack information, the call-stack information including periodic captures of an execution status for the first instance of the application;

receiving, from the first instance of the application, an indicator that the first instance of the application has successfully executed an objective;

aggregating the received units of call-stack information leading up to the successfully executed objective as a successful trace;

collecting a plurality of successful traces from a plurality of instances of the application executing on a plurality of remote devices;

receiving, from a second instance of the application executing on a second remote device, one or more units of call-stack information, the call-stack information including periodic captures of an execution status for the second instance of the application;

determining a similarity between the call-stack information received from the second instance of the application and the plurality of successful traces;

adding the second remote device to a list of devices corresponding to the objective;

wherein the objective is at least one of: (i) user interaction with selected content (ii) and continued user engagement with an application.

2. The method of claim 1 , comprising filtering the call-stack information using a set of rules to exclude call-stack information common to all instances of the application.

3. The method of claim 2 , comprising updating the set of rules based on the collected plurality of successful traces.

4. The method of claim 2 , comprising updating the set of rules based call-stack traces where the objective has not been executed.

5. The method of claim 1 , comprising receiving the call-stack information from a library linked to the application.

6. The method of claim 1 , wherein a unit of call-stack information includes multiple call-stack captures batched together.

7. The method of claim 1 , wherein the periodicity of call-stack captures is between one per second and one per minute.

8. The method of claim 1 , wherein determining a similarity between the call-stack information received from the second instance of the application and the plurality of successful traces comprises using a clustering algorithm to determine that the call-stack information received from the second instance of the application belongs to a cluster of successful traces.

9. The method of claim 1 , wherein the objective is a purchase event.

10. A system comprising:

a knowledge base storing a collected plurality of successful traces from a plurality of instances of an application executing on a plurality of remote devices;

a network interface; and

a computer processor configured to:

receive, via the network interface from a first instance of the application executing on a first remote device, one or more units of call-stack information, the call-stack information including periodic captures of an execution status for the first instance of the application;

receive, from the first instance of the application, an indicator that the first instance of the application has successfully executed a predefined set of one or more function calls;

aggregate, responsive to receiving the indicator, the received units of call-stack information leading up to the successfully executed predefined set of one or more function calls as a successful trace and store the successful trace in the knowledge base;

receive, from a second instance of the application executing on a second remote device, one or more units of call-stack information, the call-stack information including periodic captures of an execution status for the second instance of the application;

determine a similarity between the call-stack information received from the second instance of the application and the plurality of successful traces; and

add, responsive to determining the similarity, the second remote device to a list of devices corresponding to the predefined set of one or more function calls.

11. The system of claim 10 , further comprising a filter configured to use a set of rules to exclude, from each received unit of call-stack information, information that is common to all instances of the application.

12. The system of claim 11 , wherein the computer processor is configured to update the set of rules based on the collected plurality of successful traces.

13. The system of claim 11 , wherein the computer processor is configured to update the set of rules based on call-stack traces where the predefined set of one or more function calls has not been executed.

14. The system of claim 10 , wherein the call-stack information is received from a library linked to the application.

15. The system of claim 10 , wherein a unit of call-stack information includes multiple call-stack captures batched together.

16. The system of claim 10 , wherein the periodicity of call-stack captures is between one per second and one per minute.

17. The system of claim 10 , wherein determining a similarity between the call-stack information received from the second instance of the application and the plurality of successful traces comprises using a clustering algorithm to determine that the call-stack information received from the second instance of the application belongs to a cluster of successful traces.

18. The system of claim 10 , wherein the predefined set of one or more function calls correspond to a purchase event.

19. A non-transitory computer-readable medium storing instructions that, when executed by one or more computing processors, cause the one or more computing processors to:

receive, from a first instance of an application executing on a first remote device, one or more units of call-stack information, the call-stack information including periodic captures of an execution status for the first instance of the application;

receive, from the first instance of the application, an indicator that the first instance of the application has successfully executed an objective;

aggregate, responsive to receiving the indicator, the received units of call-stack information leading up to the successfully executed objective as a successful trace and store the successful trace in a knowledge base storing a collected plurality of successful traces from a plurality of instances of an application executing on a plurality of remote devices;

receive, from a second instance of the application executing on a second remote device, one or more units of call-stack information, the call-stack information including periodic captures of an execution status for the second instance of the application;

determine a similarity between the call-stack information received from the second instance of the application and the plurality of successful traces; and

add, responsive to determining the similarity, the second remote device to a list of devices corresponding to the objective;

wherein the objective is a purchase event.

20. The non-transitory computer-readable medium of claim 19 , storing instructions that, when executed by one or more computing processors, cause the one or more computing processors to filter the call-stack information using a set of rules to exclude call-stack information common to all instances of the application.

Assignments (2)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2016
From: JIN, TIANPENG; SUN, XINRUO
To: GOOGLE INC.
Reel/Frame 037619/0128 →
Continuity (2)
Continuation PCTCN2014089468 · Oct 24, 2014
Related Publication 20160140031A1 · May 19, 2016