QA/Automation/Projects/WebRTC/Crashtest Guide: Difference between revisions

Line 107: Line 107:
Here we have two possibilities: If the testcase crashes the browser, then we can retrieve the callstack from about:crashes in the browser. In this case, follow to the next subheading “Compare the callstack”. It needs to crash, a frozen screen like in our case is no good.
Here we have two possibilities: If the testcase crashes the browser, then we can retrieve the callstack from about:crashes in the browser. In this case, follow to the next subheading “Compare the callstack”. It needs to crash, a frozen screen like in our case is no good.


SIDE NOTE:
{| border="1" cellpadding="5"
Please make sure that media.navigator.enabled and media.peerconnection.enabled in about:config is set to true before testing for the crash. If these are not enabled, nothing will happen.
|'''SIDE NOTE:'''<br>
 
Please make sure that ''media.navigator.enabled'' and ''media.peerconnection.enabled'' in ''about:config'' is set to '''true''' before testing for the crash. If these are not enabled, nothing will happen.
|}
<br>
If this, however, fails the next option is to start firefox using gdb (for more information, please consult the following webpage: https://developer.mozilla.org/en-US/docs/Debugging_Mozilla_with_gdb ).  
If this, however, fails the next option is to start firefox using gdb (for more information, please consult the following webpage: https://developer.mozilla.org/en-US/docs/Debugging_Mozilla_with_gdb ).  


Therefore from the command line call:
Therefore from the command line call:


---------------------
    gdb %path_to_firefox%
gdb %path_to_firefox%
---------------------


and once you see the prompt, type:
and once you see the prompt, type:


------------------
    r -p %profilename%
r -p %profilename%
------------------


SIDE NOTE:
{| border="1" cellpadding="5"
If you don't know your profile name, call ./firefox with the -ProfileManager flag, to see the available profiles, i.e. ./firefox -ProfileManager.
|'''SIDE NOTE:'''<br>
If you don't know your profile name, call ''./firefox'' with the ''-ProfileManager'' flag, to see the available profiles, i.e. ''./firefox -ProfileManager''.
|}
<br>


Once the browser becomes unresponsive or crashes, check the output in the gdb prompt and look for an exception. In our case, you would see something like this:
Once the browser becomes unresponsive or crashes, check the output in the gdb prompt and look for an exception. In our case, you would see something like this:


-----------------------------------------------------------------------------------------------------------------------------------------
Assertion failure: i < Length() (invalid array index), at ../../dist/include/nsTArray.h:538  
Assertion failure: i < Length() (invalid array index), at ../../dist/include/nsTArray.h:538  


Program received signal SIGSEGV, Segmentation fault.  
    Program received signal SIGSEGV, Segmentation fault.  
[Switching to Thread 0x7fffc76fe700 (LWP 15827)]  
    [Switching to Thread 0x7fffc76fe700 (LWP 15827)]  
0x00007ffff16d5420 in nsTArray<nsRefPtr<mozilla::MediaEngineAudioSource>, nsTArrayDefaultAllocator>::ElementAt (this=0x7fffd03ad850, i=0)  
    0x00007ffff16d5420 in nsTArray<nsRefPtr<mozilla::MediaEngineAudioSource>, nsTArrayDefaultAllocator>::ElementAt (this=0x7fffd03ad850, i=0)  
     at ../../dist/include/nsTArray.h:538  
     at ../../dist/include/nsTArray.h:538  
538     MOZ_ASSERT(i < Length(), "invalid array index");  
    538     MOZ_ASSERT(i < Length(), "invalid array index");  
-----------------------------------------------------------------------------------------------------------------------------------------


At this point, the gdb prompt should reappear. Now type
At this point, the gdb prompt should reappear. Now type


--
    bt
bt
--


and observe the output. This leads us then to the next section.
and observe the output. This leads us then to the next section.
<br>


===Compare the output of the crash to the callstack given in the bug===
===Compare the output of the crash to the callstack given in the bug===
Confirmed users
35

edits