Confirmed users
35
edits
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=== |