Commit graph

2147 commits

Author SHA1 Message Date
Iacopo Colonnelli e059dad5ea Polling in ParallelChildCrashesDontHang test
Instead of (arbitrarily) wait 1s for the child process to terminate, the
parent now polls the child process every 100ms to check if it's
terminated, and it does so for a much longer total time of 10s.

This implementation ensures correct check for slower architectures, and
fast success for faster ones.

Change-Id: I2ff38458bf747de5b74268a4e22fd6164450419b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3876346
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-08 08:32:08 +00:00
Mark Mentovai 4febb34583 Update copyright boilerplate, 2022 edition (Breakpad)
sed -i '' -E -e 's/Copyright (\(c\) )?([0-9-]+),? (Google|The Chromium Authors).*(\r)?$/Copyright \2 Google LLC\4/' -e '/^((\/\/|#| \*) )?All rights reserved\.?\r?$/d' -e 's/name of Google Inc\. nor the/name of Google LLC nor the/' -e 's/POSSIBILITY OF SUCH DAMAGE$/POSSIBILITY OF SUCH DAMAGE./' $(git grep -El 'Copyright (\(c\) )?([0-9-]+),? (Google|The Chromium Authors).*$')

Plus manual fixes for src/processor/disassembler_x86.{cc,h}.

Plus some conversions from CRLF to LF line endings in .cc and .h files.

Bug: chromium:1098010
Change-Id: I8030e804eecd9f5a1ec9d66ae166efd8418c2a67
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3878302
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-07 16:59:53 +00:00
Lei Zhang 00f76018cc Fix fread() check in ExploitabilityLinux.
This fread() call did not intend to always fill the buffer, so the
change in https://crrev.com/c/3872234 is incorrect. Revert that one line
change.

Change-Id: I3fbe38fce11c24aa77b39dc229c7c5ed2a8d6960
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3879289
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-07 16:46:48 +00:00
GlassOfWhiskey e69677e93d Added crash context float state flag
Instead of listing everywhere the set of architectures that do not
require/support explicit float state in their crash context, a new
GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE preprocessor macro has
been defined.

Adding novel architectures will only require to manage the
macro definition in a single place.

Change-Id: I2732982f2cdfc9fcd2f71d6e5e122617faff9e82
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3876345
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-07 12:28:57 +00:00
Lei Zhang 30c7f3cfc1 Fix some Coverity defects.
Fix a few issues Coverity detected in exploitability_linux.cc:

CID 277681, 277682, 277683

Change-Id: I8ad0581f075da7346b9be8100b3690555a358b16
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3872234
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-06 16:28:56 +00:00
GlassOfWhiskey 5d6d250150 Update LSS dep to the last commit
Change-Id: I35f35d9d31d97c8237f0d90170be04716d820028
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3873644
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-06 12:53:40 +00:00
Joshua Peraza 46e00d30cd fix includes
Change-Id: Ibfe719c3ed303cd45884863746cf07ec22dba45d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3863388
Reviewed-by: Nelson Billing <nbilling@google.com>
2022-08-30 21:25:28 +00:00
Nelson Billing cb55d48154 Add product name metadata to converter and symupload.
Change-Id: Iefea0aea13deb86d71d663c8344a2d3c658caf4a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756171
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-08-22 19:48:52 +00:00
Mirko Bonadei e085b3b50b Fix -Wdeprecated-declarations when macOS 13 SDK is used.
This CL fixes the following error detected on a WebRTC bot:

