Граф коммитов

124 Коммитов

Автор SHA1 Сообщение Дата
Nika Layzell 96a0de728a Bug 1570725 - Show type of assertion in crashreporter MozCrashReason, r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D40240

--HG--
extra : moz-landing-system : lando
2019-08-06 20:33:34 +00:00
Andi-Bogdan Postelnicu 879d5c9a34 Bug 1553037 - clang-based disable static-analysis in `MOZ_REALLY_CRASH`. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D32132

--HG--
extra : moz-landing-system : lando
2019-05-22 12:50:43 +00:00
shindli 45ec6114d3 Merge mozilla-central to autoland. a=merge CLOSED TREE 2019-04-06 00:51:18 +03:00
David Major bd688314c9 Bug 1536675 - Inline MOZ_Crash even in debug builds r=froydnj
We want MOZ_Crash frames to stay out of Taskcluster logs even on debug builds. Perhaps you could say, _especially_ on debug builds.

Differential Revision: https://phabricator.services.mozilla.com/D26352

--HG--
extra : moz-landing-system : lando
2019-04-05 19:25:55 +00:00
Jan Varga 8651b25d09 Bug 1542154 - Add MOZ_DIAGNOSTIC_ALWAYS_TRUE; r=froydnj 2019-04-05 16:44:49 +02:00
Daniel Varga f89113118b Merge mozilla-central to mozilla-inbound. a=merge 2019-04-03 09:18:15 +03:00
David Major c7531ea325 Bug 1536675 - Take the crashing out of MOZ_CrashPrintf r=froydnj
It would be helpful if MOZ_CRASH_UNSAFE_PRINTF would do its crashing inline at the caller, so that CI failure logs can blame the right code.

Before this patch, MOZ_CRASH_UNSAFE_PRINTF calls MOZ_CrashPrintf, which does the printf work and crashes.

This patch pulls out the crashing piece at the end, so that MOZ_CrashPrintf only does the printf work, and returns the string to the caller, who will MOZ_Crash inline.

Differential Revision: https://phabricator.services.mozilla.com/D25329

--HG--
extra : moz-landing-system : lando
2019-04-02 19:20:41 +00:00
Jan Varga 270308cb07 Bug 1540577 - Add MOZ_DIAGNOSTIC_ASSERT_IF; r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D25548
2019-04-01 01:17:07 +02:00
Chris Peterson 8e1848413c Bug 1507049 - Rename MOZ_CRASH_UNSAFE_OOL MOZ_CRASH_UNSAFE. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D18515

--HG--
extra : rebase_source : e8ef6eec0f7542bb381e2da81ae6431b2828aabc
extra : source : a8c262b4a2579e6def1b3a5a8220f5197b443e34
2019-02-03 00:09:37 -08:00
Chris Peterson cedea8a566 Bug 1507049 - Rename MOZ_CrashOOL MOZ_Crash. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D18513

--HG--
extra : rebase_source : 00910ccc380f24a12181fef2a72d84c1170cb9fe
extra : source : d39e75533e61b315c9ee0000ea74eca3bf474f58
2019-02-03 00:00:12 -08:00
Ehsan Akhgari e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Mike Hommey 1c6d1f8586 Bug 1496503 - Change the rust panic hook to delegate to Gecko's crash code. r=froydnj
The current rust panic hook keeps a string for the crash reporter, and
goes on calling the default rust panic hook, which prints out a crash
stack...  when RUST_BOOTSTRAP is set *and* when that works. Notably, on
both mac and Windows, it only really works for local builds, but fails
for debug builds from automation, although on automation itself, we also
do stackwalk from crash minidumps, which alleviates the problem.
Artifact debug builds are affected, though.

More importantly, C++ calls to e.g. MOZ_CRASH have a similar but
different behavior, in that they dump a stack trace on debug builds, by
default (with exceptions, see below for one). The format of those stack
traces is understood by the various fix*stack*py scripts under
tools/rb/, that are used by the various test harnesses both on
automation and locally.

