Quality Feedback Agent: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
m (Category:General concepts)
(Intro: added "This article does not apply to TB 3 SM2 or Fx3 and above")
 
(43 intermediate revisions by 13 users not shown)
Line 1: Line 1:
[http://www.mozilla.org/quality/qfa.html Talkback] (aka Quality Feedback Agent) is a program that activates when Mozilla Suite, Firefox, or Thunderbird crashes. It lets you send stack traces and other development information to mozilla.org engineers.  This information helps developers make future versions of the software crash less.
:''This article does not apply to Thunderbird 3, SeaMonkey 2, or  Firefox 3 and above.  


==Installing==
The [http://www.mozilla.org/quality/qfa.html Quality Feedback Agent] (aka Talkback) activates when your Mozilla application crashes. It lets you send stack traces and other development information to mozilla.org engineers.  This information helps developers improve new versions of the software.
Talkback is usually bundled with Firefox/Thunderbird/Mozilla Suite. However to install it you may need to do a "Custom" installation and select "Quality Feedback Agent" component manually.


'''Q: How can I tell whether Talkback is installed?'''<br/>
Talkback is usually bundled with Firefox, Thunderbird and the discontinued Mozilla Suite.  It is not included in SeaMonkey 1.0 or later versions released to end-users, although it may be available in some "nightly" SeaMonkey test builds [http://groups.google.com/group/mozilla.support.seamonkey/browse_thread/thread/8f2fd59b3be0b1d7/57f9eba46d36a465] [http://groups.google.com/group/mozilla.support.seamonkey/browse_thread/thread/baebc0a12209f9fa/69d91d8297e7c712].
A: If you're using Firefox 1.0.x, look in the "components" subdirectory of the application directory. If you have "talkback.exe" file there, you almost certainly have Talkback installed. If you're using Firefox 1.5.x, look in Extension manager for an extension named Talkback.


'''Q: How can I get Talkback if it isn't already installed?'''<br/>
Note that, in Firefox 3, Thunderbird 3, and SeaMonkey 2, the [[Breakpad]] crash-reporting tool replaces the Quality Feedback Agent.
A: The best way to do this is to reinstall Firefox with Talkback. This is fairly easy and will not result in any bookmarks, history, preferences, etc. being lost, because those are stored in the [[profile folder]].  


'''Q: I have Talkback installed, but it doesn't appear to work!'''<br/>
{{Right-pic|Talkback-Firefox.png}}
A: Make sure you turned it on. The first time you crash, a window appears asking whether you want to turn the agent on or off. If you have chosen to turn it off, you still can turn Talkback back on by running it manually (the executable in "components" folder) and selecting "Settings -> Turn Agent on".


==How does mozilla.org use Talkback data?==
==Installing==
Talkback data is used in two ways:
To install the agent you may need to do a "Custom" installation and select "Quality Feedback Agent" component manually. If you installed  Firefox Thunderbird or Mozilla Suite without the Quality Feedback Agent, the best way to do install it would be is to reinstall your Mozilla application  (you won't lose your settings).
* Statistics are compiled based on the tops of the stack traces that all users submit.  Periodically, someone looks at these statistics and files bugs for the most frequent crashes, called "topcrashes".
* A stack trace, which can be extracted from a Talkback report, is an essential part of a bug report for any crash that is hard to reproduce. Stack traces often contain enough information about the causes of the crashes for developers to fix them even if they can't reproduce the crash based on your "sometimes crashes when..." report, steps to reproduce, or testcase.


==Stack traces==
==Getting an incident ID==
===What is a stack trace?===
Every time the application crashes and sends info on that crash to the Mozilla servers, it generates an incident ID. Incident IDs are listed in the agent user interface. The interface is not part of Firefox, Thunderbird or Mozilla Suite; it is a separate program. If you were asked by someone to supply an incident ID for a crash and then linked to this page, please follow these simple steps:
A stack trace is a function call stack, often helpful for understanding the cause of a bug. For a crash, it shows the function in which the crash occurred, what function called that function, etc.


===Once I submit a Talkback report, how can I get a stack trace?===
===Find out if the agent is installed===
Each report the Agent sends has its own Talkback ID, which you can see in Talkback's window. The ID looks like "TB4895329Q" and this is what you need to post to bugzilla when you're asked to post a talkback ID.
Open the Extension Manager in Firefox/Thunderbird 2 ("Tools -> Add-ons -> Extensions") or in Firefox/Thunderbird 1.5 ("Tools -> Extensions") and look for an entry named Talkback.  For other Mozilla products, look in the [[installation directory]].


However if you're curious, you can see the stack trace of your crash by entering your Talkback ID into [http://talkback-public.mozilla.org/talkback/fastfind.jsp Talkback FastFind].
===Find out where the agent is installed===
====Windows====
:{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #fcfcfc; border: 1px #aaa solid; border-collapse: collapse;"
! Program !! Location
|-
| Firefox || <tt>C:\Program Files\Mozilla Firefox\extensions\talkback@mozilla.org\components\talkback.exe</tt>
|-
| Thunderbird || <tt>C:\Program Files\Mozilla Thunderbird\extensions\talkback@mozilla.org\components\talkback.exe</tt>
|-
| Mozilla Suite || <tt>C:\Program Files\mozilla.org\Mozilla\components\talkback.exe</tt>
|}


===Can I submit Talkback reports for hangs?===
====Mac OSX====
While Talkback theoretically supports hang reports, I don't know how make it trigger for them.
:{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #fcfcfc; border: 1px #aaa solid; border-collapse: collapse;"
! Program !! Location
|-
| Firefox || <tt>/Applications/Firefox.app/Contents/MacOS/extensions/talkback@mozilla.org/components/talkback/Talkback.app</tt>
|-
| Thunderbird || <tt>/Applications/Thunderbird.app/Contents/MacOS/extensions/talkback@mozilla.org/components/talkback/Talkback.app</tt>
|-
| Mozilla Suite || <tt>/Applications/Mozilla.app/Contents/MacOS/components/Talkback.app</tt>
|}


timeless has written a program called [http://viper.haque.net/~timeless/crash/ crash.exe] that can be used to force Firefox to crash, but it makes Firefox crash in a new thread, so it doesn't create a useful stack trace for hangs.  A future version of crash.exe might let you specify a thread to crash, which could be used in combination with [http://www.sysinternals.com/ntw2k/freeware/procexp.shtml Sysinternals Process Explorer] to make the hanging thread crash.
====Linux====
Since in most cases the way that Linux users have installed their Mozilla product is by using a distro-specific package, Talkback is usually not installed. If you think that it might be installed, you can search for "talkback" and see if any results come up. "Typical" locations are as follows:


==Talkback and Bugzilla==
:{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #fcfcfc; border: 1px #aaa solid; border-collapse: collapse;"
===If I submit a crash report, should I still file a bug report in Bugzilla?===
! Program !! Location
Yes. Unless you file a bug, your crash report will only be used in statistics to find topcrashers.
|-
| Firefox || <tt>/usr/local/firefox/extensions/talkback@mozilla.org/components/talkback/talkback</tt>
|-
| Thunderbird || <tt>/usr/local/thunderbird/extensions/talkback@mozilla.org/components/talkback/talkback</tt>
|-
| SeaMonkey nightly builds (1.5a or earlier) || <tt>/usr/local/seamonkey/components/talkback/talkback</tt>
|}


===How can I submit a useful bug report for a crash?===
There are other ways to get crash data besides using Talkback. Some distros, such as Fedora, provide debug packages that will allow users to obtain a stack trace one these packages are installed. In fact, some crashes are caused by patches that distros have added to their own packages and are not even Mozilla's fault! One other, more involved way of getting a stack trace for a crash is [http://developer.mozilla.org/en/docs/Build_Documentation compiling a debug build] of whatever Mozilla product you're using and [[Getting a stacktrace with gdb|using gdb]].
Once you reproduced the crash, send the Talkback report, then copy the ID from the Talkback window. (On some platforms, you must run talkback.exe before you'll see the Talkback window.) Go to [http://talkback-public.mozilla.org/talkback/fastfind.jsp Talkback FastFind] and enter your ID. If everything works correctly, you'll get a page with report details.


Try to find existing bug reports about your crash. Search based on the signature (listed separately in the Talkback report, usually the name of the top function in the stack trace). For example, if the signature is <code>nsXPCWrappedJSClass::CheckForException</code>, search for "CheckForException". If you find a bug with a similar stack and similar steps to reproduce or URL, just vote for the bug. But don't assume two crash bugs are the same just because the crashes happen with the same function at the top of the stack.
If Talkback isn't where it should be, then you will need to [[Talkback#Installing|install it]].


When submitting your bug, you can include the Talkback ID in your bug report instead of the full stack trace. In your summary for the bug, include the name of the function. For example, "Crash [@ CSSStyleRuleImpl::DeclarationChanged] toggling visibility value via DOM Inspector".
===Opening the agent user interface===
{{Right-pic|Talkback-Firefox-UI.png}}
Run the application from the path you located above. The agent user interface window will open and will contain a list of all the incident IDs (eg: TB28659753Z) that were sent to Mozilla servers. On Windows and Mac OSX, you can select an ID, or multiple IDs and copy them to the clipboard using the Copy Selected ID(s) button, or by using the right-click context menu copy (on Mac OS X, simply selecting the build ID pressing Cmd-C also works). Unfortunately, on Linux a copy feature does not exist and one must write simply write out the ID(s).


It's also important to [http://www.mozilla.org/quality/help/pick-a-component-for-crashers.html pick the right component] for your crash.
====Enabling Talkback====
On a new install, Talkback may be installed, but not enabled. If so, then running the application will set it up for the first time.


If you can figure out easy steps to reproduce and create a small testcase, do so!
===No incident IDs listed===
There are a couple of possible reasons for this.
* The first time you crash, a window appears asking whether you want to turn the agent on or off. If you change your mind, you can change it under the Settings menu in the agent UI.
* You may be experiencing a hang rather than a crash. With crashes, the application will "disappear" immediately rather than stop responding. The agent can report only crashes, not hangs.
* If you are using a proxy server that requires authentication, the agent will not be able to send the reports to Mozilla's servers. Such authentication methods aren't supported yet. A workaround for username/password authenticating proxies on Windows is to set up [http://www.proxomitron.info/ the Proxomitron] to add the authentication information, and set the agent to use the Proxomitron as its proxy.
* If one or more listed incident(s) have their incident ID shown as "Unknown", it usually means that their incident data has been saved but not yet sent. Make sure you are connected to the Internet, then use the "Incidents => Send unsent" menu item to send the incident data and get an Incident ID for each such incident.


===Should I file the crash as a security-sensitive bug?===
==What data is sent==
Usually not. If the crash is just a denial of service (DoS), Mozilla's security group probably isn't interested.
Contained in the data sent is a stack trace (where in the code the crashed occured and how it got there), the version and operating system, how long the program ran before crashing, and any data that you fill out.


If the crash is in NSS or NSPR, it should be considered a security hole. These components are also used by some server software, so crashes in these components are considered security holes even if the most an attacker could do is cause a DoS.
==Uses of the data==
* Statistics are compiled on all the incidents. Periodically, someone looks at these statistics and files bugs for the most frequent types of crashes, called "[http://talkback-public.mozilla.org/ topcrashers]".
* Individual incidents can be looked up with [http://talkback-public.mozilla.org/search/start.jsp Talkback FastFind] to help users find immediate solutions to crashes.


If the top of the stack is a random memory address instead of a function name, that means Mozilla crashed when trying to jump to an incorrect address. If the attacker can control the address Mozilla jumps to, he can probably cause Mozilla to execute arbitrary machine code instead of crashing. Even if the address appears to be random, the attacker might be able to put enough copies of his code throughout memory with nop slides to exploit the crashIn addition to looking at the stack, you can inspect the C++ code by clicking the links in the Talkback report.
==External links==
* [http://support.mozilla.com/kb/Quality+Feedback+Agent Quality Feedback Agent (Firefox)]
* [http://wiki.mozilla.org/QA/Talkback/FAQ  Talkback FAQ]
* [http://www.mozilla.org/support/firefox/faq#talkback Firefox FAQ: What is Talkback?]
* [http://talkback-public.mozilla.org/search/start.jsp Talkback FastFind | QuickSearch | Reports]
* [http://www.mozilla.org/quality/help/pick-a-component-for-crashers.html Bug Triager's Guide: How to Pick a Component for Crashing Bugs]


If you file the bug as security-sensitive, say why you did, e.g. "I'm filing this crash bug as security-sensitive because it is in NSS and NSS maintainers consider DoSes to be security holes".


==More information==
* http://texturizer.net/firefox/faq.html#talkback
* [http://talkback-public.mozilla.org/talkback/fastfind.jsp Talkback FastFind]
* [http://www.mozilla.org/quality/help/pick-a-component-for-crashers.html How to Pick a Component for Crashing Bugs]


[[Category:Firefox]]
[[Category:Thunderbird]]
[[Category:Thunderbird]]
[[Category:Mozilla Suite]]
[[Category:Mozilla Suite]]
[[Category:General concepts]]
[[Category:Issues (Firefox)]]

Latest revision as of 20:38, 12 November 2009

This article does not apply to Thunderbird 3, SeaMonkey 2, or Firefox 3 and above.

The Quality Feedback Agent (aka Talkback) activates when your Mozilla application crashes. It lets you send stack traces and other development information to mozilla.org engineers. This information helps developers improve new versions of the software.

Talkback is usually bundled with Firefox, Thunderbird and the discontinued Mozilla Suite. It is not included in SeaMonkey 1.0 or later versions released to end-users, although it may be available in some "nightly" SeaMonkey test builds [1] [2].

Note that, in Firefox 3, Thunderbird 3, and SeaMonkey 2, the Breakpad crash-reporting tool replaces the Quality Feedback Agent.

Installing

To install the agent you may need to do a "Custom" installation and select "Quality Feedback Agent" component manually. If you installed Firefox Thunderbird or Mozilla Suite without the Quality Feedback Agent, the best way to do install it would be is to reinstall your Mozilla application (you won't lose your settings).

Getting an incident ID

Every time the application crashes and sends info on that crash to the Mozilla servers, it generates an incident ID. Incident IDs are listed in the agent user interface. The interface is not part of Firefox, Thunderbird or Mozilla Suite; it is a separate program. If you were asked by someone to supply an incident ID for a crash and then linked to this page, please follow these simple steps:

Find out if the agent is installed

Open the Extension Manager in Firefox/Thunderbird 2 ("Tools -> Add-ons -> Extensions") or in Firefox/Thunderbird 1.5 ("Tools -> Extensions") and look for an entry named Talkback. For other Mozilla products, look in the installation directory.

Find out where the agent is installed

Windows

Program Location
Firefox C:\Program Files\Mozilla Firefox\extensions\talkback@mozilla.org\components\talkback.exe
Thunderbird C:\Program Files\Mozilla Thunderbird\extensions\talkback@mozilla.org\components\talkback.exe
Mozilla Suite C:\Program Files\mozilla.org\Mozilla\components\talkback.exe

Mac OSX

Program Location
Firefox /Applications/Firefox.app/Contents/MacOS/extensions/talkback@mozilla.org/components/talkback/Talkback.app
Thunderbird /Applications/Thunderbird.app/Contents/MacOS/extensions/talkback@mozilla.org/components/talkback/Talkback.app
Mozilla Suite /Applications/Mozilla.app/Contents/MacOS/components/Talkback.app

Linux

Since in most cases the way that Linux users have installed their Mozilla product is by using a distro-specific package, Talkback is usually not installed. If you think that it might be installed, you can search for "talkback" and see if any results come up. "Typical" locations are as follows:

Program Location
Firefox /usr/local/firefox/extensions/talkback@mozilla.org/components/talkback/talkback
Thunderbird /usr/local/thunderbird/extensions/talkback@mozilla.org/components/talkback/talkback
SeaMonkey nightly builds (1.5a or earlier) /usr/local/seamonkey/components/talkback/talkback

There are other ways to get crash data besides using Talkback. Some distros, such as Fedora, provide debug packages that will allow users to obtain a stack trace one these packages are installed. In fact, some crashes are caused by patches that distros have added to their own packages and are not even Mozilla's fault! One other, more involved way of getting a stack trace for a crash is compiling a debug build of whatever Mozilla product you're using and using gdb.

If Talkback isn't where it should be, then you will need to install it.

Opening the agent user interface

Run the application from the path you located above. The agent user interface window will open and will contain a list of all the incident IDs (eg: TB28659753Z) that were sent to Mozilla servers. On Windows and Mac OSX, you can select an ID, or multiple IDs and copy them to the clipboard using the Copy Selected ID(s) button, or by using the right-click context menu copy (on Mac OS X, simply selecting the build ID pressing Cmd-C also works). Unfortunately, on Linux a copy feature does not exist and one must write simply write out the ID(s).

Enabling Talkback

On a new install, Talkback may be installed, but not enabled. If so, then running the application will set it up for the first time.

No incident IDs listed

There are a couple of possible reasons for this.

  • The first time you crash, a window appears asking whether you want to turn the agent on or off. If you change your mind, you can change it under the Settings menu in the agent UI.
  • You may be experiencing a hang rather than a crash. With crashes, the application will "disappear" immediately rather than stop responding. The agent can report only crashes, not hangs.
  • If you are using a proxy server that requires authentication, the agent will not be able to send the reports to Mozilla's servers. Such authentication methods aren't supported yet. A workaround for username/password authenticating proxies on Windows is to set up the Proxomitron to add the authentication information, and set the agent to use the Proxomitron as its proxy.
  • If one or more listed incident(s) have their incident ID shown as "Unknown", it usually means that their incident data has been saved but not yet sent. Make sure you are connected to the Internet, then use the "Incidents => Send unsent" menu item to send the incident data and get an Incident ID for each such incident.

What data is sent

Contained in the data sent is a stack trace (where in the code the crashed occured and how it got there), the version and operating system, how long the program ran before crashing, and any data that you fill out.

Uses of the data

  • Statistics are compiled on all the incidents. Periodically, someone looks at these statistics and files bugs for the most frequent types of crashes, called "topcrashers".
  • Individual incidents can be looked up with Talkback FastFind to help users find immediate solutions to crashes.

External links