FAILED: obj/third_party/breakpad/utilities/ConfigFile.o
/opt/s/w/ir/cache/goma/client/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/third_party/breakpad/utilities/ConfigFile.o.d -DCR_XCODE_VERSION=1400 -DCR_CLANG_REVISION=\"llvmorg-16-init-907-g8b740747-1\" -D_LIBCPP_ABI_NAMESPACE=Cr -D_LIBCPP_ABI_VERSION=2 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -DCR_LIBCXX_REVISION=9f503bebdb9a89f5ee82b82142109b26d688f40c -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/breakpad/breakpad/src  -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -femit-dwarf-unwind=no-compact-unwind -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -ffp-contract=off -fcomplete-member-pointers -arch x86_64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fno-omit-frame-pointer -g2 -gdwarf-aranges -Xclang -debug-info-kind=limited -isysroot sdk/xcode_links/MacOSX13.0.sdk -mmacos-version-min=10.13 -fvisibility=hidden -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ref-template-as-trivial-member -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Werror -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wno-misleading-indentation -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-psabi -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -std=c++17 -Wno-trigraphs -fobjc-call-cxx-cdtors -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fvisibility-inlines-hidden -c ../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm -o obj/third_party/breakpad/utilities/ConfigFile.o
../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm:108:5: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations]
    sprintf(processUptimeString, "%llu",
    ^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/stdio.h:188:1: note: 'sprintf' has been explicitly marked deprecated here
__deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")
^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/sys/cdefs.h:214:48: note: expanded from macro '__deprecated_msg'
        #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
                                                      ^
../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm:114:3: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations]
  sprintf(processCrashtimeString, "%zd", tv.tv_sec);
  ^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/stdio.h:188:1: note: 'sprintf' has been explicitly marked deprecated here
__deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")
^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/sys/cdefs.h:214:48: note: expanded from macro '__deprecated_msg'
        #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))

Bug: webrtc:14342
Change-Id: I923ab3f9155eb36aa2edf9b1d38c123e3e6ad029
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3829529
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-08-12 17:14:46 +00:00
Zequan Wu a7a8b9c300 Fix int64_t format in fprintf by using PRIx64.
Change-Id: Ic03ecc055c4eb097fbaaf8c8cd2c0a68d5aea8a0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3826785
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-08-11 22:03:01 +00:00
Nelson Billing c44d14ac89 Fix garbage header being prepended to native symbol uploads.
Change-Id: I96887504ad9dc47dda6ebc5be7c193a1eb1f94d1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3825137
Reviewed-by: Zequan Wu <zequanwu@google.com>
2022-08-10 20:38:02 +00:00
Zequan Wu f1f7b5272f Check sh_type for symbol table and finish ProcessDIEs if any DIE processing goes wrong
- If symbol table section is malformed, skip them.
- SkipDIE and ProcessDIE return nullptr when processing goes wrong due to malformed debug info, stop processing in this case.

Bug: 1349354
Change-Id: Ia1d3e3591bbd2dad8b9eb351c1882cfc03bfad4b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3821448
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-08-10 18:01:58 +00:00
Lorenzo Alberto Maria Ambrosi 7e4ea04094 Add error messages on pdb Open function
This implements the error messages from
https://docs.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiadatasource-loaddataforexe?view=vs-2022
and
https://docs.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiadatasource-loaddatafrompdb?view=vs-2022
instead of having just a generic error message.

Signed-off-by: Lorenzo Alberto Maria Ambrosi <lorenzothunder.ambrosi@gmail.com>
Bug: https://bugs.chromium.org/p/google-breakpad/issues/detail?id=866
Change-Id: I23c0e80d31afb402a70cb0cdded78d3d34ac5fff
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3810512
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-08-10 01:58:11 +00:00
Joshua Peraza defdcb714e arm64: strip PACs from return addresses found from CFI
Bug: b/239086293
Change-Id: I8b514e8640f0f2496cea8d0b516124c0e3a3b81a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3788698
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-07-27 02:23:04 +00:00
Leonard Grey 86ea554601 Mac dump_syms: Fix -a on arm64
- Resets `selected_object_file_` when a new file is read. This was a dangling pointer previously.
- When `-a` is provided, ensures that both parts of a split module use
the given architecture.

Bug: None
Change-Id: I581d41b0eee4ec2b0d598fb80b9065e7ebde0e0d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3788222
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-07-26 18:28:38 +00:00
Joshua Peraza afc8daa2de arm64: don't interpret DW_CFA_GNU_window_save
DW_CFA_AARCH64_negate_ra_state uses the same encoding as
DW_CFA_GNU_window_save. It is meant to indicate that x30/LR
has been signed, but breakpad does not require this information.

Bug: b/239086293
Change-Id: I5a17bd5e0673a3ff80a8c6e347013d66054314e8
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3781136
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-07-22 00:24:44 +00:00
Alex Gough e467c59c68 Adds fastfail subcodes as distinct failure reasons
Previously these all resulted in EXCEPTION_STACK_BUFFER_OVERRUN
but this hides various specific fast fail crash types, which
are now provided based on the exception's subcode.

