author | jiri.kralovec@oracle.com <jiri.kralovec@oracle.com> |
Fri, 07 Apr 2017 00:53:32 -0700 | |
changeset 7846 | eaed6d702f04 |
permissions | -rw-r--r-- |
7846
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
1 |
https://bugzilla.mozilla.org/show_bug.cgi?id=1232285 |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
2 |
https://bugzilla.mozilla.org/show_bug.cgi?id=1252382 |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
3 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
4 |
And a fix to 1232285, which introduced division of crashAfterMS |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
5 |
by PR_MillisecondsToInterval(1000). crashAfterMS has to be divided |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
6 |
by 1000 to get number of seconds. |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
7 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
8 |
--- a/toolkit/components/terminator/nsTerminator.cpp |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
9 |
+++ b/toolkit/components/terminator/nsTerminator.cpp |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
10 |
@@ -33,6 +33,12 @@ |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
11 |
#include "nsExceptionHandler.h" |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
12 |
#endif |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
13 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
14 |
+#if defined(XP_WIN) |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
15 |
+#include <windows.h> |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
16 |
+#else |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
17 |
+#include <unistd.h> |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
18 |
+#endif |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
19 |
+ |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
20 |
#include "mozilla/ArrayUtils.h" |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
21 |
#include "mozilla/Attributes.h" |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
22 |
#include "mozilla/DebugOnly.h" |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
23 |
@@ -53,9 +59,6 @@ |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
24 |
// forcefully. |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
25 |
#define ADDITIONAL_WAIT_BEFORE_CRASH_MS 3000 |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
26 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
27 |
-// One second, in ticks. |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
28 |
-#define TICK_DURATION 1000 |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
29 |
- |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
30 |
namespace mozilla { |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
31 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
32 |
namespace { |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
33 |
@@ -141,7 +144,11 @@ |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
34 |
// we have lost at most one second, which is much |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
35 |
// more reasonable. |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
36 |
// |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
37 |
- PR_Sleep(TICK_DURATION); |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
38 |
+#if defined(XP_WIN) |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
39 |
+ Sleep(1000 /* ms */); |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
40 |
+#else |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
41 |
+ usleep(1000000 /* usec */); |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
42 |
+#endif |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
43 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
44 |
if (gHeartbeat++ < timeToLive) { |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
45 |
continue; |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
46 |
@@ -378,7 +385,7 @@ |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
47 |
} |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
48 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
49 |
UniquePtr<Options> options(new Options()); |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
50 |
- options->crashAfterTicks = crashAfterMS / TICK_DURATION; |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
51 |
+ options->crashAfterTicks = crashAfterMS / 1000; |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
52 |
|
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
53 |
DebugOnly<PRThread*> watchdogThread = CreateSystemThread(RunWatchdog, |
eaed6d702f04
25556325 Firefox 45 sometimes generates core file on exit
jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
parents:
diff
changeset
|
54 |
options.release()); |