- Adds a .gn and a build/BUILDCONFIG.gn that uses mini_chromium's
build/BUILD.gn.
- Adds some stub BUILD.gn files in locations where Chromium expects them
(in //build, //testing, //third_party) containing empty targets/configs.
These are no-ops in standalone builds, but add functionality when
building in Chromium. This is in preference to having a global bool
that conditionally does Chromium-y things in the Crashpad build files.
These stub files are all contained in a secondary source root in
build/chromium_compatibility, referred to by //.gn.
- Adds //base/BUILD.gn which forwards to mini_chromium/base. This is
only used when building standalone so that both Chromium and Crashpad
can refer to it as "//base".
- Changes references to other Crashpad targets to be relatively
specified so that they work when the root of the project is //, and also
when it's //third_party/crashpad/crashpad as it is in Chromium.
- Moves any error-causing Mac/Win-specific files into explicit if (is_mac)
or if (is_win) blocks as part of removing the dependency on
set_sources_assignment_filter().
As yet unresolved:
- CRASHPAD_IN_CHROMIUM needs to be removed when standalone; to be tackled
in a follow up.
- Not sure what to do with zlib yet, the build file currently assumes
"in Chromium" too, and similarly having Crashpad //third_party/zlib:zlib
pointing at itself doesn't work.
Bug: crashpad:79
Change-Id: I6a7dda214e4b3b14a60c1ed285267ab97432a1a8
Reviewed-on: https://chromium-review.googlesource.com/777410
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Scott Graham <scottmg@chromium.org>
In Chromium, the AnnotationList is registered in the main executable
module. However, when using the component build, the individual shared
libraries do not explicitly initialize the CrashpadInfo nor
AnnotationList. This causes annotations to NULL-dereference the
uninitialized AnnotationList when using the component build.
By using the Register method instead, the AnnotationList will be lazily
created. In Chromium's static/release build, the AnnotationList will
still be initialized deterministically during startup.
Bug: crashpad:192
Change-Id: I8599b52630f4d7608e5028b14264a8eed49a9176
Reviewed-on: https://chromium-review.googlesource.com/793981
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
There's no particular UUID generator on Fuchsia, so use the RandBytes()
version. (That won't work either yet, but will once RandBytes() is
implemented.)
Bug: crashpad:196
Change-Id: Id740bbfc80e170d7ab19995ac88db5eed474c119
Reviewed-on: https://chromium-review.googlesource.com/786822
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
These use CIPD (from depot_tools) to download packages created by the
Fuchsia team. The .ensure file is passed to `cipd` which currently
include specificiations for the Fuchsia team's build of clang (which,
because it's close to HEAD includes support for targeting Fuchsia), as
well as the Fuchsia SDK.
Both packages are specified as "latest" rather than pinning to a
specific revision. At this early point in the process we don't have any
good reason to pin, but that can be accomplished later by replacing that
with a specific package's SHA1.
Due to the (relatively new) 'condition': 'checkout_fuchsia', this DEPS
step will only be run when .gclient includes 'fuchsia' in the target_os
block at the top_level, e.g.
$ cat .gclient
solutions = [
{ ... },
]
target_os = ['fuchsia']
Bug: crashpad:196, crashpad:209
Change-Id: Id6d444a1c4450ffde8ee6665ff9720ce454c5cdf
Reviewed-on: https://chromium-review.googlesource.com/786092
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Bug: crashpad:196
Change-Id: I4f01c4f04c94a745b4c30bc41f66d2ae010e883a
Reviewed-on: https://chromium-review.googlesource.com/786817
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
I have no idea if this will work as not much is building yet, but it
seems plausible for the time being.
Bug: crashpad:196
Change-Id: Ie3a358512a968e9e777ed03c0bffc5e273a0f12e
Reviewed-on: https://chromium-review.googlesource.com/786777
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Bug: crashpad:196
Change-Id: I80c979967d95383e0f703a336a494f30ff583f1b
Reviewed-on: https://chromium-review.googlesource.com/786448
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
I ran the thing below (piped to “grep -v namespace”), fixed things up,
and rewrapped comments in the affected file.
import re
import sys
LAST_WORD_RE = re.compile('^.*[\s]+([\w]+)$')
FIRST_WORD_RE = re.compile('^[^\w]+([\w]+).*$')
for path in sys.argv[1:]:
with open(path) as file:
line_number = 0
last_word = None
for line in file:
line_number += 1
first_word = FIRST_WORD_RE.match(line)
if first_word and first_word.group(1) == last_word:
print('%s:%u: %s' % (path, line_number - 1, last_word))
last_word = LAST_WORD_RE.match(line)
if last_word:
last_word = last_word.group(1)
Change-Id: Iea9f2a6453d9d9ec17e2f238e09252535d7408bd
Reviewed-on: https://chromium-review.googlesource.com/780284
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Change-Id: I4b247d7fae1a212350f8ffcf2bf5ba1fa730f5c1
Reviewed-on: https://chromium-review.googlesource.com/780339
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
These are large, not pinned (floating at HEAD), and we’re not currently
using them.
Change-Id: I550f832aeb42db8404fdb764f78e83136a2a7ef6
Reviewed-on: https://chromium-review.googlesource.com/779668
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
The exception swallower server’s design and interface are both
considerably simpler when the server runs in a thread in the parent test
process, as opposed to a separate process. The only caveat is that this
results in calls to fork() while threaded. Uses of gtest
{ASSERT,EXPECT}_DEATH with the default “fast” gtest death test style
result in this warning:
[WARNING] ../../third_party/gtest/gtest/googletest/src/gtest-death-test.cc:836:: Death tests use fork(), which is unsafe particularly in a threaded context. For this test, Google Test detected 2 threads.
Bug: crashpad:33
Change-Id: Ib8f418064ea4ab942859c3393cb15cf71365614d
Reviewed-on: https://chromium-review.googlesource.com/779481
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Crashpad has many tests that crash intentionally. Some of these are
gtest death tests, and others arrange for intentional crashes to test
Crashpad’s own crash-catching logic. On macOS, all of the gtest death
tests and some of the other intentional crashes were being logged by
ReportCrash, the system’s crash reporter. Since these reports
corresponded to intentional crashes, they were never useful, and served
only to clutter ~/Library/Logs/DiagnosticReports.
Since Crashpad is adept at handling exceptions on its own, this
introduces the “exception swallowing server”,
crashpad_exception_swallower, which is a Mach exception server that
implements a no-op exception handler routine for all exceptions
received. The exception swallowing server is established as the task
handler for EXC_CRASH and EXC_CORPSE_NOTIFY exceptions during gtest
death tests invoked by {ASSERT,EXPECT}_DEATH_{CHECK,CRASH}, and for all
child processes invoked by the Multiprocess test infrastructure. The
exception swallowing server is not in effect at other times, so
unexpected crashes in test code can still be handled by ReportCrash or
another crash reporter.
With this change in place, no new reports are generated in the
user-level ~/Library/Logs/DiagnosticReports or the system’s
/Library/Logs/DiagnosticReports during a run of Crashpad’s full test
suite on macOS.
Bug: crashpad:33
Change-Id: I13891853a7e25accc30da21fa7ea8bd7d1f3bd2f
Reviewed-on: https://chromium-review.googlesource.com/777859
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Unreferenced, and not working at all in Crashpad-standalone.
Copied from Chromium at 52a9831d81f2099ef9f50fcdaca5853019262c35 to have
a point where a roll back into Chromium should be a no-op (with Chromium's
build/secondary/third_party/crashpad/... removed).
I'm not sure what we want to do about the various gni references into
Chromium (e.g. //build/config/sanitizers/sanitizers.gni, //testing/test.gni,
etc.) but I guess the sooner they live in Crashpad rather than in Chromium
the sooner we can figure out the sort of knobs and dials we need.
Bug: crashpad:79
Change-Id: Id99c29123bcd4174ee2bcc128c2be87e3c94fa3f
Reviewed-on: https://chromium-review.googlesource.com/777819
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Scott Graham <scottmg@chromium.org>
These were missed with the mig.py change in
6dd2be7c44a9c8bbea5df918e7ebe46d76da97df.
Change-Id: I7ad066cd9425cab26e56a8b3dfb90f5f54a6648d
Reviewed-on: https://chromium-review.googlesource.com/774999
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Rather than providing these stubs to make the linker happy, use the
mig.py script to modify the _Xserver_routine functions to not even call
server_routine.
Change-Id: I5a2f5cd228462e38dddbf899d0ad8033a6f817bd
Reviewed-on: https://chromium-review.googlesource.com/773359
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
The handler will now be less strict about checking CrashpadInfo struct
sizes. Assuming the signature and version fields match:
- If the handler sees a struct smaller than it’s expecting, the module
was likely built with an earlier version of the client library, and
it’s safe to treat the unknown fields as though they were zero or
other suitable default values.
- If the handler sees a struct larger than it’s expecting, the module
was likely built with a later version of the client library. In that
case, actions desired by the client will not be performed, but this
is not otherwise an error condition.
The CrashpadInfo struct must always be at least large enough to contain
at least the size field. The signature and version fields are always
checked.
The section size must be at least as large as the size carried within
the struct. To account for possible section padding, strict equality is
not required.
Bug: chromium:784427
Test: crashpad_snapshot_test CrashpadInfoSizes_ClientOptions/*.*
Change-Id: Ibb0690ca6ed5e7619d1278a68ba7e893d55f19fb
Reviewed-on: https://chromium-review.googlesource.com/767709
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
glibc’s own <sys/ptrace.h> should provide this but doesn’t. See
https://sourceware.org/bugzilla/show_bug.cgi?id=22433.
The copy in compat provided it when targeting x86-64 and using glibc.
util/linux/ptracer.cc uses it when targeting both 32-bit x86 and x86-64,
so the compat definition must be made to apply to 32-bit x86 too.
This also provides a #define using the same name as the constant, which
is what glibc’s <sys/ptrace.h> does for other constants.
Bug: crashpad:30
Change-Id: I5a0734a236d1c25398fb69e66f58dfe118658b68
Reviewed-on: https://chromium-review.googlesource.com/765257
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
When this test examines a module that doesn’t have a CodeView PDB link,
it will fail. Such a link may be missing when linking with Lexan
ld-link.exe without /DEBUG. The test had been examining the executable
as its module. Since it’s easier to provide a single small module linked
with /DEBUG than it is to require that the test executable always be
linked with /DEBUG, the test is revised to always load a module and
operate on it. The module used is the existing
crashpad_snapshot_test_image_reader_module.dll. It was chosen because
it’s also used by PEImageReader.DebugDirectory, which also requires a
CodeView PDB link.
It’s the build system’s responsibility to ensure that
crashpad_snapshot_test_image_reader_module.dll is linked appropriately.
Crashpad’s own GYP-based build always links with /DEBUG. Chrome’s
GN-based Crashpad build will require additional attention at
symbol_level = 0.
Bug: chromium:782781
Change-Id: I0dda8cd13278b82842263e76bcc46362bd3998df
Reviewed-on: https://chromium-review.googlesource.com/761501
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
crashpad_snapshot_test PEImageReader.DebugDirectory was hanging when
crashpad_snapshot_test_image_reader.exe did not have a CodeView PDB
link. This occurred when linked by Lexan ld-link.exe without /DEBUG.
Bug: chromium:782781
Change-Id: I8fbc4d8decf6ac5e19f7ffeb230fd15d7c40fd51
Reviewed-on: https://chromium-review.googlesource.com/761320
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Traditional NDK headers provide the nanoseconds field of modification
time as st_mtime_nsec, rather than contained in a timespec st_mtim.
Unified headers do provide the timespec st_mtim.
Bug: crashpad:206
Change-Id: I701ac2d5e357a13855a2a674f1355f2ea125ee4e
Reviewed-on: https://chromium-review.googlesource.com/760618
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
FileModificationTime gets the last write time for files, directories,
or symbolic links. Symbolic links may point to files, directories, or
be dangling.
Bug: crashpad:206
Change-Id: Ic83b5a7d318502ad5db5c01731d06c8624925e15
Reviewed-on: https://chromium-review.googlesource.com/744298
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Change-Id: Ibecedd195224ea53ff36f376897a6ff3c4e773d2
Reviewed-on: https://chromium-review.googlesource.com/757085
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This was previously proposed at
https://chromium-review.googlesource.com/c/crashpad/crashpad/+/339103/2/util/win/pe_image_reader_test.cc#84.
It didn’t land because the change was abandoned for other reasons, but
the fix was valid. nsi.dll is not VFT_APP or VFT_DLL, and if it’s
loaded, crashpad_snapshot_test PEImageReader.VSFixedFileInfo_AllModules
fails.
Although I can’t reproduce nsi.dll being loaded spontaneously in local
testing or on trybots, it occurred in the monolithic crashpad_tests at
https://build.chromium.org/p/chromium.win/builders/Win7%20Tests%20%28dbg%29%281%29/builds/64492:
[ RUN ] PEImageReader.VSFixedFileInfo_AllModules
../../third_party/crashpad/crashpad/snapshot/win/pe_image_reader_test.cc(90): error: Value of: observed.dwFileType == VFT_APP || observed.dwFileType == VFT_DLL
Actual: false
Expected: true
Google Test trace:
../../third_party/crashpad/crashpad/snapshot/win/pe_image_reader_test.cc(164): C:\Windows\syswow64\NSI.dll
[ FAILED ] PEImageReader.VSFixedFileInfo_AllModules (11 ms)
I can also reproduce locally by calling LoadLibrary(L"nsi.dll").
Bug: chromium:779790, chromium:782011
Test: crashpad_snapshot_test PEImageReader.VSFixedFileInfo_AllModules
Change-Id: I361c7d6521645913277a441ce38779aaa4a182c2
Reviewed-on: https://chromium-review.googlesource.com/757077
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
The warning suppression was recently added in a51e912004a6, and I don’t
know what I was thinking. I went out of my way to make it apply to both
Clang and GCC, but GCC doesn’t recognize this warning at all, nor does
it need any other warning suppressed.
Change-Id: I50341bfe81ee4799b3f6278d2e31ec31741952ac
Reviewed-on: https://chromium-review.googlesource.com/755654
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This CL pulls together similar time conversion functions and adds
conversions between `FILETIME`s and `timespec`s.
Bug: crashpad:206
Change-Id: I1d9b1560884ffde2364af0092114f82e1534ad1c
Reviewed-on: https://chromium-review.googlesource.com/752574
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
7f523b111c8c win: Don’t define c16*() functions in
base/strings/string16.{cc,h}
dd0c3e9680ae Use ICU 60.1 as the basis for base/third_party/icu
Change-Id: I21b921c36a3ee1f989fa9786f60d980724577f64
Reviewed-on: https://chromium-review.googlesource.com/755215
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This wires up the annotation objects system of the client to the
snapshot production and minidump writing facilities.
Bug: crashpad:192
Change-Id: If7bb7625b140d71a15b84729372cbd0fd4bc63ef
Reviewed-on: https://chromium-review.googlesource.com/749870
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
This extracts string annotation objects from the minidumps and includes
them as form POST key-value pairs.
This change also starts building a crashpad_handler_test binary on Mac.
Bug: crashpad:192
Change-Id: I68cbf6fda6f1e57c1e621d5e3de8717cfaea65bf
Reviewed-on: https://chromium-review.googlesource.com/749793
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This test code appeared in 9609b7471676, and was missed by the similar
warning cleanup of a51e912004a6, which was developed in parallel.
Bug: crashpad:192, chromium:779790
Change-Id: I4ed88ed025e4be4410c98ceaca395218f00007be
Reviewed-on: https://chromium-review.googlesource.com/750024
Reviewed-by: Robert Sesek <rsesek@chromium.org>
This will be used to include the annotations as form-post data when
uploading reports.
Bug: crashpad:192
Change-Id: I85ba9afd3cae7c96c0f8fe4f31a2460c97ed42d3
Reviewed-on: https://chromium-review.googlesource.com/747514
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This writes any set annotation objects list for a module into a
minidump, though no crash handler currently sets annotation objects for
a crashing process.
Bug: crashpad:192
Change-Id: Ib6d92edecb8d40061eaee08cbbc5c20dd1f048ef
Reviewed-on: https://chromium-review.googlesource.com/744942
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This is causing crashpad_handler_test to fail in Debug on Windows.
Bug: crashpad:192
Change-Id: Icf3ff387050ee2becf471f4e7c3a75394b1dd436
Reviewed-on: https://chromium-review.googlesource.com/749792
Reviewed-by: Mark Mentovai <mark@chromium.org>
This adds extensions for MinidumpAnnotation and MinidumpAnnotationList
as well as their writer classes. Nothing currently connects the client-
side annotations to the writer, so annotations are not yet written into
minidumps.
Bug: crashpad:192
Change-Id: Ic51536157177921640ca15ae14e5e01ca875ae12
Reviewed-on: https://chromium-review.googlesource.com/731309
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
81eced5192d9 added a a dependency on
crashpad_snapshot_test_simple_annotations to crashpad_snapshot_test, but
9609b7471676 renamed this target to crashpad_snapshot_test_annotations.
I should have rebased onto HEAD, rebuilt, and retested before landing.
Bad developer! No candy. 🎃
Change-Id: I8fcd1020d8bd4ee163afa555ae6e815325485024
Reviewed-on: https://chromium-review.googlesource.com/748814
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Instead of individual per-directory test executables like
crashpad_util_test, all Crashpad tests in Chromium will be run from a
single crashpad_tests executable.
Test: crashpad_util_test Paths.Executable, ProcessInfo.Self; crashpad_snapshot_test PEImageReader.DebugDirectory
Bug: chromium:779790
Change-Id: If95272fd641734fbdb8e231fbcdc4e7ccb2cb822
Reviewed-on: https://chromium-review.googlesource.com/749303
Reviewed-by: Scott Graham <scottmg@chromium.org>
The design for running all Crashpad unit tests on Chromium’s try- and
buildbots involves pulling all tests into a single monolithic
crashpad_tests executable. Many Crashpad tests base the name of their
child executables or modules on the name of the main test executable.
Since the main test executable will have a different name in the
in-Chromium build, knowledge of the test executable name (referred to as
“module” here) needs to be added to the tests themselves.
This introduces TestPaths::BuildArtifact(), which allows the module name
to be specified. For Crashpad’s standalone build, the module name is
verified against the main test executable’s name.
TestPaths::BuildArtifact() can also locate paths in the alternate 32-bit
output directory for 64-bit Windows tests, taking on the responsibility
for what the new (5e9ed4cb9f69) TestPaths::Output32BitDirectory(), now
obsolete, did.
Bug: chromium:779790
Change-Id: I64c4a2190b6319e487c999812a7cfc512a75a700
Reviewed-on: https://chromium-review.googlesource.com/747536
Reviewed-by: Scott Graham <scottmg@chromium.org>
While making crashpad_minidump_test run in Chromium’s try- and buildbots
(https://crbug.com/779790), crashes in the
MinidumpThreadWriter.OneThread_AMD64_Stack test were observed in 32-bit
x86 Windows builds produced by Clang in the release configuration. These
crashes occurred in crashpad::test::InitializeMinidumpContextAMD64,
which heap-allocates a MinidumpContextAMD64Writer object. These objects
have an alignment requirement of 16, based on the alignment requirement
of their MinidumpContextAMD64 member.
Although this problem was never observed with MSVC, Clang was making use
of the known strict alignment and producing code that depended on it.
This code crashed if the requirement was not met. MSVC had raised a
warning about this usage (C4316), but the warning was disabled as it did
not appear to have any ill effect on code produced by that compiler.
The problem surfaced in test code, but heap-allocated
MinidumpContextAMD64Writer objects are created in non-test code as well.
The impact is limited, because a 32-bit Windows Crashpad handler would
not have a need to allocate one of these objects.
As a fix, MinidumpContextAMD64Writer is given a custom allocation
function (a static “operator new()” member and matching “operator
delete()”) that returns properly aligned memory.
Change-Id: I0cb924da91716eb01b88ec2ae952a69262cc2de6
Reviewed-on: https://chromium-review.googlesource.com/746539
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
These are mostly -Wsign-compare warnings, with a -Wconstant-conversion
and a -Wunguarded-availability thrown in.
Bug: chromium:779790
Change-Id: Ic2103f3332ce57378db83eca7fa2569efec1a7b6
Reviewed-on: https://chromium-review.googlesource.com/746081
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Crashpad’s own build always uses wWinMain(), the default entry point for
/subsystem:windows, producing crashpad_handler.exe. crashpad_handler.com
is a /subsystem:console version produced by running editbin on a copy of
crashpad_handler.exe. This leaves the entry point intact, so both copies
use wWinMain(). crashpad_handler.com does not use wmain() as
traditionally used by /subsystem:console programs.
For the in-Chromium build’s tests, it is conveient to produce the
/subsystem:console version, crashpad_handler.com, directly as linker
output, as opposed to using editbin to transform a /subsystem:windows
version. This /subsystem:console version uses the normal wmain() entry
point.
By providing both wWinMain() and wmain(), both build types can be
accommodated.
Bug: chromium:779790
Change-Id: Ieb784db0cc245c6e4c12fb1dd83b8b95e159bdec
Reviewed-on: https://chromium-review.googlesource.com/746161
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Two dependency targets were missing from crashpad_snapshot_test.
Change-Id: I9efba73639e529313d4aa49df5e68bb5117cf95a
Reviewed-on: https://chromium-review.googlesource.com/746121
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
testing::InitGoogleMock() and testing::InitGoogleTest() modify argc and
argv, removing --gtest_* arguments that are processed. When building as
a part of Chromium, this prevents these arguments from being visible to
Chromium’s base::LaunchUnitTests() test runner.
Only call these initialization functions when using gtest’s native
RUN_ALL_TESTS() test runner.
Change-Id: I8242e1047f90d1cd923518a5cb9bd2527201ad25
Reviewed-on: https://chromium-review.googlesource.com/746082
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
These utilities will be useful for database tests.
Bug: crashpad:206
Change-Id: Iae0d831934ea7f020f167dbbcba901a72472937b
Reviewed-on: https://chromium-review.googlesource.com/747885
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Nothing currently directs the handler to read these Annotation objects
from the target process, so they will not be read by Crashpad nor appear
in the minidump.
Bug: crashpad:192
Change-Id: I1eb1e9f42282c07e37d335631f0cc6083ef28a89
Reviewed-on: https://chromium-review.googlesource.com/726501
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Nothing currently directs the handler to read these Annotation objects
from the target process, so they will not be read by Crashpad nor appear
in the minidump.
Bug: crashpad:192
Change-Id: I8ebabb4f5c77c5620b0d8e5036c3185eecfa4646
Reviewed-on: https://chromium-review.googlesource.com/717236
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
The MinidumpByteArray can be used to carry arbitrary blob payloads in a
minidump file.
Bug: crashpad:192
Change-Id: I1a0710b856375213cdd97eafa9247830aa9a9291
Reviewed-on: https://chromium-review.googlesource.com/716462
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
The AnnotationSnapshot is the handler-side of the Annotation object,
which will store the annotation data when read by a ProcessReader.
Bug: crashpad:192
Change-Id: Ic65c95022c452522678c1070c27c429dd631fb64
Reviewed-on: https://chromium-review.googlesource.com/717197
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
../../third_party/crashpad/crashpad/util/file/filesystem_test_util.cc(79,27): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'int' [-Werror,-Wsign-compare]
if (symbolic_link_flags == -1) {
~~~~~~~~~~~~~~~~~~~ ^ ~~
In file included from ../../third_party/crashpad/crashpad/util/file/filesystem_test_util.cc:23:
../../third_party/googletest/src/googletest/include\gtest/gtest.h(1392,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
../../third_party/googletest/src/googletest/include\gtest/gtest.h(1421,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
../../third_party/crashpad/crashpad/util/file/filesystem_test_util.cc(73,5): note: in instantiation of function template specialization 'testing::internal::EqHelper<false>::Compare<unsigned long, long>' requested here
EXPECT_EQ(error, ERROR_PRIVILEGE_NOT_HELD)
^
../../third_party/googletest/src/googletest/include\gtest/gtest.h(1924,63): note: expanded from macro 'EXPECT_EQ'
EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
^
2 errors generated.
and
../../third_party/crashpad/crashpad/util/file/filesystem_test_util.cc(111,5): note: in instantiation of function template specialization 'testing::internal::EqHelper<false>::Compare<unsigned long, long>' requested here
EXPECT_EQ(GetLastError(), ERROR_FILE_NOT_FOUND)
^
Change-Id: I55b33b39c271d765376ff9c416e737d0608eb781
Reviewed-on: https://chromium-review.googlesource.com/742561
Reviewed-by: Scott Graham <scottmg@chromium.org>
As of
00a0654929,
crashpad_util_test is able to run in Chromium. It uses Chromium’s own
base::TestLauncher rather than gtest’s RUN_ALL_TESTS() for proper
integration with Swarming.
Launching WinMultiprocess test children out of the same test executable
via WinChildProcess is not compatible with Chromium’s parallel, shardy,
Swarmy test launcher. When running these children, the standard gtest
RUN_ALL_TESTS() launcher will now be used, even in Chromium.
Two tests disabled in Chromium are now enabled:
ExceptionHandlerServerTest.MultipleConnections and
ScopedProcessSuspend.ScopedProcessSuspend.
As part of this work, I discovered that disabled tests chosen to run via
--gtest_also_run_disabled_tests did not actually work for
WinMultiprocess-based tests, because gtest’s test launcher would refuse
to run the child side of the test, believing it was disabled. This is
fixed by always supplying --gtest_also_run_disabled_tests to
WinChildProcess children, on the basis that if the parent is managing to
run and it’s disabled, disabled tests must actually be enabled.
Bug: crashpad:205
Change-Id: Ied22f16b9329ee13b6b07fd29de704f6fe2a058e
Reviewed-on: https://chromium-review.googlesource.com/742462
Reviewed-by: Scott Graham <scottmg@chromium.org>
This upstreams part of
00a0654929.
The gmock_main and gtest_main test launchers detect via a
CRASHPAD_IN_CHROMIUM macro that they are building as part of Chromium,
and use Chromium’s custom test launcher rather than gtest’s
RUN_ALL_TESTS(). This enables parallelism, sharding, and integration
with Swarming.
WinMultiprocess-based tests are not compatible with this test launcher
or with the Swarming test design, and must be disabled when
CRASHPAD_IN_CHROMIUM is set. This is covered by
https://crashpad.chromium.org/bug/205.
CRASHPAD_IN_CHROMIUM is never defined during Crashpad’s own standalone
build, it’s only defined when building in Chromium.
Change-Id: I969c5d376f86ab4b3f4cc85c97d4452b53b35063
Reviewed-on: https://chromium-review.googlesource.com/740988
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
As mentioned at
https://chromium-review.googlesource.com/c/chromium/src/+/735820#message-e8b199498d8b850f2612c46648069d819dd47517,
the typical Windows behavior for symbolic links requires administrative
privileges.
Symbolic links are available to non-administrators in Windows 10.0.15063
and later (1703, Creators Update), provided that developer mode has been
enabled and SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE is passed to
CreateSymbolicLink(). See
https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/.
This adds SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE to uses of
CreateSymbolicLink(), and creates test::CanCreateSymbolicLinks() to
determine whether symbolic link creation is possible. Tests that
exercise symbolic links are adapted to gate all symbolic link operations
on this test.
Test: crashpad_util_test DirectoryReader.*:Filesystem.*
Change-Id: I8250cadd974ffcc7abe32701a0d5bc487061baf0
Bug: crashpad:
Reviewed-on: https://chromium-review.googlesource.com/739472
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
As the crashing function runs inside GoogleTests SEH handler,
I think it, or something in the OS may be interfering with the
exception dispatch somehow. In any case, if this flakes, we have
no one to blame but ourselves.
Bug: crashpad:773569
Change-Id: I2230d02735be4a71b688e1acc94d0ae6f082d9bd
Reviewed-on: https://chromium-review.googlesource.com/739464
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org>
Rather than having the 64-bit build assume that it lives in
out\{Debug,Release}_x64 and that it can find 32-bit build output in
out\{Debug,Release}, require the location of 32-bit build output to be
provided explicitly via the CRASHPAD_TEST_32_BIT_OUTPUT environment
variable. If this variable is not set, 64-bit tests that require 32-bit
test build output will dynamically disable themselves at runtime.
In order for this to work, a new DISABLED_TEST() macro is added to
support dynamically disabled tests. gtest does not have its own
first-class support for this
(https://groups.google.com/d/topic/googletestframework/Nwh3u7YFuN4,
https://github.com/google/googletest/issues/490) so this local solution
is used instead.
For tests via Crashpad’s own build\run_tests.py, which is how Crashpad’s
own buildbots and trybots invoke tests, CRASHPAD_TEST_32_BIT_OUTPUT is
set to a locaton compatible with the paths expected for the GYP-based
build. No test coverage is lost on Crashpad’s own buildbots and trybots.
For Crashpad tests in Chromium’s buildbots and trybots, this environment
variable will not be set, causing these tests to be dynamically
disabled.
Bug: crashpad:203, chromium:743139, chromium:777924
Change-Id: I3c0de2bf4f835e13ed5a4adda5760d6fed508126
Reviewed-on: https://chromium-review.googlesource.com/739795
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
This introduces the Annotation object, used to declare typed
annotations, and the AnnotationList object, used to reference these. The
AnnotationList is referenced by the CrashpadInfo structure. Currently
nothing reads these.
The AnnotationList implements a lock-free linked list, into which
Annotation objects are added exactly once, when they are first set.
Clearing an Annotation merely marks it internally as such, rather than
removing it from the list.
Bug: crashpad:192
Change-Id: I72414b1f83d624c4ae323e09ecea8cfb69a68c5e
Reviewed-on: https://chromium-review.googlesource.com/547135
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
There’s no reason for ProcessReader to own its ProcessMemoryLinux via
std::unique_ptr<>.
This was discovered in a trunk Clang build, during which a
-Wdelete-non-virtual-dtor warning was produced (since Clang r312167).
The warning is not produced by earlier Clang versions or by GCC because
the “delete” happens in a system header, <memory>, when performed by
std::unique_ptr<>. Although ownership via std::unique_ptr<> is no longer
used, ProcessMemoryLinux is marked “final” because it ought to be.
In file included from ../../snapshot/linux/process_reader.cc:15:
In file included from ../../snapshot/linux/process_reader.h:21:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../include/c++/7.2.0/memory:80:
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../include/c++/7.2.0/bits/unique_ptr.h:78:2: error: delete called on non-final 'crashpad::ProcessMemoryLinux' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
delete __ptr;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.2.0/../../include/c++/7.2.0/bits/unique_ptr.h:268:4: note: in instantiation of member function 'std::default_delete<crashpad::ProcessMemoryLinux>::operator()' requested here
get_deleter()(__ptr);
^
../../snapshot/linux/process_reader.cc:169:16: note: in instantiation of member function 'std::unique_ptr<crashpad::ProcessMemoryLinux, std::default_delete<crashpad::ProcessMemoryLinux> >::~unique_ptr' requested here
ProcessReader::ProcessReader()
^
1 error generated.
Change-Id: Ibe9671db429262aca12bbfdf457c8f72cad2f358
Reviewed-on: https://chromium-review.googlesource.com/738530
Reviewed-by: Dave Bort <dbort@google.com>
Commit-Queue: Mark Mentovai <mark@chromium.org>
P0012R1, accepted into C++17, makes a function’s “noexcept” (or
“throw()”) specification part of its signature. GCC 7.2 provides a
warning, -Wnoexcept-type, that is triggered when a function pointer type
with an exception specification is used in pre-C++17 code in such a way
as to pose an ABI incompatibility with C++17 code.
https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/C_002b_002b-Dialect-Options.html#index-Wnoexcept-type
Warnings are of the form:
In file included from ../../util/misc/from_pointer_cast_test.cc:15:0:
../../util/misc/from_pointer_cast.h:64:1: error: mangled name for ‘typename std::enable_if<(std::is_pointer<From>::value && std::is_pointer<_Tp>::value), To>::type crashpad::FromPointerCast(From) [with To = const volatile void*; From = void* (*)(long unsigned int) throw ()]’ will change in C++17 because the exception specification is part of a function type [-Werror=noexcept-type]
FromPointerCast(From from) {
^~~~~~~~~~~~~~~
../../util/misc/from_pointer_cast.h:64:1: error: mangled name for ‘typename std::enable_if<(std::is_pointer<From>::value && std::is_pointer<_Tp>::value), To>::type crashpad::FromPointerCast(From) [with To = volatile void*; From = void* (*)(long unsigned int) throw ()]’ will change in C++17 because the exception specification is part of a function type [-Werror=noexcept-type]
In Crashpad, this warning is triggered by the two FromPointerCast<>()
variants that accept function pointer “From” arguments. This occurs when
using glibc as the standard C library, since glibc declares its
functions as “throw()”. FromPointerCast<>() is used with pointers to
glibc functions such as malloc() and getpid().
The warning is disabled for the FromPointerCast<>() variants that would
trigger it. The warning is not useful or actionable in this internal
Crashpad code where ABI changes due to language version (including
mangling changes) are not a concern.
Clang 4.0 has the similar -Wc++1z-compat-mangling option (also available
as -Wc++17-compat-mangling and the GCC-compatible -Wnoexcept-type in
Clang 5.0) but it is not triggered by this pattern.
Change-Id: Id293db3954be415f67a55476ca72bfb7d399aa3b
Reviewed-on: https://chromium-review.googlesource.com/738292
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This reverts 55133d332b6c and adds a broken dummy SafeTerminateProcess()
for cross builds instead. It’s similar to 2f4516f93838, which was for
CaptureContext().
This upstreams
af5f31ed61
(slightly modified).
The dummy implementation in the “broken” file affords no protection
against third-party code patching TerminateProcess() badly. The “broken”
file is not used by Crashpad anywhere at all, and is only used by
Crashpad in Chromium during a cross build targeting Windows without the
benefit of Microsoft’s ml.exe assembler. Strictly speaking, this file
does not need to be checked in to the Crashpad repository, but since
Chromium needs it to unblock its not-production-ready cross build for
Windows, it’s being landed here to avoid Chromium’s copy of Crashpad
appearing as modified or “dirty” relative to this upstream copy.
Bug: chromium:762167, chromium:777924
Change-Id: Iba68c0cab142fbe9541ea254a9a856b8263e4c70
Reviewed-on: https://chromium-review.googlesource.com/735078
Reviewed-by: Mark Mentovai <mark@chromium.org>
An #include was missing from 59c5d848e5c5.
Change-Id: Ib0074aefbc8dc231a097c2edd3ef3047f5cff32e
Reviewed-on: https://chromium-review.googlesource.com/734232
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
From edf4dde8ae10: one #include was missing, and another was sorted
incorrectly.
Change-Id: I77825f3909ae81ebf965f8c5527b44c95af29945
Reviewed-on: https://chromium-review.googlesource.com/734229
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
While the kernel formats device major and minor numbers as %02x:%02x,
they are not restricted to 8 bits apiece. Crashpad was requiring that
the hexadecimal representations be exactly two characters, rather than
at least two characters.
The proper way to reconstruct a dev_t from major and minor numbers in
user space is to use makedev() from <sys/sysmacros.h>. MKDEV() from
<linux/kdev_t.h> interfaces with an older (pre-Linux 2.6) format which
actually did use 8-bit major and minor numbers. makedev() places the
major number at bits 8-19, and splits the minor number into two groups
at bits 0-7 and 20-31. This is the correct user space view of device
numbers. (Note that this is distinct from the kernel’s view: the kernel
uses MKDEV() from a distinct internal <linux/kdev_t.h> which places the
minor number at bits 0-19 and the major number at bits 20-31.)
Bionic for 32-bit platforms uses a 32-bit user space dev_t while a
64-bit version is used elsewhere, and a comment in Bionic’s
<sys/types.h> calls this a “historical accident”. However, due to the
kernel’s use of only 32 bits for device numbers, this accident does not
have any ill effect.
Bug: crashpad:30
Test: crashpad_util_test, crashpad_snapshot_test
Change-Id: Ic343454393d7399f598f9eba169a9e5f5630e601
Reviewed-on: https://chromium-review.googlesource.com/733863
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This upstreams
fc1ac734b0
(slightly modified).
This dummy implementation is not used by Crashpad anywhere at all, and
is only used by Crashpad in Chromium during a cross build targeting
Windows without the benefit of Microsoft’s ml.exe/ml64.exe assembler.
Strictly speaking, this file does not need to be checked in to the
Crashpad repository, but since Chromium needs it to unblock its
not-production-ready cross build for Windows, it’s being landed here to
avoid Chromium’s copy of Crashpad appearing as modified or “dirty”
relative to this upstream copy. (Even though this file is really dirty.)
Bug: chromium:762167
Change-Id: Ibfdc316c1f5fe81d4b3a1d86f4032adccac467e5
Reviewed-on: https://chromium-review.googlesource.com/734102
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
This is a step towards a database which gives out FileReaders in Report
objects instead of FilePaths.
Change-Id: I59704da65fc5521e5d47019416bf962c215d13bc
Reviewed-on: https://chromium-review.googlesource.com/721978
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This change also adds functions to create directories, remove files and
directories, and check for the existence of files and directories.
Change-Id: I62b78219ae2b277d6976d2d90ec86fcabd0ef073
Reviewed-on: https://chromium-review.googlesource.com/696132
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Only a Linux implementation for now, but similar code for other
OSes can move behind it in the future.
Bug: crashpad:196
Change-Id: I05966db1599a9cac3146d2a3d964e7ad8629d616
Reviewed-on: https://chromium-review.googlesource.com/685408
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Dave Bort <dbort@google.com>
The Crashpad representation of the TEB struct had an incorrect PVOID
reserved of len 397. This should be 402 once we calculate that the other
members occupy 40/80 (32 vs 64) bytes.
Wine has a well documented copy
4df0162caf/include/winternl.h (L309)
that shows the offsets TlsSlots should be at. This patch makes that
change. TlsSlots is now at offset 3600 on 32-bit and offset 5248 on
64-bit.
Change-Id: I4ea4c44b1e49d3ea02d433f386f164703a373dab
Reviewed-on: https://chromium-review.googlesource.com/717040
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Update mini_chromium to 7d6697ceb5cb5ca02fde3813496f48b9b1d76d0c
47ff9691450e Switch the language standard to C++14
7d6697ceb5cb Remove base/memory/ptr_util.h and base::WrapUnique
base::WrapUnique and std::make_unique are similar, but the latter is
standardized and preferred.
Most of the mechanical changes were made with this sed:
for f in $(git grep -l base::WrapUnique | uniq); do
sed -E \
-e 's%base::WrapUnique\(new ([^(]+)\((.*)\)\);%std::make_unique<\1>(\2);%g' \
-e 's%base::WrapUnique\(new ([^(]+)\);%std::make_unique<\1>();%g' \
-e 's%^#include "base/memory/ptr_util.h"$%#include <memory>%' \
-i '' "${f}"
done
Several uses of base::WrapUnique that did not fit on a single line and
were not matched by this sed were adjusted manually. All #include
changes were audited manually, to at least move <memory> into the
correct section. Where <memory> was already #included by a file (or its
corresponding header), the extra #include was removed. Where <memory>
should have been #included by a header, it was added. Other similar
adjustments to other #includes were also made.
Change-Id: Id4e0baad8b3652646bede4c3f30f41fcabfdbd4f
Reviewed-on: https://chromium-review.googlesource.com/714658
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
This corresponds to Windows 10 version 1709 (Fall Creators Update,
“Redstone 3”).
While compiling util/win/nt_internals.cc:
…\crashpad\crashpad\util\win\nt_internals.cc(22): error C2371: 'CLIENT_ID': redefinition; different basic types
c:\program files (x86)\windows kits\10\include\10.0.16299.0\um\winternl.h(83): note: see declaration of 'CLIENT_ID'
The CLIENT_ID structure, which should have been part of the SDK to begin
with, has been added. Provide a compatible definition in <winternl.h>.
Bug: chromium:773476
Change-Id: Iafc77f8cffd06d1194fc909bad587f1ffd1687a2
Reviewed-on: https://chromium-review.googlesource.com/711415
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: Iaa8bfae1c325735c320e502698a61e4851777649
Reviewed-on: https://chromium-review.googlesource.com/685407
Commit-Queue: Dave Bort <dbort@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: I71323b29e46208b3992055722e4622d79409c44c
Reviewed-on: https://chromium-review.googlesource.com/685406
Commit-Queue: Dave Bort <dbort@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
readdir_r() is a thread-safe version of readdir(), although readdir() is
not particularly thread-unsafe with most usage. The dirent* returned by
readdir() can only be invalidated by a subsequent readdir() or
closedir() on the same DIR*. In typical usage, where a returned dirent*
is used exclusively within a loop around readdir() and is not expected
to outlive that loop, there are no lifetime or thread-safety issues with
the use of readdir().
readdir_r() may be harmful in certain situations because its buffer is
not explicitly sized, and attempts to provide a suitably sized buffer
dynamically (which, incidentally, our code did not do) are subject to a
race condition.
https://elliotth.blogspot.com/2012/10/how-not-to-use-readdirr3.htmlhttps://womble.decadent.org.uk/readdir_r-advisory.html
glibc has already deprecated readdir_r(), and all Linux (including
Android) code was already using readdir(). This change eliminates
variant codepaths. It delegates buffer sizing (which we weren’t doing
correctly) to the C library, which also has more options at its disposal
to avoid races in sizing that buffer.
Change-Id: I4fca8948454116360180ad0017f226d06727ef81
Reviewed-on: https://chromium-review.googlesource.com/705756
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Chrome (and therefore mini_chromium) has always built with
_FILE_OFFSET_BITS=64, which is intended to enable a 64-bit off_t even
for 32-bit programs. However, support was never present in Android with
NDK traditional headers.
The new NDK unified headers do recognize _FILE_OFFSET_BITS=64 and enable
a 64-bit off_t, along with corresponding functions and system call
wrappers. However, no mmap() wrapper supporting a 64-bit off_t for
32-bit programs was available prior to API 21 (Android 5.0 “Lollipop”),
so when targeting older API levels, NDK headers do not proivde an mmap()
declaration. This avoids silently truncating 64-bit off_t values to 32
bits. NDK r15b did make such an mmap() wrapper available
(https://android.googlesource.com/platform/bionic/+/785b249df024), and
it did silently truncate, but this was removed for r15c
(https://android.googlesource.com/platform/bionic/+/00fedf587917).
How should this work if _FILE_OFFSET_BITS is set to 64 and recent
unified headers are in use?
The strategy employed here is to provide an mmap() declaration in
compat, with a 64-bit off_t. That mmap() will call to Bionic’s mmap64()
wrapper if available (it’s available since Android 5.0 “Lollipop”). If
unavailable, it implements the same logic that mmap64() does directly,
which predominantly involves calling the __mmap2() system call. Bionic
has always provided wrappers for __mmap2().
Additional reading:
https://android.googlesource.com/platform/bionic/+/0bfcbaf4d069/docs/32-bit-abi.md#is-32_bit-1https://github.com/android-ndk/ndk/issues/442
Bug: crashpad:30
Change-Id: I98c10e2eda773cb6f3d9eb8db9b8bfde43c885e7
Reviewed-on: https://chromium-review.googlesource.com/705674
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
One more for Windows too: compat/win/sys/time.h.
Bug: crashpad:30
Change-Id: I1f11933a5937a65db10774d0710d44dc85f8586a
Reviewed-on: https://chromium-review.googlesource.com/705278
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
end_to_end_test.py was producing these error messages 6 times (32-bit
x86) and 7 times (x86_64) per run:
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR file_io.cc:89] ReadExactly: expected
36, observed 0
These messages were being produced by crashpad_handler, in the
LoggingReadFileExactly() call in
ExceptionHandlerServer::ServiceClientConnection().
sizeof(ClientToServerMessage) is 36. crashpad_handler believed that a
client was connecting, but the client sent no data.
This was tracked down to the use of os.path.exists() in
end_to_end_test.py to wait for crashpad_handler’s named pipe to be
created. Checking named pipe existence in this way appeared to be a
client connecting to the the pipe server in crashpad_handler, although
of course no real client was connecting and no message was forthcoming.
I found that running “dir” on the named pipe’s path produced the same
result.
Using WaitNamedPipe() is an alternative that can be used to signal when
the named pipe’s path exists. Furthermore, it tests more than mere
creation, it indicates that the pipe server has become ready to service
clients. That’s not necessary in this case as proper clients already
need to deal with this on their own, but checking it in
end_to_end_test.py should be harmless.
Test: end_to_end_test.py
Change-Id: Ida29a3d2325368f58930cdf8fb053449f621ea52
Reviewed-on: https://chromium-review.googlesource.com/703276
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
|ranges| is a coalesced list of committed and accessible memory ranges
trimmed to reflect only those that overlap |range|. |range| is only
fully unreadable if |ranges| is empty. If |ranges| contains more than
one element, it indicates that |range| is sparse (since |ranges| is
coalesced, there must be a “hole”). This should be treated as partially
unreadable, the same as when |ranges[0]| doesn’t begin or end where
|range| does.
Test: self_destroying_test_program.exe (via end_to_end_test.py)
Change-Id: I55fc2b201089113f2b07395e352704b99d212801
Reviewed-on: https://chromium-review.googlesource.com/702535
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
In the 64-bit version of the structure, padding is needed between
ShowWindowFlags and WindowTitle.
The CurrentDirectores (yes, that’s how it’s spelled) members would have
been interpreted incorrectly because STRING was defined incorrectly. The
length fields are USHORT, not DWORD. In the 64-bit version of the
structure, a padding member ensured that the structure was at least the
correct size. In the 32-bit version of the structure, this caused the
structure size to be inflated, so all but the first CurrentDirectores
element and any struct member that followed would appear at incorrect
offsets, and the overall struct size being read was larger than
appropriate.
This resolves crashpad_handler logging (usually) three errors while
handling a 64-bit process crash, such as:
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR process_info.cc:632] range at
0x780f24de00000000, size 0x275 fully unreadable
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR process_info.cc:632] range at
0x780f24fe00000000, size 0x275 fully unreadable
[pid:tid:yyyymmdd,hhmmss.mmm:ERROR process_info.cc:632] range at 0x0,
size 0x275 fully unreadable
Bug: crashpad:198
Test: end_to_end_test.py
Change-Id: I1655101de01cf46b4b50eda45a11f8d0f3bca8b3
Reviewed-on: https://chromium-review.googlesource.com/701736
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Update buildtools to f6d165d9d842ddd29056c127a5f3a3c5d8e0d2e3
df898926221f Fix "Updating clang-format" wiki link
99df659c6e57 Update clang-format binaries and scripts for all platforms
a2ace8b013bd Revert "Update clang-format binaries and scripts for all
platforms."
c302711306f1 Update clang-format binaries and scripts for all platforms
(take 2)
97eb757d4590 Revert "Update clang-format binaries and scripts for all
platforms (take 2)."
4ca3556cb709 Dependancy check for .proto files is added
ce4239e50192 Revert "Dependancy check for .proto files is added."
cf493f8b1ae5 Update the buildtools README with more information
7e53759cf4e5 Update clang-format binaries and scripts for all platforms
94cdccbebc7a Update clang-format binaries and scripts for all platforms
a114b81a60af Proto checkdeps added ignoring partial paths
b3771b1935ea Update clang-format binaries and scripts for all platforms
95345544a058 Roll gn d8754536ca..5dd3a2137b (r446079:r456385)
e6b510a9daf8 Roll gn 5dd3a2137b..c3cb4770dc (r456385:r456551)
d30744485416 Move DEPS file docs into a README.md
88811f48a6b7 Roll gn c3cb4770dc..71aff04f37 (r456551:r464797)
64a8bb0b92ba Roll gn 71aff04f37..4e41fe9e35 (r464797:r465181)
98f00fa10dba Roll gn 71aff04f37..7c9bd5f020 (r464797:r465654)
896bb2648fce Sanitizers: Roll in 16 months of libcxx and libcxxabi
changes
57c94085e893 libc++: change default symbol visibility to hidden
0c52ccb37d2e libc++(abi): Remove *.gyp files
104574186c17 Roll libcxx and libcxxabi
3b8de5198d78 Statically link libc++ on non-component builds
7d436d145657 Make libc++ a shared_library on sanitizer builds
31d4daad5d9a Make libc++abi a static library on mac
6870c1817e36 Merge configs needed to disable libstdc++ in
third_party/libc++
b7a35318665f Remove some no-longer-needed workarounds in libc++abi
b53a03df323e Fix typo in libc++abi
ee9c3a70889f Update clang-format binaries and scripts for all platforms
9a65473a7e8f Make operator new/delete symbols have default visibility
8921af0a0c50 Fix libc++ ARM build
b92ff913082a Remove stdlib_new_delete.cpp from libc++abi
5012a0f43c56 Remove //buildtools/third_party/libc++:link_helper
7f2cacbbe274 Only link against libunwind when the current toolchain is
ARM
38477c2e103c Roll gn 7c9bd5f020..bedb4b202b (r465654:r481731)
f3de35865149 Roll gn 7c9bd5f020..bb4aa4a793 (r465654:r482028)
7a6ba5710007 Roll gn 7c9bd5f020..c5323f29dd (r465654:r482038)
6d2512767b06 Fix linux gn.sha1
1dcd1bdbe934 Ensure libunwind symbols are hidden
3d2d34dde457 Only enable shared libc++ for ASan, MSan and TSan builds
b43e28d067fa Move c++ configs from buildtools to build/config/c++
[buildtools-side change]
c2827ae578be Revert "Only enable shared libc++ for ASan, MSan and TSan
builds."
5ad14542a6a7 Move libcpp_is_static into //build/config/c++ [buildtools
changes]
afba46cd46ef Roll gn c5323f29dd..b1573039b7 (r482038:r486916)
27f253f9a92f Roll gn c5323f29dd..b1573039b7 (r482038:r486916)
66439712f75e Upload buildtools changes to Gerrit by default
335548b45d17 fuchsia: Build libunwind on Fuchsia too
838f29772283 Revert "Roll gn c5323f29dd..b1573039b7 (r482038:r486916)"
d511e4d53d6f Omit compilation of cxa_thread_atexit.cpp on Linux
275b8c481615 Only disable export of libunwind symbols when libcpp is
static
abaf2ba54948 Don't leak libc++ symbols across modules
f4bcb07d88cd Merge "Don't leak libc++ symbols across modules"
ceb050498e43 Roll gn c5323f29dd..b1573039b7 (r482038:r486916) (RELAND)
f90f6a5af3e8 Roll gn b1573039b7..8d5e7fb9a6 (r486916:r494532)
d36e2d975b59 Roll gn 8d5e7fb9..c9126ec9 (r494532..r495172)
5af0a3a8b898 Roll gn ab2028c1af..d44036c154 (r495181:r495657)
84fdc9924305 Roll gn ab2028c1af..08098c4188 (r495181:r495718)
cbc33b9c0a9d Roll gn 7a152fc8b6..fc561c033e (r495682:r498655)
26b7e66950e9 Roll gn fc561c033e..cf557ff016 (r498655:r502818)
f6d165d9d842 Roll gn cf557ff016..87530f977a (r502818:r503394)
Update gtest to 7b6561c56e353100aca8458d7bc49c4e0119bae8
ff7263226a13 Fix typo in AdvancedGuide.md
62b167e40981 Fix: Markdown in V1_7_Primer.md
407b0aaf856a Add missing headers to Xcode framework target
d254052f7fe6 Update C++ language and library settings to match SDK
projects
c88525f3f0d9 added related open source project
1d1b306dd4a4 made capitalization more consistent with other projects
266a185a528b remove duplicated words
a7ab054f2b77 Issue 709: Fix Cmake policy 0048
08d76be4cc59 Performance fixes reported by cppcheck
1cff1460d191 Add links to IRC channel and Google Group
68f19facc26a Moved the ignoring of *.pyc files to top level for also
covering googlemock python scripts
82396f2d544a Update Primer.md
f700442db332 Clarifying language
194e3c810299 Fix WhenSorted() documentation example
7fbc5986cc49 enable null detection on Solaris Studio 12u4+
0b6d9475170a Update Primer.md
96977463eeff Fix the link to the float comparison article
21ccd6108dc8 update README.md with tiny-dnn
bef93f32c1d2 Fix small typo SeArrayArgument
75b683df4695 Fix or condition typo ( '|' -> '||' )
0fdf78b9667b Fix a few documentation nits in the mock dummies guide
3ec005239feb Fix a typo
53c478d639b8 Annotate ColoredPrintf with the format attribute and fix
bugs
2eaab21554e9 added link to sample 6 in the documentation of typed test
9655b9f53da3 fix typo /GTEST_ATTRIBUTE_UNUSED/GTEST_ATTRIBUTE_UNUSED_/
51d92b2ccb97 Replace html entities with their equivalents
fa892afcb953 Wrong version reported (1.7.0 should be 1.8.0)
b74070cfd90c googlemock version must be changed as well
51143d5b6252 Merge pull request #996 from srz-zumix/fix-error
ba638689e40f Remove /tree/ from Readme.md links
aa148eb2b7f7 Merge pull request #1029 from google/BillyDonahue-patch-3
a2451c74038f Fixed some typos
518e0519ca49 Minimal changes to fix build failures on Microsoft Visual
Studio 2015
b2521c890a8c Update README.md
b6c4d434dbf4 Update README.md
81bc87652d40 Added explicit gtest library dependency
5ff680577d3e Again rewrote everything
a6418a4dd19e Merge remote-tracking branch 'github_google/master' into
master-github_frosteyes
611e8a99de2b Changes to make TempDir() public
69c6db249af5 Merge pull request #1077 from gennadiycivil/make-temp-dir-
public-issue-1076
0ad83afdaa33 Merge pull request #1034 from dankegel/master
b7cf4414d9c2 Pick up GTEST_API_ definition in gtest/internal/custom
/gtest-port.h
fac0dfbe738e Add NetBSD support
887d569eb0ba Merge pull request #965 from davidben/format-attr
8c7f93fedaca Merge pull request #1078 from pwnall/gtest_api_port
294f72bc773c Merge pull request #725 from donhuff/xcode-headers
6c0c8a7ea5e2 Fixing typo in documentation
b2cbbec04c14 Fix -Wmicrosoft-cast warnings when using gtest with clang
on Windows
09fd5b3ebfaa Use std::string and ::string explicitly in gtest and gmock
code
e1466ba4fe56 Gender-neutralize comments in gtest.h
2a5d67ccaded Merge pull request #1092 from nico/comment
078d5d930ad8 Merge pull request #1090 from nico/typo
7cc548dcbf26 Merge pull request #1089 from nico/stdstring
76491b74de24 Changes add ability to overwrite TempDir(), issue
https://github.com/google/googletest/issues/1093
59c795ce08be Merge pull request #1096 from gennadiycivil/add-ability-
for-custom-temdir-1093
42bc671f47b1 Merge pull request #1091 from nico/wmicro
dca9d5fc51ec Remove unnecessary 'the'
00ed9b566ee2 Fixing float comparison broken link
a44bbab9bdb2 Merge pull request #1113 from jorgehb/patch-1
c2d90bddc6a2 Create gtest-internal.h
24054ff07378 Fixed misspelling in assertion message
41ad243d930e Fix typo in gmock-actions.h
38ec2a1df69f docs: fix broken link from dummies guide to cook book
649aa2955238 Fix background color in ColoredPrintf
365df11427eb Add background_mask instead of using magic number
19cace28735c Colouring in help text
271fb8ff5ed8 Fix a problem when bg_color == fg_color
f050aff0c202 Merge pull request #1129 from Chris-Sharpe/master
4bab34d20842 Merge pull request #1081 from krytarowski/netbsd-1
26b7ac3b1888 Add helper functions for text color calculation
6a75e3c169d2 Remove unnecessary const
280b22708c01 Fix table formatting
1dde1eed381a Fix typos too s/destoyed/destroyed/
f20797bd8dd1 Same fixes for "current" version
2fcbc0c1ab48 Remove silly claim that C++ lacks lambdas
0ffd8629c9ee More tables that did not render correctly
4568374a6e84 Fixes a typo in FAQ.md
1b39c3dcdf77 Add gtest-parallel to open-source projects
a6b146dfddb9 Fix assumption for foreground bit offset
2960aa54e219 Remove duplicate code
7c3496c4ae8b Merge pull request #1126 from junr03/fix-broken-link
b9427ca47731 Merge pull request #1143 from nyibbang/patch-1
5c279131db71 docs: fix broken link
75bb586b60e5 Merge pull request #1158 from junr03/fix-link
6527ee0624b2 Merge pull request #1107 from lipk/patch-1
e5b88b227e6a Merge pull request #1137 from coryan/master
f6ac9a30a4ba remove obsolete reference to SVN trunk
b3908406e65b remove doc of former versions
58b42274c0fc remove obsolete reference to SVN trunk and fix link to pump
manual
6b8967748151 remove doc of former versions
ec19d455bc12 fix links to Google C++ Style Guide
623616a50a32 Fixed typo
f08b1c350a66 Merge pull request #1165 from aninf-wo/hethi/fix-doc-links
7755e5d241d1 Merge pull request #1167 from krizalys/fix-typo
f63e2a14a21a WIP
b3edada29070 WIP
e2e37c94320b Merge pull request #1147 from pbos/gtest_parallel_link
6615f7df11c8 WIP
aa31cb67c2a9 WIP
d966d5fbe005 Merge pull request #968 from
nicolacavallini/link_typed_test_docs
032baa0da319 Merge pull request #998 from dawikur/patch-1
73f321590a7f Merge pull request #962 from klimkin/klimkin-patch-typo
0cb2eeb5f18e Merge pull request #764 from flyd1005/wip-fix-typo
683fcf596947 Merge pull request #782 from Manozco/709-cmake-policy-
project-version
e1f3d8d17549 Merge pull request #671 from mehagar/patch-1
d655d0989db0 Merge pull request #867 from marzojr/patch-1
b68f1e769c7a Fix policy issue with old cmakes
fa388e9f94e2 Merge pull request #1170 from
Manozco/1169_fix_old_cmake_issue
28bb854cefba Merge pull request #1042 from danilcha/patch-1
568958e94000 Fixed cmake policy issue
50f3bafb1aef Merge pull request #1172 from joelypoley/joelypoley-patch-1
ca102b1f9d1f Merge pull request #1030 from vpfautz/master
deb99a9d268b Use wider types to prevent unsigned overflow diagnostics
aac403334d57 Correct some typos in a comment
212f4d793e5f fix small typo in comment
0f702cebb0e6 add note about different definitions of Test Case
52a9c14c48ed Samples changes upstreaming
aecea3842c3a Samples changes upstreaming
eb261b4dce67 Merge pull request #1176 from aninf-wo/hethi/typo
7890f7215e35 Merge pull request #1180 from aconverse/master
22d1a7a1a70a Merge pull request #909 from AsturaPhoenix/patch-1
f8d909d095ec Merge pull request #1173 from shlomif/correct-typo
40aa72c7dcfd Merge pull request #675 from theHacker/master
6ae9cc7894ad Merge pull request #925 from edgarriba/patch-1
8815087cfa12 WIP
c75de0aa924d WIP, windows testing
a2006b2ab034 WIP, windows testing
40a909b4e543 WIP, windows testing
e66b6bc86805 WIP, win testing
ab8f2b0d09eb WIP, win testing
aadf53d2a2c1 Merge pull request #1122 from chromy/upstream-146491438
461713fec460 Merge pull request #1123 from chromy/upstream-141765019
e022dcded846 Merge branch 'master' into hethi/remove-old-docs
67fcf00703aa Punctuation
b322d1d91d92 Merge pull request #1185 from eduherminio/master
33edcaed8995 be more specific on Test Case
ac885f3ab2a5 WIP
4f5c01b4c969 Added googlemock tests
5a5e3c17bbec Added googlemock tests
484ec91c2274 Infinite Loop when calling a mock function that takes
boost::filesystem::path as parameter #521: Add is_same type
trait
71ca4bae1085 Infinite Loop when calling a mock function that takes
boost::filesystem::path as parameter #521: Add is_same type
trait and prevent infinite loops for recursive containers
2606c7a670fd Merge branch 'master' of github.com:Dani-Hub/googletest
66a036959f09 WIP
0e8e0e07d6c4 Fix library install destinations
c09e9e646de8 clarify distinction regarding Test Case
75f0723c4522 Merge pull request #1178 from aninf-wo/hethi/testsuite-hint
6e1970e2376c Adding a flag option to change the default mock type
b98e30b42704 Initial Revision, review 164634031
cb5b05436dfc Added Copyright
854b28f19903 Minor style fixes
dc7214f222a8 say "former version" instead of "released version"
4e284ee657ff Update WORKSPACE
07bba78a5fc9 Merge branch 'master' of github.com:Dani-Hub/googletest
b11b2e403e9d Merge branch 'master' of github.com:Dani-Hub/googletest
c3f65335b79f Addressing comments
97a8498873ba Addressing Comments
e5781865289e Merge pull request #1191 from gennadiycivil/master
cfab28d59448 Merge pull request #1192 from eduherminio/master
1579064390bd Merge pull request #1127 from zulkarnine/patch-1
c822c85659d5 Merge pull request #1164 from aninf-wo/hethi/remove-old-
docs
4283f264d6ee Merge pull request #957 from sglass68/sim
c523461f3ae8 Merge pull request #937 from srz-zumix/fix-gtest-port-typo
c81be0f6fc06 Merge pull request #871 from tommyleo2/master
e3bd4cbeaeef Merge pull request #1160 from mwoehlke-kitware/honor-
lib_suffix
e533ff4bd33c Merge pull request #926 from bartshappee/patch-1
052df998c46b Merge pull request #749 from nholthaus/patch-1
c7f4849c0b71 Merge pull request #919 from delaitre/patch-1
9816b96a6ddc Merge pull request #857 from KindDragon/patch-1
673c975a963f Merge pull request #905 from iignatev/master
8604c4adac40 Add support for pkgconfig
9cacce4e5ca0 Add documentation for pkg-config
8f04622cc150 Use GTEST_LOG instead of printf
0c3c81116453 Merge remote-tracking branch 'origin/master' into
user_logger_instead_of_printf
e0fc65c5fbfe Merge pull request #1197 from SoapGentoo/pkgconfig
ca76206f4268 Removed extra colon in error log
a4121dd54b58 Change AppVeyor Status Badge to point to new AppVeyor
Project Location
3f3a3ada2022 Change AppVeyor Status Badge to point to new AppVeyor
Project Location
08b1a1f73cec Merge branch 'master' into master
5ed471caec6f Merge pull request #1204 from gennadiycivil/master
9469fb687d04 Fix problem installing gtest when gmock enabled
5b4166f05fbc Add function name to exception if there's no default action
a2803bc37daf Handling invalid flag values
b7e8a993b412 Merge pull request #1205 from mwoehlke-kitware/fix-gtest-
install
8f233a74ebe1 Merge branch 'master' into methodname-in-exception
1fe692ce49f1 Update README.md
1183503d11f9 Merge branch 'master' into methodname-in-exception
95f18d99383c adds test for NiceMock with unknown return value
cc99900036ae Fix test if exceptions are not supported
36777251c077 Switch return type to class without default constructor
b0ed43e72447 Change tabs to spaces in test case
5518a1d350d5 Adding CMake visibility policy setting
780bae0facea Merge pull request #1215 from henryiii/patch-1
35737ac7ac1a Merge branch 'master' into methodname-in-exception
026735daf34c Proposing these changes, please review
3cf65b5d86d4 Added "explicit" as per compiler suggestion
1ee807965158 Remove unused variable
675686a139a7 Merge pull request #1206 from ShadowIce/methodname-in-
exception
96f7ba83cb22 Merge branch 'master' into wrong-version-reported
8304d06199bd Merge branch 'master' into master
966b549c8803 Support ref-qualified member functions in Property()
6404d45a9252 Merge branch 'master' of github.com:Dani-Hub/googletest
fa3bb1a77973 Merge branch 'master' of github.com:Dani-Hub/googletest
d93ce9d6fb8e Merge branch 'master' of github.com:Dani-Hub/googletest
f8514b8da353 Merge branch 'master' of github.com:Dani-Hub/googletest
88269cd365fa Support x64 configuration for old VS2010 projects
863e02644b57 Merge pull request #1220 from romkatv/property-matcher
f4abce46093d Merge branch 'master' into vs-projects-fix
ebc7b01d8956 Merge branch 'master' into master
c38baf985831 Merge pull request #1219 from KindDragon/vs-projects-fix
87327b12e9b1 Merge branch 'master' into master
eabd5c908d27 Merge pull request #1186 from Dani-Hub/master
45287f3dffa4 Remove gtest VS2005 projects
cb8ebf5c9a04 Support x64 configuration for old VS2015 projects
f25921565bbf Merge pull request #1221 from KindDragon/vs-projects-fix2
a7eeb6971fdf Merge branch 'master' into vs-projects-fix3
b43bfcf49166 Merge pull request #1222 from KindDragon/vs-projects-fix3
c00373320db8 Merge branch 'refs/heads/master' into flag-default
fa5d3b3845aa Applying lint checks from upstream google3
daaed2b6cb7b fix typo in comment and string (SetUpTestCase)
b567aadd1b3e remove unused TestCase import
fe760e9c6d92 fix typo: xUnit
96f3745e73d5 Merge pull request #1189 from alyssawilk/flag-default
30c1e00afbc0 Merge branch 'master' into hethi/typo-xUnit
8364718500da remove non-existing gmock_build_samples switch
4a451575895d switch on verbose make
d33861dca6fa run combined build only
29c07aa9dbeb remove Yob's comma mentioned in issue #1105
bb8399e1baf9 use plural verb as mentioned in issue #1105
c3d1d3356046 Detect Fuchsia, and set GTEST_HAS_PTHREAD on
GTEST_OS_FUCHSIA
24ceb4f4f552 Merge pull request #1231 from aninf-wo/heth/travis-verbose-
make
c4126e0463a8 Merge pull request #1232 from aninf-wo/hethi/travis-reduce-
buildjobs
58fd184c7f7a Merge branch 'master' into hethi/typo-xUnit
b46755be30f9 Merge pull request #1229 from aninf-wo/hethi/typo-xUnit
298cd5e9c423 Merge pull request #1233 from aninf-wo/hethi/typo-
issue-1105
5bd8e832177f Merge branch 'master' into hethi/fix-typo
71e2858f3290 Merge pull request #1226 from aninf-wo/hethi/fix-typo
c780e0e2c4e6 Merge branch 'master' into hethi/travis-unused-cmake
d6562b5a57ec Merge branch 'master' into hethi/unused-import
cc246ecb5675 use build type set in .travis.yml
dae044d4b986 use upper-case build type
f0c72bfe09af fix SetUp/TearDownTestCase() in AdvancedGuide
7529c8aa05c2 remove obsolete comment regarding python tests on linux
73d58dd4c838 ask cmake for per-configuration output subdir
5d431c650f9c Merge pull request #1236 from aninf-wo/hethi/issue-1087
-fix-advancedguide
47ad2993b682 Revert "ask cmake for per-configuration output subdir"
4db9a748e3bb Merge branch 'master' into hethi/unused-import
c4ec2ac04de2 Merge branch 'master' into hethi/travis-unused-cmake
9ba7946bde63 create different python based tests for single and multi
configuration build generators
bb1c4af48702 Merge branch 'master' into master
0eb49f4d6b59 Note that it is preferable for Googlers to create a CL
internally first
c4e01616af01 removed internal link ( not allowed in OSS)
fa70b84ab51e Removed "Trivial"
cfcc89a84a6f Merge branch 'master' into hethi/issue-1175-cmake-build-
type
7f8fefabedf2 Merge pull request #1237 from sgraham/update-docs-3
5dde668e0931 AppVeyor MinGW-w64 test build
16bfba08e2c6 Merge pull request #1230 from aninf-wo/hethi/travis-unused-
cmake
d6c46ebd04e2 Merge branch 'master' into hethi/issue-1175-cmake-build-
type
1a8ba67414be Merge branch 'master' into hethi/unused-import
34355c0e870e Merge remote-tracking branch 'github_google/master' into
master-github_frosteyes
a430e9c176bd Merge pull request #865 from frosteyes/master
14cf7f574a4f fix example's comment
84bd72ba3cc7 Merge branch 'master' into hethi/fix-faq-example-comment
7f27d8bdd1f4 Merge branch 'master' into hethi/issue-1175-cmake-build-
type
92e920730dae Merge pull request #1240 from aninf-wo/hethi/fix-faq-
example-comment
e033d8c73de8 change links from former code.google.com to current github
repository
2a720ac1bbd6 Merge branch 'master' into hethi/issue-1175-cmake-build-
type
8282229d4f9d Merge branch 'master' into mingw64-appveyour
836c194a8102 Merge pull request #1241 from aninf-wo/hethi/issue-635-old-
links
633488a76325 Merge branch 'master' into mingw64-appveyour
69e794ca75e6 Merge pull request #870 from KindDragon/mingw64-appveyour
ee53b281ba16 Merge branch 'master' into user_logger_instead_of_printf
b3a1f87f0c5f Merge pull request #1235 from aninf-wo/hethi/issue-1175
-cmake-build-type
e4f6c0b358a4 Merge pull request #1011 from zeitounator/wrong-version-
reported
52b6ca3428ee Merge pull request #783 from tobbi/cppcheck_perf_fixes
1a62d1b08806 CMake: use threads if allowed and found, not just if found
7c6353d29a14 Merge pull request #900 from Gallaecio/patch-1
d15b8b452406 switch one build to Release mode
520ad96b7817 treat all warnings as errors for GCC (-Werror)
e7c9e80e63e5 Allow macros inside of parametrized test names
86e5f0083e52 Add a non-parametrized test
8abacca52eeb avoid -Wshadow warning on GCC
55fd999adf5a avoid warning about unused variable
48b06628803c cache ccache
d96a038e8b2b set MAKEFLAGS to use multiple processors on Travis CI
98f2f152539e install ccache on travis osx build slave
fe97312e24ef limit processors to use in Travis build to 4
88b76525dd27 Merge branch 'master' into hethi/unused-import
e8c6942ac157 remove obsolete link_directories command
9a8794faed3c add a cast
83d8dd0e9c5e call clang via ccache on Linux
56f8222a148d show ccache statistics in log
dd8e4a635893 reset ccache statistics at install
beca85ff4afb drop unused valgrind package from installation
857ddeadebe4 Merge pull request #975 from LebedevRI/respect-option
be94bf501e64 remove unused variables from travis environment
a92c362cfbc6 Merge branch 'master' into 2017_09_04_parametrized
8a3ccc3ee363 Merge pull request #1247 from aninf-wo/hethi/enable-
parallel-builds
a33b6b091999 Merge pull request #1246 from aninf-wo/hethi/enable-travis-
gcc-cache
bc60b5a82704 Merge branch 'master' into hethi/travis-release-build
f6dde80e94b9 Removed flush scopes around GTEST_LOG(FATAL) and exit call
since FATAL is expected to abort()
900cc4bca597 Merge commit 'a33b6b091999d44f771761be03beb64d3af2350a'
into user_logger_instead_of_printf
e43a5948d51e Merge branch 'master' into master
6c0146fd0075 use GTEST_ATTRIBUTE_UNUSED_ instead of dummy function
f3500ce23a0e Merge pull request #1243 from aninf-wo/hethi/travis-
release-build
894cdb82cb2a Merge pull request #1251 from aninf-wo/hethi/drop-valgrind-
installation-on-travis
8620328bcae4 Merge branch 'master' into hethi/cleanup-travis-environment
1b5b246ff9f1 Merge branch 'master' into hethi/unused-import
6508a66622b4 Merge branch 'master' into master
803ab9a86069 Merge branch 'master' into hethi/remove-linker-warning-on-
non-existing-path
def0b32119e1 Merge pull request #1254 from aninf-wo/hethi/cleanup-
travis-environment
4f68ab5b84dd Fix ellipsis position in examples
3663d671708e Merge pull request #1203 from
eidosmontreal/user_logger_instead_of_printf
eb695b0f1162 Merge branch 'master' into hethi/unused-import
ecc5182dbd6e Merge pull request #1250 from aninf-wo/hethi/remove-linker-
warning-on-non-existing-path
61330388862c Merge pull request #1227 from aninf-wo/hethi/unused-import
834baf336231 Merge branch 'master' into patch-1
c9cf07a8ba4d Make the failure messages from EXPECT_EQ and friends
actually symmetric,
20e62ad24cc7 Merge pull request #1242 from DarthGandalf/expect
31b6155d7d46 Merge branch 'master' into patch-1
9681b4c8e6aa Add explicit `CMAKE_DEBUG_POSTFIX` option
b1dd47c278a7 Merge pull request #1255 from yursha/patch-1
b55abc3fe08a Merge branch 'master' into patch-1
deace2546ef4 Merge pull request #1259 from ly2048/patch-1
d4af64ca1317 Remove redundant declaration
cf512a099cd5 Swap reinterpret_cast for static_cast
43863938377a Merge pull request #1265 from bkircher/redundant-decl
ff6796877fcb Merge pull request #1245 from
sheepmaster/2017_09_04_parametrized
d30a37e743e4 Revert "Allow macros inside of parametrized test names."
bfc0ffc8a698 Merge pull request #1271 from
google/revert-1245-2017_09_04_parametrized
89f45180e02c Merge branch 'master' into master
f1a87d73fc60 Merge pull request #1249 from stkhapugin/master
b70cf1a663ad Use gender-neutral pronouns in comments and docs
7b6561c56e35 Merge pull request #1275 from jwakely/pr/1273
Update gyp to f72586209ecbf70b71ce690f2182ebe51669cbb3
a478c1ab51ea win: mkdir even when copying directory
d61a9397e668 mac_tool.py: Handle non-zero ibtool return code
4801a5331ae6 gyp: update xml string encoding conversion
324dd166b7c0 gyp: show descriptive Windows SDK detection error
dd0eafbde598 Support z/OS platform
c6f471687407 make,ninja: Add support for an LDFLAGS_host environment
variable
30a29189f489 Change z/OS platform flavor name based on python 2.7.13
44ad5a0ab869 Add LIBS to the link command on z/OS
f72586209ecb Provide backward compatibility for python 2.7.6 on z/OS
Change-Id: I910b36f3166e51391d51b9ce5a4050651a5e50ea
Reviewed-on: https://chromium-review.googlesource.com/700429
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
hanging_program.exe is used by crash_other_program.exe, which is in turn
used by end_to_end_test.py. It hangs by loading loader_lock_dll.dll,
which squats in its entry point function while the loader lock is held.
hanging_program.exe needs to do some work in its Thread1() before the
loader lock is taken (a SetThreadPriority() call), and needs to do some
work in its main thread once the loader lock is held (it needs to signal
crash_other_program.exe that it’s successfully wedged itself).
Previously, proper synchronization was not provided. A 1-second Sleep()
was used to wait for the loader lock to be taken. Thread1() pre-work was
only achieved before the loader lock was taken by sheer luck. Things
didn’t always work out so nicely.
This uses an event handle to provide synchronization. An environment
variable is used to pass the handle to loader_lock_dll.dll, because
there aren’t many better options available. This eliminates both flake
and the unnecessary 1-second delay in hanging_program.exe, and since
this program runs twice during end_to_end_test.py, it improves that
test’s runtime by 2 seconds.
Bug: crashpad:197
Test: end_to_end_test.py
Change-Id: Ib9883215ef96bed7571464cc68e09b6ab6310ae6
Reviewed-on: https://chromium-review.googlesource.com/700076
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Leonard Mosescu <mosescu@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
CrashpadClient::DumpAndCrashTargetProcess() suspends the target process
and injects a thread to raise an exception. The injected thread is not
suspended, and may proceed to the point that the system recognizes the
process as terminating by the time the overall process suspension is
lifted. Previously, if this happened, an extraneous error was logged for
the attempt to resume a terminating process.
This introduces “termination tolerance” to ScopedProcessSuspend, which
allows an object to be configured to ignore this error and not log any
messages when this condition is expected.
This resolves log messages such as this one, produced frequently during
calls to CrashpadClient::DumpAndCrashTargetProcess() (including in
end_to_end_test.py):
> [pid:tid:yyyymmdd,hhmmss.mmm:ERROR scoped_process_suspend.cc:39]
> NtResumeProcess: An attempt was made to access an exiting process.
> (0xc000010a)
0xc000010a = STATUS_PROCESS_IS_TERMINATING
Test: end_to_end_test.py
Change-Id: Iab4c50fb21adce5502080ad25a6f734ec566d65c
Reviewed-on: https://chromium-review.googlesource.com/700715
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
OS_LINUX is not defined on Android. Chromium made this call and we can’t
revisit it here and now.
Change-Id: I70fd6ac35ba9731e2fd06792bf8cae332e2b360c
Reviewed-on: https://chromium-review.googlesource.com/700655
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
filename_rules.gypi doesn’t treat Android as Linux, so Crashpad’s .gyp
files are peppered throughout with this custom filename rule. This broke
in 59c5d848e5c5 when FakePtraceConnection was introduced.
Bug: crashpad:30
Change-Id: I524d32887d243541634d9a0803c7f46afd6d45e6
Reviewed-on: https://chromium-review.googlesource.com/700425
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
A step towards making these files usable by non-Linux systems.
Bug: crashpad:196
Change-Id: I2497fd7e3bcb5390ae1e6ae22902ab6f56b59dff
Reviewed-on: https://chromium-review.googlesource.com/685405
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Dave Bort <dbort@google.com>