Tests: added to minidump_process_unittest.cc
Bug: 865632
Change-Id: Ic6693de247da55cf6d132d108c6e20c635f366b1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3771437
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2022-07-19 13:05:17 +00:00
George Burgess IV 335e61656f {static_,}range_map: fix overflows under ubsan
Explicitly call out where overflows are expected, and add appropriate
checking for them.

BUG=b:235999011
TEST=Unittests on CrOS and Linux

Change-Id: I999a6996183c2f4afc16a1c0188dee3bd64d7f09
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3759630
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-13 05:45:04 +00:00
George Burgess IV eb087c3383 exploitability_linux: fix mismatched comparison warning
On ARM, this write fails to build:
comparison of integers of different signs: 'ssize_t' (aka 'int') and
'const unsigned int' [-Werror,-Wsign-compare]

Since we check that it's <= 15 above, we can simply cast it without
issue.

Bug: b:235999011
Change-Id: Id75fc0df74e88b347df615df06567e96c6b59a1d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3758800
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-12 21:25:31 +00:00
George Burgess IV e9057e2d5e stackwalker_mips64_unittest: default-init MIPS context
This test's constructor fails to fully initialize this raw context. As a
result, we have at least one use of uninitialized memory in CFI.At4004.
This causes said test to fail under ASAN.

Bug: b:235999011
Change-Id: I3279da8ac3414eb8c90f3949a1db47a03e750a94
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756749
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-12 15:34:54 +00:00
George Burgess IV 0b1ffaa153 module_unittest: fix memory leak
`AddFunction` only takes ownership of the pointer passed to it if it
returns true. Since it returns false when adding `function2`, we need to
free it.

Bug: b:235999011
Change-Id: I11984103c2c153ff0daf2c9690f9c88d04a2131b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756732
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 23:17:41 +00:00
George Burgess IV 4b7984b351 stabs_to_module: fix memory leak
Everything in `functions_` is owned by the current `StabsToModule`. If
we fail to add something from `functions_`, we need to be sure to
dispose of it properly, since `module_` will not take ownership.

Bug: b:235999011
Change-Id: I3b965709ea2016a065b50588f4132d14a1de7725
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756733
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 23:17:39 +00:00
George Burgess IV 9a1941fab9 crashdump_uploader: fix memory leaks & use-after-frees
These `GoogleCrashdumpUploader` instances need to be cleaned up; place
them on the stack.

Doing this unmasks another bug in this code: the `MockLibcurlWrapper`
instance we're passing into these `GoogleCrashdumpUploader`s becomes
owned by the `GoogleCrashdumpUploader` in question. Putting them on the
stack makes `free()` unhappy when the `GoogleCrashdumpUploader` they're
given to gets destructed.

Bug: b:235999011
Change-Id: I5d0424a1c09d32ea34a8fa6f5e52d3695ee6e857
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756172
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 21:40:12 +00:00
George Burgess IV 4d7cd09800 exploitability: fix buffer overflow
exploitability_linux assumed a 15 byte buffer to always be passed in as
`raw_bytes` for `DisassembleBytes`. This test was passing in a 6 byte
buffer. Make `DisassembleBytes` accept a length.

Bug: b:235999011
Change-Id: I696c66357faa1c7d762c64009864123897f03488
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756170
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 20:20:05 +00:00
George Burgess IV c161459d7e dwarf2reader: include <algorithm>
On CrOS, a breakpad update is breaking:
```
google-breakpad-2022.07.03.054510-r210:       no member named 'sort' in
namespace 'std'
google-breakpad-2022.07.03.054510-r210:   std::sort(abbrevs_->begin(),
abbrevs_->end(),
google-breakpad-2022.07.03.054510-r210:   ~~~~~^
```

Looks like we're missing the include for `sort`.

Bug: 235999011
Change-Id: I917389c12b370357fd1fc7cb08af0b9d7f315c84
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3741510
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-03 17:19:35 +00:00
George Burgess IV 90a0d9a9ff configure: support rustc-demangle installations in the sysroot
Currently, `./configure` supports
`--with-rustc-demangle=${path_to_crate_root}` as the only mechanism to
enable rustc-demangle support. This CL adds support for cases where
keeping or synthesizing a full `cargo` build tree is hacky in comparison
to simply installing `rustc_demangle.h` in e.g., /usr/include, and
putting `librustc_demangle.a` in e.g., `/usr/lib64`.