Additionally, the current rust panic hook, as it calls the default rust
panic hook, ends up calling abort() on non-Windows platforms, which ends
up being verbosely redirected to mozalloc_abort per
https://dxr.mozilla.org/mozilla-central/rev/237e4c0633fda8e227b2ab3ab57e417c980a2811/memory/mozalloc/mozalloc_abort.cpp#79
which then calls MOZ_CRASH. Theoretically, /that/ would also print a
stack trace, but doesn't because currently the stack trace printing code
lives in libxul, and MOZ_CRASH only calls it when compiled from
libxul-code, which mozalloc_abort is not part of.

With this change, we make the rust panic handler call back into
MOZ_CRASH directly. This has multiple advantages:
- This is more consistent cross-platforms (Windows is not special
anymore).
- This is more consistent between C++ and rust (stack traces all look
the same, and can all be post-processed by fix*stack*py if need be)
- This is more consistent in behavior, where debug builds will show
those stack traces without caring about environment variables.
- It demangles C++ symbols in rust-initiated stack traces (for some
reason that didn't happen with the rust panic handler)

A few downsides:
- the loss of demangling for some rust symbols.
- the loss of addresses in the stacks, although they're not entirely
useful
- extra empty lines.

The first should be fixable later one. The latter two are arguably
something that should be consistent across C++ and rust, and should be
changed if necessary, independently of this patch.

Depends on D11719

Depends on D11719

Differential Revision: https://phabricator.services.mozilla.com/D11720

--HG--
extra : moz-landing-system : lando
2018-11-14 22:35:33 +00:00
Mike Hommey b60c5c12e4 Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj
Ideally, we'd want the function to stay in Assertions.cpp, but that's
only part of MFBT proper, and that doesn't have access to WalkTheStack
like MOZ_CRASH has from being in Assertion.h, when included from Gecko
code. Moving WalkTheStack to mozglue, putting it close together with
MozStackWalk would be prefered, but that causes problems linking MFBT
tests (which don't have access to mozglue), and other things.

Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to
Assertions.h is much simpler. Since it's essentially the same as
MOZ_CRASH, except it allows non-literal strings, we can make it inlined,
and leave it to the compiler to drop the filename argument when it's not
used.

Differential Revision: https://phabricator.services.mozilla.com/D11718

--HG--
extra : moz-landing-system : lando
2018-11-14 22:35:23 +00:00
Dorel Luca 00c7bf05f9 Backed out 4 changesets (bug 1496503) for Valgrind bustage. CLOSED TREE
Backed out changeset 033a89b3e00d (bug 1496503)
Backed out changeset a0f255b660ce (bug 1496503)
Backed out changeset 963d8ac1cfee (bug 1496503)
Backed out changeset 43e44f8439ec (bug 1496503)
2018-11-14 19:00:29 +02:00
Mike Hommey 6345b0d7d9 Bug 1496503 - Change the rust panic hook to delegate to Gecko's crash code. r=froydnj
The current rust panic hook keeps a string for the crash reporter, and
goes on calling the default rust panic hook, which prints out a crash
stack...  when RUST_BOOTSTRAP is set *and* when that works. Notably, on
both mac and Windows, it only really works for local builds, but fails
for debug builds from automation, although on automation itself, we also
do stackwalk from crash minidumps, which alleviates the problem.
Artifact debug builds are affected, though.

More importantly, C++ calls to e.g. MOZ_CRASH have a similar but
different behavior, in that they dump a stack trace on debug builds, by
default (with exceptions, see below for one). The format of those stack
traces is understood by the various fix*stack*py scripts under
tools/rb/, that are used by the various test harnesses both on
automation and locally.

Additionally, the current rust panic hook, as it calls the default rust
panic hook, ends up calling abort() on non-Windows platforms, which ends
up being verbosely redirected to mozalloc_abort per
https://dxr.mozilla.org/mozilla-central/rev/237e4c0633fda8e227b2ab3ab57e417c980a2811/memory/mozalloc/mozalloc_abort.cpp#79
which then calls MOZ_CRASH. Theoretically, /that/ would also print a
stack trace, but doesn't because currently the stack trace printing code
lives in libxul, and MOZ_CRASH only calls it when compiled from
libxul-code, which mozalloc_abort is not part of.

With this change, we make the rust panic handler call back into
MOZ_CRASH directly. This has multiple advantages:
- This is more consistent cross-platforms (Windows is not special
anymore).
- This is more consistent between C++ and rust (stack traces all look
the same, and can all be post-processed by fix*stack*py if need be)
- This is more consistent in behavior, where debug builds will show
those stack traces without caring about environment variables.
- It demangles C++ symbols in rust-initiated stack traces (for some
reason that didn't happen with the rust panic handler)

A few downsides:
- the loss of demangling for some rust symbols.
- the loss of addresses in the stacks, although they're not entirely
useful
- extra empty lines.

The first should be fixable later one. The latter two are arguably
something that should be consistent across C++ and rust, and should be
changed if necessary, independently of this patch.

Depends on D11719

Differential Revision: https://phabricator.services.mozilla.com/D11720

--HG--
extra : moz-landing-system : lando
2018-11-14 08:46:51 +00:00
Mike Hommey 9ccfce71d6 Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj
Ideally, we'd want the function to stay in Assertions.cpp, but that's
only part of MFBT proper, and that doesn't have access to WalkTheStack
like MOZ_CRASH has from being in Assertion.h, when included from Gecko
code. Moving WalkTheStack to mozglue, putting it close together with
MozStackWalk would be prefered, but that causes problems linking MFBT
tests (which don't have access to mozglue), and other things.

Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to
Assertions.h is much simpler. Since it's essentially the same as
MOZ_CRASH, except it allows non-literal strings, we can make it inlined,
and leave it to the compiler to drop the filename argument when it's not
used.

Differential Revision: https://phabricator.services.mozilla.com/D11718

--HG--
extra : moz-landing-system : lando
2018-11-14 08:47:44 +00:00
Coroiu Cristina d0047119b0 Backed out 4 changesets (bug 1496503) for xpcshell failures at toolkit/crashreporter/test/unit/test_crash_rust_panic.js on a CLOSED TREE
Backed out changeset cfeee3d5ed6a (bug 1496503)
Backed out changeset 164a5a49fd25 (bug 1496503)
Backed out changeset d0b6c1fc149d (bug 1496503)
Backed out changeset bfb4ee856c71 (bug 1496503)
2018-11-14 09:00:06 +02:00
Mike Hommey 5934f74cf3 Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj
Ideally, we'd want the function to stay in Assertions.cpp, but that's
only part of MFBT proper, and that doesn't have access to WalkTheStack
like MOZ_CRASH has from being in Assertion.h, when included from Gecko
code. Moving WalkTheStack to mozglue, putting it close together with
MozStackWalk would be prefered, but that causes problems linking MFBT
tests (which don't have access to mozglue), and other things.

Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to
Assertions.h is much simpler. Since it's essentially the same as
MOZ_CRASH, except it allows non-literal strings, we can make it inlined,
and leave it to the compiler to drop the filename argument when it's not
used.

Differential Revision: https://phabricator.services.mozilla.com/D11718

--HG--
extra : moz-landing-system : lando
2018-11-13 23:47:36 +00:00
twsmith ca53c9933c Bug 1494207 - Add MOZ_CRASH_WRITE_ADDR to avoid ILL with UBSan. r=nfroyd 2018-10-04 14:52:16 -07:00
Sylvestre Ledru 99f0e1b624 Bug 1447480 - Add support of MOZ_FALLTHROUGH_ASSERT without any argument r=hsivonen
MozReview-Commit-ID: 6xrdrggcVFR

--HG--
extra : rebase_source : f53d9a62e828d65469c42c79a468b5bea2e8b645
2018-04-05 11:42:23 +02:00
Tiberius Oros 1d7575065c Backed out 2 changesets (bug 1447480) for build bustages at dist/include/mozilla/Assertions.h:60 a=backout on a CLOSED TREE
Backed out changeset 5dfbd42ce515 (bug 1447480)
Backed out changeset a454ed4489f2 (bug 1447480)
2018-04-05 13:36:46 +03:00
Sylvestre Ledru e432341510 Bug 1447480 - Add support of MOZ_FALLTHROUGH_ASSERT without any argument r=hsivonen
MozReview-Commit-ID: 6xrdrggcVFR

--HG--
extra : rebase_source : 0f3b30d0e48e402bbc6365dcb25146dffeb8ad97
2018-04-05 11:42:23 +02:00
Sylvestre Ledru b7b13979a7 Bug 1370794 - Use bool instead of integer being casted to bool r=Ehsan
MozReview-Commit-ID: lUVFeU0Y0p

--HG--
extra : rebase_source : c2dac9c0e0345111f68aea2b9e359ad94086430d
2018-02-07 15:15:28 +01:00
Tom Ritter 41a1a6c9b0 Bug 1433971 Clean up Assertions.h with respect to Unused Attributes r=froydnj
In Bug 1393538 I renamed MOZ_STATIC_ASSERT_UNUSED_ATTRIBUTE to MOZ_UNUSED_ATTRIBUTE,
moved it out of it's #define depth, and used it in toolkit. I also orphaned a
comment.

This was wrong. MOZ_UNUSED_ATTRIBUTE was basically identical to MOZ_MAYBE_UNUSED
which exists in Attributes.h (because it is an attribute, not an assertion.)

Undo that wrong thing: restore MOZ_STATIC_ASSERT_UNUSED_ATTRIBUTE to the correct
place, have toolkit use the correct macro, and remove MOZ_UNUSED_ATTRIBUTE.

MozReview-Commit-ID: 5BWWsXgbm9i

--HG--
extra : rebase_source : d07156068c877bf57d400bc6a71e115b7f1aef31
2018-01-29 11:36:19 -06:00
David Major b0f6b50b37 Bug 1422372: Mark MOZ_NoReturn as MOZ_MAYBE_UNUSED. r=Waldo 2018-01-30 14:15:51 +13:00
Sylvestre Ledru d60d69e2cb Bug 1411001 - Remove the +x permissions on cpp & h files r=froydnj
MozReview-Commit-ID: DjDkL20wRg0

--HG--
extra : rebase_source : a343d83d1f4e97e4ba56d0f57fec93079df0b5ea
2017-10-23 20:59:55 +02:00
Tom Ritter 8dbe002119 Bug 1393538 Clean up unused variables in toolkit/ r=smaug
MozReview-Commit-ID: I6r50dqJJHJ

--HG--
extra : rebase_source : f1f773db8f0ec44c1cf6f194973f870b08f6138b
2017-08-24 15:07:59 -05:00
Benjamin Smedberg c2b9935278 Bug 1379254 - Add a @note to the documentation of MOZ_CRASH_UNSAFE_* to make clear data collection risk and requirements, r=erahm
MozReview-Commit-ID: KssgssWHTUX

--HG--
extra : rebase_source : 1daa52ebe00e594534f06463e45f98e50ab8a49a
2017-07-07 14:44:26 -04:00
Mike Hommey 05a36a133a Bug 1369622 - Add a static_assert when no variadic argument is given to MOZ_CRASH_UNSAFE_PRINTF. r=froydnj
If MOZ_CRASH_UNSAFE_PRINTF is only given a format string, it means
either arguments are missing, or MOZ_CRASH should be used instead.
Hint at that with a static_assert.

--HG--
extra : rebase_source : 355c37deb8b007e61939a4c657e411d110e7bbe7
2017-06-02 15:11:47 +09:00
Mike Hommey 8914ace4ce Bug 1369622 - Use MOZ_ARG_COUNT instead of MOZ_PASTE_PREFIX_AND_ARG_COUNT. r=froydnj
In a couple places, MOZ_PASTE_PREFIX_AND_ARG_COUNT is used to only count
the number of arguments, we can now use MOZ_ARG_COUNT directly for that.

--HG--
extra : rebase_source : 1064e4cc231863dc4aff83ee6bc90d318b4be418
2017-06-02 15:06:34 +09:00
Sylvestre Ledru e3c965eb6f Bug 1368079 - Enable the diagnostic assert when MOZ_DEV_EDITION is set r=froydnj,glandium
MozReview-Commit-ID: Dxi5jTGcrow

--HG--
extra : rebase_source : 959956094e6e64a50e307e48b11bb8791940d297
2017-06-05 23:47:02 +02:00
Mike Hommey c1becb4a54 Bug 1368932 - Allow MOZ_PASTE_PREFIX_AND_ARG_COUNT to work with 0 arguments. r=froydnj
At the same time, remove the MOZ_STATIC_ASSERT_VALID_ARG_COUNT, which
doesn't actually work for more than 50 arguments(*), and which is now not
useful to detect 0 arguments.

(*) the build fails, but not directly thanks to the static_assert it
expands to.

--HG--
extra : rebase_source : 8f0fe7b352c89b5a3ec87f42ef5464c370c362ef
2017-05-25 15:47:21 +09:00
Phil Ringnalda 18c2e05936 Backed out changeset df0ddb9c9bef (bug 1368079) for making DevEdition fail to build
MozReview-Commit-ID: BUE6UL0WiDW
2017-05-30 23:10:48 -07:00
Sylvestre Ledru 6ef28ca31d Bug 1368079 - Enable the diagnostic assert when MOZ_DEV_EDITION is set r=glandium
MozReview-Commit-ID: 1f6Kwne6zYf

--HG--
extra : rebase_source : 14f3697fe4ad7dcd356fdc1424ffc62f4ea9897b
2017-05-30 09:26:02 +02:00
Mike Hommey c59dbe56d2 Bug 1365460 - Define MOZ_DIAGNOSTIC_ASSERT_ENABLED when MOZ_DIAGNOSTIC_ASSERT does something. r=froydnj
--HG--
extra : rebase_source : 557203426da1804504588198e0f8bccb3232858e
2017-05-18 11:14:17 +09:00
Carsten "Tomcat" Book 824aad1190 Backed out changeset 19ea645f562e (bug 1357799) on request 2017-04-27 15:09:53 +02:00
Sylvestre Ledru 612d9ada4d Bug 1357799 - Enable the diagnostic assert during the beta staged roll out period r=bholley
MozReview-Commit-ID: KstUhJH0bAz

--HG--
extra : rebase_source : 799023c9a69b0fea86b0204efffe12b560baa6e3
2017-04-19 18:07:04 +02:00
Emanuel Hoogeveen 9c7c14c872 Bug 1338574 - Part 1: Add MOZ_CRASH_UNSAFE_OOL and MOZ_CRASH_UNSAFE_PRINTF to crash with a runtime generated explanation string. r=froydnj
--HG--
extra : rebase_source : 3ba633aa77ab96f763ea03a8308c539c9c2aeda0
2017-02-21 18:01:41 +01:00
Emanuel Hoogeveen 4308a12546 Bug 1338574 - Part 0: Pass __LINE__ as an argument to MOZ_REALLY_CRASH() instead of using it directly. r=froydnj
--HG--
extra : rebase_source : 1df7776a4627c4af417be78649ba22203dca8026
2017-02-21 18:01:38 +01:00
David Major e46dbc2c0f Bug 1324093 - Part 4: Make MOZ_Report{Crash,AssertionFailure} be MOZ_NEVER_INLINE. r=froydnj
You'd think that this would throw off the assertion stacks in nsTraceRefcnt::WalkTheStack. But as far as I can tell, it was already setting |skipFrames| too high!

On top of that, the function was getting out-of-lined in some instances already. It really should have been MOZ_ALWAYS_INLINE_EVEN_DEBUG.

MozReview-Commit-ID: J2FZmi0pKro

--HG--
extra : rebase_source : 20e5be9f8c21637a28435f47b8ab2de101825679
2017-01-18 09:37:54 +13:00
David Major 2166409a1d Bug 1324093 - Part 3: Don't MOZ_ReportAssertionFailure in non-debug builds. r=froydnj f=Waldo f=nbp
Not only does this trim the code, it also makes MOZ_RELEASE_ASSERT follow the advice of MOZ_CRASH earlier in the file:

 * If we're a DEBUG build and we crash at a MOZ_CRASH which provides an
 * explanation-string, we print the string to stderr.  Otherwise, we don't
 * print anything; this is because we want MOZ_CRASH to be 100% safe in release
 * builds, and it's hard to print to stderr safely when memory might have been
 * corrupted.

MozReview-Commit-ID: Kuxzn1v9Vfs

--HG--
extra : rebase_source : 5c6efe7cb9adb1c366b423d6ff8f95002512985c
2017-01-18 09:37:46 +13:00
David Major 77329182eb Bug 1324093 - Part 2: Don't AnnotateMozCrashReason on debug builds. r=bsmedberg
I left gMozCrashReason visible (but not meaningfully used) in all builds, in order to match the behavior of Assertions.cpp, and to avoid more #ifdef clutter in nsExceptionHandler.cpp.

MozReview-Commit-ID: smoFkddGzd

--HG--
extra : rebase_source : 498f927f62fc944edf254c2ff3b115131367a506
2017-01-18 09:34:02 +13:00
David Major dd8c1f9d4e Bug 1324093 - Part 1: Move MOZ_REALLY_CRASH's null-deref and TerminateProcess into a never-inline function. r=froydnj
The C versus C++ distinction was only there so that Android could make sure it used the global ::abort. I didn't see the need to maintain the distinction for Windows. (Besides, with this change we're no longer doing textual inclusion of "TerminateProcess" in the macro, so people can't take over the name.)

Linux's abort sequence wasn't long enough to be troublesome, so I left it alone.

MozReview-Commit-ID: Ah5XtWpevGz

--HG--
extra : rebase_source : 37c3fb4c50bcba8e48c6a965a02e3f8608940538
2017-01-18 09:33:25 +13:00
David Major d27150b889 Bug 1324093 - Part 0: Use MOZ_{BEGIN,END}_EXTERN_C in Assertions.h. r=froydnj
Drive-by cleanup.

MozReview-Commit-ID: 8slQlbS3NS2

--HG--
extra : rebase_source : 2df96c531b8cfa03ca17c134393c5f054ca25927
2017-01-18 09:32:47 +13:00
Jan de Mooij 2975885bae Bug 1283562 - Add mozilla::Result<V, E> for fallible return values. r=jwalden 2016-11-21 12:52:03 +01:00
Emanuel Hoogeveen 515f250ac5 Bug 1309573 - Part 1: Define the crash reason in MFBT to let everything use it. r=froydnj
--HG--
extra : rebase_source : 12eda091c0453e067a13a80261b814128d27c45c
2016-11-06 22:57:00 -05:00
Sebastian Hengst cdcc9e20da Bug 1304829 - rename RELEASE_BUILD to RELEASE_OR_BETA: main part. r=ted,Mossop
MozReview-Commit-ID: 1lCt0xTMV5O
2016-10-08 11:14:49 +02:00
Michael Layzell e1fc3b1773 Bug 1159244 - Add release mode bounds checking with custom annotations to nsTArray, r=froydnj
MozReview-Commit-ID: Ljx9PwBCyTT
2016-08-15 13:29:45 -04:00
Andi-Bogdan Postelnicu 79a0735001 Bug 1283395 - add markup functions for static analysis builds. r=froydnj
MozReview-Commit-ID: 6dFygYzTYfN
2016-07-25 16:57:30 +03:00