Bug: b:235999011
Change-Id: Id5fe2a24c4b6e33c4df0e10c86ba99c7cf890ab2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3733672
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-03 05:45:10 +00:00
Konstantin Mandrika 3e2a341168 Handle abbrev entities being out of order.
There are cases where the debug_abbrev entities are not sequential,
for example, in Xamarin system dlls. This change gracefully handles
such a case.

Change-Id: Ib270393d3cf9fd18efd99d15d0fba4f96748188a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3738879
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-07-01 00:08:18 +00:00
Mike Frysinger f9fcba812c simplify enable & with configure flags
Leverage the existing default logic & argument parsing that turn the
values yes/no into true/false to simplify the code so we don't create
duplicate variables.  This kills a lot of boilerplate.

Change-Id: Ib7c8e00f7b23e67ed05f3b35e523c235aed41129
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734169
Reviewed-by: George Burgess <gbiv@chromium.org>
2022-06-30 06:44:21 +00:00
Mike Frysinger 593196225d regen autotools
Previous updates to these were partially done.  Rerun with the
right versions of autoconf-2.69 & automake-1.16.5.

Change-Id: Ifd6c8405b0b50c5d3cf4ea536a7db5762d62644e
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734167
Reviewed-by: George Burgess <gbiv@chromium.org>
2022-06-30 06:44:14 +00:00
Mike Frysinger ae1530a4f4 update autotool minimum versions
We're using autoconf-2.69 (from 2012) now and not testing anything
older, so raise the min version to that.

Also bump to automake-1.13 (from 2012) to keep a bit inline.

Change-Id: I903144f214fef835364474e1607a26e846c99ff6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734168
Reviewed-by: George Burgess <gbiv@chromium.org>
2022-06-30 06:03:24 +00:00
priettt 2e161431bc Added a missing dependency on android/google_breakpad/Android.mk
pe_file.cc, used in minidump_writer.cc, was not included in LOCAL_SRC_FILES. This caused breakpad to fail in build time, as it didn't find the file.

Tested using ndk 21.4.7075529, building on an arm64 device.

Change-Id: I192539a52c1344eba9999c6780bcd8b83ea7e772
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3723683
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-06-28 16:28:24 +00:00
George Burgess IV dee16d9b30 dwarf_cu_to_module_unittest: remove expectation
This expectation started failing at
8b68c72a3f. Remove it.

This is the only expectation that exists in this test, but the test
may be useful for internal asserts performed in the code under test.

Bug: b:235999011
Change-Id: Iab5c073161ce66fdf362b7da31c19f471c7a79bf
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3727478
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-06-27 21:49:44 +00:00
George Burgess IV 0c816d2d12 module_unittest: fix use-after-free
`Construct.FunctionsWithSameAddress` started failing at ff5892c5. It
looks like the cause of this is in the calls to
`generate_duplicate_function`:

```
generate_duplicate_function("_without_form");
generate_duplicate_function("_and_void");
```

`generate_duplicate_function` directly calls `new
Module::Function(...);`, which stores the `StringView` it's given.
`generate_duplicate_function` currently takes a `const
string &`; in the above statements, these strings get `free()`d at the
`;`.

Making the parameter a `StringView` means the `Module::Function` will
store pointers to the string literal, which lives for the whole program.

All calls to `generate_duplicate_function` are given literals.

Bug: b:235999011
Change-Id: Ied04c1307a2467b9816a83f0c4d84d47779ec610
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3726855
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-06-27 20:59:02 +00:00
George Burgess IV a8e8a69591 elf_core_dump_unittest: skip test if setrlimit will fail
Some systems have constrained rlimits for core files (the CrOS chroot is
an example of this). Fail gracefully in this case, rather than breaking
the user's tests.

Bug: b:235999011
Change-Id: I5649b42d3e6fd9b4f9b11e1fd9d0d4a1083d300f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3722724
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-06-24 20:05:22 +00:00
George Burgess IV ad8a43f367 dwarf_cu_to_module_unittest: fix tests
https://crrev.com/7933ec0a69bac134b7cee4b60a5dc80743b2b1a9
removed warnings about unknown abstract origins, which caused these
tests to fail on ChromeOS. Update these tests to reflect the code
changes in said CL.

Bug: b:235999011
Change-Id: Ifa450d33080d955d33b3aadb951c2e75c0aa1c85
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3723686
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-06-24 19:46:57 +00:00
Dangyi Liu 467ac5701f Ignore failure in recovering optional registers
Evaluating CFI rules may fail due to e.g. the unavailability of the
memory or some register values. Failures in recovering registers other
than CFA or return address can be ignored because they are optional.

Bug: fuchsia:102034
Change-Id: Ia1d8bdb12766e32b5445b49d353fc71c63ab73e7
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3701260
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-06-14 21:39:43 +00:00
Iryna Shakhova c4c43b80ea Reland "Support PE modules in core files when running core2md"
This is a reland of commit 0808030bee

Original change's description:
> Support PE modules in core files when running core2md
>
> Core files generated from `wine` contain both ELF and PE modules. Module
> format can be guessed by checking the file contents. If the module
> corresponds to PE-file conditions (has specific fields set up as
> described in https://code.google.com/archive/p/corkami/wikis/PE.wiki)
> we'll create a MDCVInfoPDB70 record in the minidump for it, but if
> the file cannot be opened, is too short or is not a PE file, we'll
> fall back to ELF procedure.
>
> Added /src/client/linux/minidump_writer/pe_file.{cc,h} to
> src_client_linux_libbreakpad_client_a_SOURCES and
> src_client_linux_linux_client_unittest_shlib_SOURCES.
> Makefile.in and aclocal.m4 were generated by running 'aclocal && automake'.
>
> Test: build core2md and use it to convert a core file into dmp, validate
> that the generated dmp file can be opened. Ran './configure & make'.
>
> Change-Id: I225ffeea3f582deed40ecdfe7ab77f5754e90cbe
> Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3629189
> Reviewed-by: Joshua Peraza <jperaza@chromium.org>

Change-Id: I09dd067a39a95f81f48656595e811c263561ebf2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3695863
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-06-08 19:59:24 +00:00
Justin Cohen 82b16055af Remove usage of sprintf in dwarf_cfi_to_module.
sprintf is marked as deprecated with Xcode 14.

Bug: 1331345
Change-Id: Ic301134ec0c5e7b9ee9d590ab1423491aad5ccf7
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3692036
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-06-08 18:11:56 +00:00
Justin Cohen 0f1f43edd2 Revert "Support PE modules in core files when running core2md"
This reverts commit 0808030bee.

Reason for revert: Breaks Android Compile

ld.lld: error: undefined symbol: google_breakpad::PEFile::TryGetDebugInfo(char const*, google_breakpad::_RSDS_DEBUG_FORMAT*)
>>> referenced by minidump_writer.cc
>>>               client/minidump_writer.o:((anonymous namespace)::MinidumpWriter::FillRawModule(google_breakpad::MappingInfo const&, bool, unsigned int, MDRawModule*, unsigned char const*)) in archive obj/third_party/breakpad/libclient.a


https://ci.chromium.org/ui/p/chromium/builders/try/android-marshmallow-arm64-rel/1188618/overview

Original change's description:
> Support PE modules in core files when running core2md
>
> Core files generated from `wine` contain both ELF and PE modules. Module
> format can be guessed by checking the file contents. If the module
> corresponds to PE-file conditions (has specific fields set up as
> described in https://code.google.com/archive/p/corkami/wikis/PE.wiki)
> we'll create a MDCVInfoPDB70 record in the minidump for it, but if
> the file cannot be opened, is too short or is not a PE file, we'll
> fall back to ELF procedure.
>
> Added /src/client/linux/minidump_writer/pe_file.{cc,h} to
> src_client_linux_libbreakpad_client_a_SOURCES and
> src_client_linux_linux_client_unittest_shlib_SOURCES.
> Makefile.in and aclocal.m4 were generated by running 'aclocal && automake'.
>
> Test: build core2md and use it to convert a core file into dmp, validate
> that the generated dmp file can be opened. Ran './configure & make'.
>
> Change-Id: I225ffeea3f582deed40ecdfe7ab77f5754e90cbe
> Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3629189
> Reviewed-by: Joshua Peraza <jperaza@chromium.org>

Change-Id: I7105ed615a338263f112243bd8dc9e86b906fcb1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3695862
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-06-08 18:11:47 +00:00
Ben Hamilton 4d85225467 [breakpad] Add MINIDUMP_THREAD_NAME_LIST support
Change-Id: I84205358ae48e757fa3b836747eadc32c2671756
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3690389
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-06-07 18:42:06 +00:00
Nelson Billing 737e2cd338 Look for http redirection errors from SymSrv in google_converter.
Change-Id: Ic793f2a5baceb342154c995c43bf60b6f57612a5
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3689705
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-06-06 19:47:33 +00:00
Nelson Billing 41a11409d6 Upload native symbols from google_converter.
Change-Id: I4b636ccb1dc536ad63b0995994057fe1874f4ee6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3681980
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-06-03 20:12:57 +00:00
Nelson Billing 678d69cd78 Add symbol type option to SymUploadV2ProtocolSend.
Change-Id: Ia2eadae56c7f879ddb2212e4018024a5c04634aa
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3670054
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-05-31 21:13:35 +00:00
Nelson Billing bee636cea4 Migrate google_converter to v2 upload API.
Change-Id: If045809cfa3a3601b93725b6b2b45089e7558eb3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3657059
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-05-20 22:08:43 +00:00
Nelson Billing c34fc86972 Make sym-upload-v2 windows code shareable.
Change-Id: I228c93655203977b27052a85705c42bafef1e1ef
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3656055
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-05-19 22:17:08 +00:00
Iryna Shakhova 0808030bee Support PE modules in core files when running core2md
Core files generated from `wine` contain both ELF and PE modules. Module
format can be guessed by checking the file contents. If the module
corresponds to PE-file conditions (has specific fields set up as
described in https://code.google.com/archive/p/corkami/wikis/PE.wiki)
we'll create a MDCVInfoPDB70 record in the minidump for it, but if
the file cannot be opened, is too short or is not a PE file, we'll
fall back to ELF procedure.

Added /src/client/linux/minidump_writer/pe_file.{cc,h} to
src_client_linux_libbreakpad_client_a_SOURCES and
src_client_linux_linux_client_unittest_shlib_SOURCES.
Makefile.in and aclocal.m4 were generated by running 'aclocal && automake'.

Test: build core2md and use it to convert a core file into dmp, validate
that the generated dmp file can be opened. Ran './configure & make'.

Change-Id: I225ffeea3f582deed40ecdfe7ab77f5754e90cbe
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3629189
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-05-12 18:24:10 +00:00
Adam Duke c85eb4a59b avoid dump_syms crashing if selected arch is not found
https://crrev.com/c/3327644 introduced the ability for dump_syms to
operate on in memory data, which has the consequence of not going
through the same input validation as the dump_syms cli tool. In certain
cases, it is possible that architecture info can't be reliably
determined, e.g. new architectures that breakpad is unware of. In that
case, dump_syms should avoid crashing when calling ReadSymbolData and
return false instead.

Change-Id: Ie9acdf811300084f1d5916f4778754f8abca10e0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3572251
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-04-15 19:07:25 +00:00
Zequan Wu 8b68c72a3f [dump_syms] Fix DW_AT_specification warning on Mac.
1. Visit DW_TAG_class_type when it's inside DW_TAG_subprogram.
2. Only warn when we can't get the name for the DIE and it has DW_AT_specification that is not in the specification map.

Bug: 1078932
Change-Id: Id3126aec305658f8f65c01675a8e9e3ea03f3651
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3579855
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-04-12 17:33:22 +00:00
Yuly Novikov e09741c609 Fix build with Windows 10 20348 SDK
Bug: chromium:1292528
Change-Id: Iaee784fe3992725086636dddb5f73d7e1373e7d7
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3558794
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-03-29 23:51:59 +00:00
Nelson Billing fd72a6c232 Set use_async_processing in windows symupload.
Change-Id: If9cc629a44b8c05e4be55d765800c239c47e076c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3554917
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-03-29 23:47:37 +00:00