mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-26 23:01:05 +08:00
URL cleanups: switch to HTTPS, fix dead ones, use canonical ones
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>
This commit is contained in:
parent
e935375fe9
commit
20e5aba1af
@ -750,9 +750,9 @@ void CrashpadClient::DumpWithoutCrash(const CONTEXT& context) {
|
|||||||
// We include a fake exception and use a code of '0x517a7ed' (something like
|
// We include a fake exception and use a code of '0x517a7ed' (something like
|
||||||
// "simulated") so that it's relatively obvious in windbg that it's not
|
// "simulated") so that it's relatively obvious in windbg that it's not
|
||||||
// actually an exception. Most values in
|
// actually an exception. Most values in
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa363082.aspx have
|
// https://msdn.microsoft.com/library/aa363082.aspx have some of the top
|
||||||
// some of the top nibble set, so we make sure to pick a value that doesn't,
|
// nibble set, so we make sure to pick a value that doesn't, so as to be
|
||||||
// so as to be unlikely to conflict.
|
// unlikely to conflict.
|
||||||
constexpr uint32_t kSimulatedExceptionCode = 0x517a7ed;
|
constexpr uint32_t kSimulatedExceptionCode = 0x517a7ed;
|
||||||
EXCEPTION_RECORD record = {};
|
EXCEPTION_RECORD record = {};
|
||||||
record.ExceptionCode = kSimulatedExceptionCode;
|
record.ExceptionCode = kSimulatedExceptionCode;
|
||||||
|
@ -564,16 +564,15 @@ struct __attribute__((packed, aligned(4))) MINIDUMP_MODULE {
|
|||||||
//! <a
|
//! <a
|
||||||
//! href="http://pierrelib.pagesperso-orange.fr/exec_formats/MS_Symbol_Type_v1.0.pdf#page=71">Microsoft
|
//! href="http://pierrelib.pagesperso-orange.fr/exec_formats/MS_Symbol_Type_v1.0.pdf#page=71">Microsoft
|
||||||
//! Symbol and Type Information</a>, section 7.2, “Debug Information Format”
|
//! Symbol and Type Information</a>, section 7.2, “Debug Information Format”
|
||||||
//! for a list of debug information formats, and <a
|
//! for a list of debug information formats, and <i>Undocumented Windows 2000
|
||||||
//! href="http://undocumented.rawol.com/sbs-w2k-1-windows-2000-debugging-support.pdf#page=63">Undocumented
|
//! Secrets</i>, Windows 2000 Debugging Support/Microsoft Symbol File
|
||||||
//! Windows 2000 Secrets</a>, Windows 2000 Debugging Support/Microsoft Symbol
|
//! Internals/CodeView Subsections for an in-depth description of the CodeView
|
||||||
//! File Internals/CodeView Subsections for an in-depth description of the
|
//! 4.1 format. Signatures seen in the wild include “NB09” (0x3930424e) for
|
||||||
//! CodeView 4.1 format. Signatures seen in the wild include “NB09”
|
//! CodeView 4.1 and “NB11” (0x3131424e) for CodeView 5.0. This form of
|
||||||
//! (0x3930424e) for CodeView 4.1 and “NB11” (0x3131424e) for CodeView 5.0.
|
//! debugging information within the module, as opposed to a link to an
|
||||||
//! This form of debugging information within the module, as opposed to a link
|
//! external `.pdb` file, is chosen by building with `/Z7` in Visual Studio
|
||||||
//! to an external `.pdb` file, is chosen by building with `/Z7` in Visual
|
//! 6.0 (1998) and earlier. This embedded form of debugging information is now
|
||||||
//! Studio 6.0 (1998) and earlier. This embedded form of debugging information
|
//! considered obsolete.
|
||||||
//! is now considered obsolete.
|
|
||||||
//!
|
//!
|
||||||
//! On Windows, the CodeView record is taken from a module’s
|
//! On Windows, the CodeView record is taken from a module’s
|
||||||
//! IMAGE_DEBUG_DIRECTORY entry whose Type field has the value
|
//! IMAGE_DEBUG_DIRECTORY entry whose Type field has the value
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
// include_next <winnt.h>
|
// include_next <winnt.h>
|
||||||
#include <../um/winnt.h>
|
#include <../um/winnt.h>
|
||||||
|
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa373184.aspx:
|
// https://msdn.microsoft.com/library/aa373184.aspx: "Note that this structure
|
||||||
// "Note that this structure definition was accidentally omitted from WinNT.h."
|
// definition was accidentally omitted from WinNT.h."
|
||||||
struct PROCESSOR_POWER_INFORMATION {
|
struct PROCESSOR_POWER_INFORMATION {
|
||||||
ULONG Number;
|
ULONG Number;
|
||||||
ULONG MaxMhz;
|
ULONG MaxMhz;
|
||||||
|
@ -22,7 +22,7 @@ limitations under the License.
|
|||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
Crashpad is a [Chromium project](https://dev.chromium.org/Home). Most of its
|
Crashpad is a [Chromium project](https://www.chromium.org/Home). Most of its
|
||||||
development practices follow Chromium’s. In order to function on its own in
|
development practices follow Chromium’s. In order to function on its own in
|
||||||
other projects, Crashpad uses
|
other projects, Crashpad uses
|
||||||
[mini_chromium](https://chromium.googlesource.com/chromium/mini_chromium/), a
|
[mini_chromium](https://chromium.googlesource.com/chromium/mini_chromium/), a
|
||||||
@ -43,9 +43,9 @@ the `$PATH` environment variable:
|
|||||||
C++ support and the Windows SDK. MSVS 2015 and MSVS 2017 are both
|
C++ support and the Windows SDK. MSVS 2015 and MSVS 2017 are both
|
||||||
supported. Some tests also require the CDB debugger, installed with
|
supported. Some tests also require the CDB debugger, installed with
|
||||||
[Debugging Tools for
|
[Debugging Tools for
|
||||||
Windows](https://msdn.microsoft.com/library/windows/hardware/ff551063.aspx).
|
Windows](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/).
|
||||||
* Chromium’s
|
* Chromium’s
|
||||||
[depot_tools](https://dev.chromium.org/developers/how-tos/depottools).
|
[depot_tools](https://www.chromium.org/developers/how-tos/depottools).
|
||||||
* [Git](https://git-scm.com/). This is provided by Xcode on macOS and by
|
* [Git](https://git-scm.com/). This is provided by Xcode on macOS and by
|
||||||
depot_tools on Windows.
|
depot_tools on Windows.
|
||||||
* [Python](https://www.python.org/). This is provided by the operating system
|
* [Python](https://www.python.org/). This is provided by the operating system
|
||||||
@ -57,12 +57,12 @@ The main source code repository is a Git repository hosted at
|
|||||||
https://chromium.googlesource.com/crashpad/crashpad. Although it is possible to
|
https://chromium.googlesource.com/crashpad/crashpad. Although it is possible to
|
||||||
check out this repository directly with `git clone`, Crashpad’s dependencies are
|
check out this repository directly with `git clone`, Crashpad’s dependencies are
|
||||||
managed by
|
managed by
|
||||||
[`gclient`](https://dev.chromium.org/developers/how-tos/depottools#TOC-gclient)
|
[`gclient`](https://www.chromium.org/developers/how-tos/depottools#TOC-gclient)
|
||||||
instead of Git submodules, so to work on Crashpad, it is best to use `fetch` to
|
instead of Git submodules, so to work on Crashpad, it is best to use `fetch` to
|
||||||
get the source code.
|
get the source code.
|
||||||
|
|
||||||
`fetch` and `gclient` are part of the
|
`fetch` and `gclient` are part of the
|
||||||
[depot_tools](https://dev.chromium.org/developers/how-tos/depottools). There’s
|
[depot_tools](https://www.chromium.org/developers/how-tos/depottools). There’s
|
||||||
no need to install them separately.
|
no need to install them separately.
|
||||||
|
|
||||||
### Initial Checkout
|
### Initial Checkout
|
||||||
@ -106,7 +106,7 @@ $ ninja -C out/Debug
|
|||||||
```
|
```
|
||||||
|
|
||||||
Ninja is part of the
|
Ninja is part of the
|
||||||
[depot_tools](https://dev.chromium.org/developers/how-tos/depottools). There’s
|
[depot_tools](https://www.chromium.org/developers/how-tos/depottools). There’s
|
||||||
no need to install it separately.
|
no need to install it separately.
|
||||||
|
|
||||||
### Android
|
### Android
|
||||||
@ -200,7 +200,7 @@ $ python build/run_tests.py out/Debug
|
|||||||
|
|
||||||
On Windows, `end_to_end_test.py` requires the CDB debugger, installed with
|
On Windows, `end_to_end_test.py` requires the CDB debugger, installed with
|
||||||
[Debugging Tools for
|
[Debugging Tools for
|
||||||
Windows](https://msdn.microsoft.com/library/windows/hardware/ff551063.aspx).
|
Windows](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/).
|
||||||
This can be installed either as part of the [Windows Driver
|
This can be installed either as part of the [Windows Driver
|
||||||
Kit](https://go.microsoft.com/fwlink/p?LinkID=239721) or the [Windows
|
Kit](https://go.microsoft.com/fwlink/p?LinkID=239721) or the [Windows
|
||||||
SDK](https://go.microsoft.com/fwlink/p?LinkID=271979). If the Windows SDK has
|
SDK](https://go.microsoft.com/fwlink/p?LinkID=271979). If the Windows SDK has
|
||||||
@ -243,7 +243,7 @@ device:/data/local/tmp $ CRASHPAD_TEST_DATA_ROOT=crashpad_test_data_root \
|
|||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Crashpad’s contribution process is very similar to [Chromium’s contribution
|
Crashpad’s contribution process is very similar to [Chromium’s contribution
|
||||||
process](https://dev.chromium.org/developers/contributing-code).
|
process](https://www.chromium.org/developers/contributing-code).
|
||||||
|
|
||||||
### Code Review
|
### Code Review
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ must be sent to an appropriate reviewer, with a Cc sent to
|
|||||||
file specifies this environment to `git-cl`.
|
file specifies this environment to `git-cl`.
|
||||||
|
|
||||||
`git-cl` is part of the
|
`git-cl` is part of the
|
||||||
[depot_tools](https://dev.chromium.org/developers/how-tos/depottools). There’s
|
[depot_tools](https://www.chromium.org/developers/how-tos/depottools). There’s
|
||||||
no need to install it separately.
|
no need to install it separately.
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -282,7 +282,7 @@ patch set with `git cl upload` and let your reviewer know you’ve addressed the
|
|||||||
feedback.
|
feedback.
|
||||||
|
|
||||||
The most recently uploaded patch set on a review may be tested on a [try
|
The most recently uploaded patch set on a review may be tested on a [try
|
||||||
server](https://dev.chromium.org/developers/testing/try-server-usage) by running
|
server](https://www.chromium.org/developers/testing/try-server-usage) by running
|
||||||
`git cl try` or by clicking the “CQ Dry Run” button in Gerrit. These set the
|
`git cl try` or by clicking the “CQ Dry Run” button in Gerrit. These set the
|
||||||
“Commit-Queue: +1” label. This does not mean that the patch will be committed,
|
“Commit-Queue: +1” label. This does not mean that the patch will be committed,
|
||||||
but the try server and commit queue share infrastructure and a Gerrit label. The
|
but the try server and commit queue share infrastructure and a Gerrit label. The
|
||||||
@ -294,7 +294,7 @@ Crashpad and Chromium committers.
|
|||||||
|
|
||||||
After code review is complete and “Code-Review: +1” has been received from all
|
After code review is complete and “Code-Review: +1” has been received from all
|
||||||
reviewers, the patch can be submitted to Crashpad’s [commit
|
reviewers, the patch can be submitted to Crashpad’s [commit
|
||||||
queue](https://dev.chromium.org/developers/testing/commit-queue) by clicking the
|
queue](https://www.chromium.org/developers/testing/commit-queue) by clicking the
|
||||||
“Submit to CQ” button in Gerrit. This sets the “Commit-Queue: +2” label, which
|
“Submit to CQ” button in Gerrit. This sets the “Commit-Queue: +2” label, which
|
||||||
tests the patch on the try server before landing it. Commit queue access is
|
tests the patch on the try server before landing it. Commit queue access is
|
||||||
available to Crashpad and Chromium committers.
|
available to Crashpad and Chromium committers.
|
||||||
|
@ -21,7 +21,7 @@ limitations under the License.
|
|||||||
Crashpad currently consists of a crash-reporting client and some related tools
|
Crashpad currently consists of a crash-reporting client and some related tools
|
||||||
for macOS and Windows. The core client work for both platforms is substantially
|
for macOS and Windows. The core client work for both platforms is substantially
|
||||||
complete. Crashpad became the crash reporter client for
|
complete. Crashpad became the crash reporter client for
|
||||||
[Chromium](https://dev.chromium.org/Home) on macOS as of [March
|
[Chromium](https://www.chromium.org/Home) on macOS as of [March
|
||||||
2015](https://chromium.googlesource.com/chromium/src/\+/d413b2dcb54d523811d386f1ff4084f677a6d089),
|
2015](https://chromium.googlesource.com/chromium/src/\+/d413b2dcb54d523811d386f1ff4084f677a6d089),
|
||||||
and on Windows as of [November
|
and on Windows as of [November
|
||||||
2015](https://chromium.googlesource.com/chromium/src/\+/cfa5b01bb1d06bf96967bd37e21a44752801948c).
|
2015](https://chromium.googlesource.com/chromium/src/\+/cfa5b01bb1d06bf96967bd37e21a44752801948c).
|
||||||
|
@ -52,9 +52,8 @@ bool CrashAndDumpTarget(const CrashpadClient& client, HANDLE process) {
|
|||||||
do {
|
do {
|
||||||
if (te32.th32OwnerProcessID == target_pid) {
|
if (te32.th32OwnerProcessID == target_pid) {
|
||||||
// We set the thread priority of "Thread1" to a non-default value before
|
// We set the thread priority of "Thread1" to a non-default value before
|
||||||
// going to sleep. Dump and blame this thread. For an explanation of
|
// going to sleep. Dump and blame this thread. For an explanation of "9",
|
||||||
// "9", see
|
// see https://msdn.microsoft.com/library/ms685100.aspx.
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms685100.aspx.
|
|
||||||
if (te32.tpBasePri == 9) {
|
if (te32.tpBasePri == 9) {
|
||||||
ScopedKernelHANDLE thread(
|
ScopedKernelHANDLE thread(
|
||||||
OpenThread(kXPThreadAllAccess, false, te32.th32ThreadID));
|
OpenThread(kXPThreadAllAccess, false, te32.th32ThreadID));
|
||||||
|
@ -37,8 +37,8 @@ verifiers {
|
|||||||
builders { name: "crashpad_try_mac_rel" }
|
builders { name: "crashpad_try_mac_rel" }
|
||||||
builders { name: "crashpad_try_win_x64_dbg" }
|
builders { name: "crashpad_try_win_x64_dbg" }
|
||||||
builders { name: "crashpad_try_win_x64_rel" }
|
builders { name: "crashpad_try_win_x64_rel" }
|
||||||
# crbug.com/743139 - disabled until we can move these to
|
# https://crbug.com/743139 - disabled until we can move these to swarming,
|
||||||
# swarming, at which point we can just remove them.
|
# at which point we can just remove them.
|
||||||
#builders { name: "crashpad_try_win_x86_dbg" }
|
#builders { name: "crashpad_try_win_x86_dbg" }
|
||||||
#builders { name: "crashpad_try_win_x86_rel" }
|
#builders { name: "crashpad_try_win_x86_rel" }
|
||||||
builders { name: "crashpad_try_win_x86_wow64_dbg" }
|
builders { name: "crashpad_try_win_x86_wow64_dbg" }
|
||||||
|
@ -26,7 +26,7 @@ namespace crashpad {
|
|||||||
//! \brief Architecture-independent flags for `context_flags` fields in Minidump
|
//! \brief Architecture-independent flags for `context_flags` fields in Minidump
|
||||||
//! context structures.
|
//! context structures.
|
||||||
//
|
//
|
||||||
// http://zachsaw.blogspot.com/2010/11/wow64-bug-getthreadcontext-may-return.html#c5639760895973344002
|
// https://zachsaw.blogspot.com/2010/11/wow64-bug-getthreadcontext-may-return.html#c5639760895973344002
|
||||||
enum MinidumpContextFlags : uint32_t {
|
enum MinidumpContextFlags : uint32_t {
|
||||||
//! \brief The thread was executing a trap handler in kernel mode
|
//! \brief The thread was executing a trap handler in kernel mode
|
||||||
//! (`CONTEXT_EXCEPTION_ACTIVE`).
|
//! (`CONTEXT_EXCEPTION_ACTIVE`).
|
||||||
|
@ -38,7 +38,7 @@ struct HandleSnapshot {
|
|||||||
//! \brief The ACCESS_MASK for the handle in this process.
|
//! \brief The ACCESS_MASK for the handle in this process.
|
||||||
//!
|
//!
|
||||||
//! See
|
//! See
|
||||||
//! http://blogs.msdn.com/b/openspecification/archive/2010/04/01/about-the-access-mask-structure.aspx
|
//! https://blogs.msdn.microsoft.com/openspecification/2010/04/01/about-the-access_mask-structure/
|
||||||
//! for more information.
|
//! for more information.
|
||||||
uint32_t granted_access;
|
uint32_t granted_access;
|
||||||
|
|
||||||
|
@ -681,9 +681,9 @@ void ProcessReader::LocateRedZone(mach_vm_address_t* const start_address,
|
|||||||
const unsigned int user_tag) {
|
const unsigned int user_tag) {
|
||||||
#if defined(ARCH_CPU_X86_FAMILY)
|
#if defined(ARCH_CPU_X86_FAMILY)
|
||||||
if (Is64Bit()) {
|
if (Is64Bit()) {
|
||||||
// x86_64 has a red zone. See AMD64 ABI 0.99.6,
|
// x86_64 has a red zone. See AMD64 ABI 0.99.8,
|
||||||
// http://www.x86-64.org/documentation/abi.pdf, section 3.2.2, “The Stack
|
// https://raw.githubusercontent.com/wiki/hjl-tools/x86-psABI/x86-64-psABI-r252.pdf#page=19,
|
||||||
// Frame”.
|
// section 3.2.2, “The Stack Frame”.
|
||||||
constexpr mach_vm_size_t kRedZoneSize = 128;
|
constexpr mach_vm_size_t kRedZoneSize = 128;
|
||||||
mach_vm_address_t red_zone_base =
|
mach_vm_address_t red_zone_base =
|
||||||
*start_address >= kRedZoneSize ? *start_address - kRedZoneSize : 0;
|
*start_address >= kRedZoneSize ? *start_address - kRedZoneSize : 0;
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
// The name of this file was chosen based on
|
// The name of this file was chosen based on
|
||||||
// http://llvm.org/svn/llvm-project/llvm/trunk/lib/Support/PrettyStackTrace.cpp.
|
// https://llvm.org/svn/llvm-project/llvm/trunk/lib/Support/PrettyStackTrace.cpp.
|
||||||
// The name of the structure it describes was chosen based on that file as well
|
// The name of the structure it describes was chosen based on that file as well
|
||||||
// as 10.9.2 cups-372.2/cups/backend/usb-darwin.c. That file also provided the
|
// as 10.9.2 cups-372.2/cups/backend/usb-darwin.c. That file also provided the
|
||||||
// names and types of the fields in the structure.
|
// names and types of the fields in the structure.
|
||||||
|
@ -88,7 +88,7 @@ TEST(TimeZone, Basic) {
|
|||||||
// In contemporary usage, most time zones have an integer hour offset from
|
// In contemporary usage, most time zones have an integer hour offset from
|
||||||
// UTC, although several are at a half-hour offset, and two are at 15-minute
|
// UTC, although several are at a half-hour offset, and two are at 15-minute
|
||||||
// offsets. Throughout history, other variations existed. See
|
// offsets. Throughout history, other variations existed. See
|
||||||
// http://www.timeanddate.com/time/time-zones-interesting.html.
|
// https://www.timeanddate.com/time/time-zones-interesting.html.
|
||||||
EXPECT_EQ(standard_offset_seconds % (15 * 60), 0)
|
EXPECT_EQ(standard_offset_seconds % (15 * 60), 0)
|
||||||
<< "standard_offset_seconds " << standard_offset_seconds;
|
<< "standard_offset_seconds " << standard_offset_seconds;
|
||||||
|
|
||||||
@ -100,9 +100,9 @@ TEST(TimeZone, Basic) {
|
|||||||
<< "daylight_offset_seconds " << daylight_offset_seconds;
|
<< "daylight_offset_seconds " << daylight_offset_seconds;
|
||||||
|
|
||||||
// In contemporary usage, dst_delta_seconds will almost always be one hour,
|
// In contemporary usage, dst_delta_seconds will almost always be one hour,
|
||||||
// except for Lord Howe Island, Australia, which uses a 30-minute
|
// except for Lord Howe Island, Australia, which uses a 30-minute delta.
|
||||||
// delta. Throughout history, other variations existed. See
|
// Throughout history, other variations existed. See
|
||||||
// http://www.timeanddate.com/time/dst/#brief.
|
// https://www.timeanddate.com/time/dst/.
|
||||||
int dst_delta_seconds = daylight_offset_seconds - standard_offset_seconds;
|
int dst_delta_seconds = daylight_offset_seconds - standard_offset_seconds;
|
||||||
if (dst_delta_seconds != 60 * 60 && dst_delta_seconds != 30 * 60) {
|
if (dst_delta_seconds != 60 * 60 && dst_delta_seconds != 30 * 60) {
|
||||||
FAIL() << "dst_delta_seconds " << dst_delta_seconds;
|
FAIL() << "dst_delta_seconds " << dst_delta_seconds;
|
||||||
|
@ -235,7 +235,7 @@ bool PEImageReader::VSFixedFileInfo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This structure is not declared anywhere in the SDK, but is documented at
|
// This structure is not declared anywhere in the SDK, but is documented at
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms647001.aspx.
|
// https://msdn.microsoft.com/library/ms647001.aspx.
|
||||||
struct VS_VERSIONINFO {
|
struct VS_VERSIONINFO {
|
||||||
WORD wLength;
|
WORD wLength;
|
||||||
WORD wValueLength;
|
WORD wValueLength;
|
||||||
|
@ -165,7 +165,7 @@ uint32_t PEImageResourceReader::GetEntryFromResourceDirectoryByLanguage(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://msdn.microsoft.com/en-us/library/cc194810.aspx
|
// https://msdn.microsoft.com/library/cc194810.aspx
|
||||||
//
|
//
|
||||||
// TODO(mark): It seems like FindResourceEx() might do something more complex.
|
// TODO(mark): It seems like FindResourceEx() might do something more complex.
|
||||||
// It would be best to mimic its behavior.
|
// It would be best to mimic its behavior.
|
||||||
|
@ -374,9 +374,9 @@ void ProcessReaderWin::ReadThreadData(bool is_64_reading_32) {
|
|||||||
|
|
||||||
// TODO(scottmg): I believe we could reverse engineer the PriorityClass from
|
// TODO(scottmg): I believe we could reverse engineer the PriorityClass from
|
||||||
// the Priority, BasePriority, and
|
// the Priority, BasePriority, and
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms685100 .
|
// https://msdn.microsoft.com/library/ms685100.aspx. MinidumpThreadWriter
|
||||||
// MinidumpThreadWriter doesn't handle it yet in any case, so investigate
|
// doesn't handle it yet in any case, so investigate both of those at the
|
||||||
// both of those at the same time if it's useful.
|
// same time if it's useful.
|
||||||
thread.priority_class = NORMAL_PRIORITY_CLASS;
|
thread.priority_class = NORMAL_PRIORITY_CLASS;
|
||||||
|
|
||||||
thread.priority = thread_info.Priority;
|
thread.priority = thread_info.Priority;
|
||||||
@ -403,7 +403,7 @@ void ProcessReaderWin::ReadThreadData(bool is_64_reading_32) {
|
|||||||
WinVMAddress limit = 0;
|
WinVMAddress limit = 0;
|
||||||
// If we're reading a WOW64 process, then the TIB we just retrieved is the
|
// If we're reading a WOW64 process, then the TIB we just retrieved is the
|
||||||
// x64 one. The first word of the x64 TIB points at the x86 TIB. See
|
// x64 one. The first word of the x64 TIB points at the x86 TIB. See
|
||||||
// https://msdn.microsoft.com/en-us/library/dn424783.aspx
|
// https://msdn.microsoft.com/library/dn424783.aspx.
|
||||||
if (is_64_reading_32) {
|
if (is_64_reading_32) {
|
||||||
process_types::NT_TIB<process_types::internal::Traits32> tib32;
|
process_types::NT_TIB<process_types::internal::Traits32> tib32;
|
||||||
thread.teb_address = tib.Wow64Teb;
|
thread.teb_address = tib.Wow64Teb;
|
||||||
|
@ -265,12 +265,11 @@ void ProcessSnapshotWin::InitializeModules() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ProcessSnapshotWin::InitializeUnloadedModules() {
|
void ProcessSnapshotWin::InitializeUnloadedModules() {
|
||||||
// As documented by https://msdn.microsoft.com/en-us/library/cc678403.aspx
|
// As documented by https://msdn.microsoft.com/library/cc678403.aspx, we can
|
||||||
// we can retrieve the location for our unload events, and use that address in
|
// retrieve the location for our unload events, and use that address in the
|
||||||
// the target process. Unfortunately, this of course only works for
|
// target process. Unfortunately, this of course only works for 64-reading-64
|
||||||
// 64-reading-64 and 32-reading-32, so at the moment, we simply do not
|
// and 32-reading-32, so at the moment, we simply do not retrieve unloaded
|
||||||
// retrieve unloaded modules for 64-reading-32. See
|
// modules for 64-reading-32. See https://crashpad.chromium.org/bug/89.
|
||||||
// https://crashpad.chromium.org/bug/89.
|
|
||||||
|
|
||||||
#if defined(ARCH_CPU_X86_64)
|
#if defined(ARCH_CPU_X86_64)
|
||||||
if (!process_reader_.Is64Bit()) {
|
if (!process_reader_.Is64Bit()) {
|
||||||
@ -516,9 +515,9 @@ void ProcessSnapshotWin::AddMemorySnapshotForLdrLIST_ENTRY(
|
|||||||
|
|
||||||
WinVMSize ProcessSnapshotWin::DetermineSizeOfEnvironmentBlock(
|
WinVMSize ProcessSnapshotWin::DetermineSizeOfEnvironmentBlock(
|
||||||
WinVMAddress start_of_environment_block) {
|
WinVMAddress start_of_environment_block) {
|
||||||
// http://blogs.msdn.com/b/oldnewthing/archive/2010/02/03/9957320.aspx On
|
// https://blogs.msdn.microsoft.com/oldnewthing/20100203-00/?p=15083: On newer
|
||||||
// newer OSs there's no stated limit, but in practice grabbing 32k characters
|
// OSs there's no stated limit, but in practice grabbing 32k characters should
|
||||||
// should be more than enough.
|
// be more than enough.
|
||||||
std::wstring env_block;
|
std::wstring env_block;
|
||||||
env_block.resize(32768);
|
env_block.resize(32768);
|
||||||
WinVMSize bytes_read = process_reader_.ReadAvailableMemory(
|
WinVMSize bytes_read = process_reader_.ReadAvailableMemory(
|
||||||
|
@ -130,7 +130,7 @@ TEST_F(SystemSnapshotWinTest, TimeZone) {
|
|||||||
// In contemporary usage, most time zones have an integer hour offset from
|
// In contemporary usage, most time zones have an integer hour offset from
|
||||||
// UTC, although several are at a half-hour offset, and two are at 15-minute
|
// UTC, although several are at a half-hour offset, and two are at 15-minute
|
||||||
// offsets. Throughout history, other variations existed. See
|
// offsets. Throughout history, other variations existed. See
|
||||||
// http://www.timeanddate.com/time/time-zones-interesting.html.
|
// https://www.timeanddate.com/time/time-zones-interesting.html.
|
||||||
EXPECT_EQ(standard_offset_seconds % (15 * 60), 0)
|
EXPECT_EQ(standard_offset_seconds % (15 * 60), 0)
|
||||||
<< "standard_offset_seconds " << standard_offset_seconds;
|
<< "standard_offset_seconds " << standard_offset_seconds;
|
||||||
|
|
||||||
@ -142,9 +142,9 @@ TEST_F(SystemSnapshotWinTest, TimeZone) {
|
|||||||
<< "daylight_offset_seconds " << daylight_offset_seconds;
|
<< "daylight_offset_seconds " << daylight_offset_seconds;
|
||||||
|
|
||||||
// In contemporary usage, dst_delta_seconds will almost always be one hour,
|
// In contemporary usage, dst_delta_seconds will almost always be one hour,
|
||||||
// except for Lord Howe Island, Australia, which uses a 30-minute
|
// except for Lord Howe Island, Australia, which uses a 30-minute delta.
|
||||||
// delta. Throughout history, other variations existed. See
|
// Throughout history, other variations existed. See
|
||||||
// http://www.timeanddate.com/time/dst/#brief.
|
// https://www.timeanddate.com/time/dst/.
|
||||||
int dst_delta_seconds = daylight_offset_seconds - standard_offset_seconds;
|
int dst_delta_seconds = daylight_offset_seconds - standard_offset_seconds;
|
||||||
if (dst_delta_seconds != 60 * 60 && dst_delta_seconds != 30 * 60) {
|
if (dst_delta_seconds != 60 * 60 && dst_delta_seconds != 30 * 60) {
|
||||||
FAIL() << "dst_delta_seconds " << dst_delta_seconds;
|
FAIL() << "dst_delta_seconds " << dst_delta_seconds;
|
||||||
|
2
third_party/mini_chromium/README.crashpad
vendored
2
third_party/mini_chromium/README.crashpad
vendored
@ -8,7 +8,7 @@ Security Critical: yes
|
|||||||
|
|
||||||
Description:
|
Description:
|
||||||
mini_chromium is a small collection of useful low-level (“base”) routines from
|
mini_chromium is a small collection of useful low-level (“base”) routines from
|
||||||
the Chromium open-source project at http://www.chromium.org/. Chromium is
|
the Chromium open-source project at https://www.chromium.org/Home. Chromium is
|
||||||
large, sprawling, full of dependencies, and a web browser. mini_chromium is
|
large, sprawling, full of dependencies, and a web browser. mini_chromium is
|
||||||
small, self-contained, and a library. mini_chromium is especially useful as a
|
small, self-contained, and a library. mini_chromium is especially useful as a
|
||||||
dependency of other code that wishes to use Chromium’s base routines.
|
dependency of other code that wishes to use Chromium’s base routines.
|
||||||
|
2
third_party/zlib/README.crashpad
vendored
2
third_party/zlib/README.crashpad
vendored
@ -1,6 +1,6 @@
|
|||||||
Name: zlib
|
Name: zlib
|
||||||
Short Name: zlib
|
Short Name: zlib
|
||||||
URL: http://zlib.net/
|
URL: https://zlib.net/
|
||||||
Revision: See zlib/README.chromium
|
Revision: See zlib/README.chromium
|
||||||
License: zlib
|
License: zlib
|
||||||
License File: zlib/LICENSE
|
License File: zlib/LICENSE
|
||||||
|
@ -277,11 +277,14 @@ static_library("util") {
|
|||||||
if (is_win) {
|
if (is_win) {
|
||||||
# There's no ml.exe yet in cross builds, so provide broken-but-not-asm
|
# There's no ml.exe yet in cross builds, so provide broken-but-not-asm
|
||||||
# versions of the functions defined in .asm files.
|
# versions of the functions defined in .asm files.
|
||||||
|
#
|
||||||
# CaptureContext() in capture_context_broken.cc just calls CHECK(false).
|
# CaptureContext() in capture_context_broken.cc just calls CHECK(false).
|
||||||
# SafeTerminateProcess() in safe_terminate_process.cc just calls regular
|
# SafeTerminateProcess() in safe_terminate_process.cc just calls regular
|
||||||
# TerminateProcess() without the protection against broken third-party
|
# TerminateProcess() without the protection against broken third-party
|
||||||
# patching of TerminateProcess().
|
# patching of TerminateProcess().
|
||||||
# TODO(thakis): Use the .asm file in cross builds somehow, crbug.com/762167
|
#
|
||||||
|
# TODO(thakis): Use the .asm file in cross builds somehow,
|
||||||
|
# https://crbug.com/762167.
|
||||||
if (host_os == "win") {
|
if (host_os == "win") {
|
||||||
sources += [
|
sources += [
|
||||||
"win/capture_context.asm",
|
"win/capture_context.asm",
|
||||||
|
@ -66,9 +66,9 @@ int DarwinMajorVersion() {
|
|||||||
// base::OperatingSystemVersionNumbers calls Gestalt(), which is a
|
// base::OperatingSystemVersionNumbers calls Gestalt(), which is a
|
||||||
// higher-level function than is needed. It might perform unnecessary
|
// higher-level function than is needed. It might perform unnecessary
|
||||||
// operations. On 10.6, it was observed to be able to spawn threads (see
|
// operations. On 10.6, it was observed to be able to spawn threads (see
|
||||||
// http://crbug.com/53200). It might also read files or perform other blocking
|
// https://crbug.com/53200). It might also read files or perform other
|
||||||
// operations. Actually, nobody really knows for sure just what Gestalt()
|
// blocking operations. Actually, nobody really knows for sure just what
|
||||||
// might do, or what it might be taught to do in the future.
|
// Gestalt() might do, or what it might be taught to do in the future.
|
||||||
//
|
//
|
||||||
// uname(), on the other hand, is implemented as a simple series of sysctl()
|
// uname(), on the other hand, is implemented as a simple series of sysctl()
|
||||||
// system calls to obtain the relevant data from the kernel. The data is
|
// system calls to obtain the relevant data from the kernel. The data is
|
||||||
|
@ -30,10 +30,9 @@ namespace crashpad {
|
|||||||
//!
|
//!
|
||||||
//! For more information about this structure and format, see <a
|
//! For more information about this structure and format, see <a
|
||||||
//! href="http://www.debuginfo.com/articles/debuginfomatch.html#pdbfiles">Matching
|
//! href="http://www.debuginfo.com/articles/debuginfomatch.html#pdbfiles">Matching
|
||||||
//! Debug Information</a>, PDB Files, and <a
|
//! Debug Information</a>, PDB Files, and <i>Undocumented Windows 2000
|
||||||
//! href="http://undocumented.rawol.com/sbs-w2k-1-windows-2000-debugging-support.pdf#page=63">Undocumented
|
//! Secrets</i>, Windows 2000 Debugging Support/Microsoft Symbol File
|
||||||
//! Windows 2000 Secrets</a>, Windows 2000 Debugging Support/Microsoft Symbol
|
//! Internals/CodeView Subsections.
|
||||||
//! File Internals/CodeView Subsections.
|
|
||||||
//!
|
//!
|
||||||
//! \sa IMAGE_DEBUG_MISC
|
//! \sa IMAGE_DEBUG_MISC
|
||||||
struct CodeViewRecordPDB20 {
|
struct CodeViewRecordPDB20 {
|
||||||
|
@ -85,7 +85,7 @@ void TestGzipDeflateInflate(const std::string& string) {
|
|||||||
// 8-byte trailer.
|
// 8-byte trailer.
|
||||||
constexpr size_t kGzipHeaderSize = 18;
|
constexpr size_t kGzipHeaderSize = 18;
|
||||||
|
|
||||||
// Per http://www.zlib.net/zlib_tech.html, in the worst case, zlib will store
|
// Per https://zlib.net/zlib_tech.html, in the worst case, zlib will store
|
||||||
// uncompressed data as-is, at an overhead of 5 bytes per 16384-byte block.
|
// uncompressed data as-is, at an overhead of 5 bytes per 16384-byte block.
|
||||||
// Zero-length input will “compress” to a 2-byte zlib stream. Add the overhead
|
// Zero-length input will “compress” to a 2-byte zlib stream. Add the overhead
|
||||||
// of the gzip wrapper, assuming no optional fields are present.
|
// of the gzip wrapper, assuming no optional fields are present.
|
||||||
|
@ -169,8 +169,7 @@ bool HTTPTransportWin::ExecuteSynchronously(std::string* response_body) {
|
|||||||
url_components.dwUrlPathLength = 1;
|
url_components.dwUrlPathLength = 1;
|
||||||
url_components.dwExtraInfoLength = 1;
|
url_components.dwExtraInfoLength = 1;
|
||||||
std::wstring url_wide(base::UTF8ToUTF16(url()));
|
std::wstring url_wide(base::UTF8ToUTF16(url()));
|
||||||
// dwFlags = ICU_REJECT_USERPWD fails on XP. See "Community Additions" at:
|
// dwFlags = ICU_REJECT_USERPWD fails on XP.
|
||||||
// https://msdn.microsoft.com/en-us/library/aa384092.aspx
|
|
||||||
if (!WinHttpCrackUrl(
|
if (!WinHttpCrackUrl(
|
||||||
url_wide.c_str(), 0, 0, &url_components)) {
|
url_wide.c_str(), 0, 0, &url_components)) {
|
||||||
LOG(ERROR) << WinHttpMessage("WinHttpCrackUrl");
|
LOG(ERROR) << WinHttpMessage("WinHttpCrackUrl");
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
// In order for the @NO and @YES literals to work, NO and YES must be defined as
|
// In order for the @NO and @YES literals to work, NO and YES must be defined as
|
||||||
// __objc_no and __objc_yes. See
|
// __objc_no and __objc_yes. See
|
||||||
// http://llvm.org/releases/3.1/tools/clang/docs/ObjectiveCLiterals.html .
|
// https://clang.llvm.org/docs/ObjectiveCLiterals.html.
|
||||||
//
|
//
|
||||||
// NO and YES are defined properly for this purpose in the 10.8 SDK, but not in
|
// NO and YES are defined properly for this purpose in the 10.8 SDK, but not in
|
||||||
// earlier SDKs. Because this code is never expected to be compiled with a
|
// earlier SDKs. Because this code is never expected to be compiled with a
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#if defined(OS_MACOSX) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
#if defined(OS_MACOSX) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
||||||
|
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
|
||||||
// Redeclare a method only available on OSX 10.7+ to suppress a
|
// Redeclare a method only available on Mac OS X 10.7 and later to suppress a
|
||||||
// -Wpartial-availability warning.
|
// -Wpartial-availability warning.
|
||||||
extern "C" {
|
extern "C" {
|
||||||
size_t strnlen(const char* string, size_t max_length);
|
size_t strnlen(const char* string, size_t max_length);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
namespace crashpad {
|
namespace crashpad {
|
||||||
|
|
||||||
// Ref:
|
// Ref:
|
||||||
// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx
|
// https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/
|
||||||
void AppendCommandLineArgument(const std::wstring& argument,
|
void AppendCommandLineArgument(const std::wstring& argument,
|
||||||
std::wstring* command_line) {
|
std::wstring* command_line) {
|
||||||
if (!command_line->empty()) {
|
if (!command_line->empty()) {
|
||||||
|
@ -53,7 +53,7 @@ void AppendCommandLineArgumentTest(size_t argc, const wchar_t* const argv[]) {
|
|||||||
|
|
||||||
TEST(CommandLine, AppendCommandLineArgument) {
|
TEST(CommandLine, AppendCommandLineArgument) {
|
||||||
// Most of these test cases come from
|
// Most of these test cases come from
|
||||||
// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx,
|
// https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/,
|
||||||
// which was also a reference for the implementation of
|
// which was also a reference for the implementation of
|
||||||
// AppendCommandLineArgument().
|
// AppendCommandLineArgument().
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace crashpad {
|
|||||||
//! `HANDLE` is a `typedef` for `void *`, but kernel `HANDLE` values aren’t
|
//! `HANDLE` is a `typedef` for `void *`, but kernel `HANDLE` values aren’t
|
||||||
//! pointers to anything. Only 32 bits of kernel `HANDLE`s are significant, even
|
//! pointers to anything. Only 32 bits of kernel `HANDLE`s are significant, even
|
||||||
//! in 64-bit processes on 64-bit operating systems. See <a
|
//! in 64-bit processes on 64-bit operating systems. See <a
|
||||||
//! href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384203">Interprocess
|
//! href="https://msdn.microsoft.com/library/aa384203.aspx">Interprocess
|
||||||
//! Communication Between 32-bit and 64-bit Applications</a>.
|
//! Communication Between 32-bit and 64-bit Applications</a>.
|
||||||
//!
|
//!
|
||||||
//! This function safely converts a kernel `HANDLE` to an `int` similarly to a
|
//! This function safely converts a kernel `HANDLE` to an `int` similarly to a
|
||||||
@ -45,7 +45,7 @@ int HandleToInt(HANDLE handle);
|
|||||||
//! `HANDLE` is a `typedef` for `void *`, but kernel `HANDLE` values aren’t
|
//! `HANDLE` is a `typedef` for `void *`, but kernel `HANDLE` values aren’t
|
||||||
//! pointers to anything. Only 32 bits of kernel `HANDLE`s are significant, even
|
//! pointers to anything. Only 32 bits of kernel `HANDLE`s are significant, even
|
||||||
//! in 64-bit processes on 64-bit operating systems. See <a
|
//! in 64-bit processes on 64-bit operating systems. See <a
|
||||||
//! href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384203">Interprocess
|
//! href="https://msdn.microsoft.com/library/aa384203.aspx">Interprocess
|
||||||
//! Communication Between 32-bit and 64-bit Applications</a>.
|
//! Communication Between 32-bit and 64-bit Applications</a>.
|
||||||
//!
|
//!
|
||||||
//! This function safely convert an `int` to a kernel `HANDLE` similarly to a
|
//! This function safely convert an `int` to a kernel `HANDLE` similarly to a
|
||||||
|
@ -76,7 +76,7 @@ NTSTATUS NtSuspendProcess(HANDLE handle);
|
|||||||
|
|
||||||
NTSTATUS NtResumeProcess(HANDLE handle);
|
NTSTATUS NtResumeProcess(HANDLE handle);
|
||||||
|
|
||||||
// From https://msdn.microsoft.com/en-us/library/cc678403(v=vs.85).aspx.
|
// From https://msdn.microsoft.com/library/cc678403.aspx.
|
||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct RTL_UNLOAD_EVENT_TRACE {
|
struct RTL_UNLOAD_EVENT_TRACE {
|
||||||
typename Traits::Pointer BaseAddress;
|
typename Traits::Pointer BaseAddress;
|
||||||
|
@ -72,7 +72,7 @@ class ProcessInfo {
|
|||||||
//! \brief The `ACCESS_MASK` for the handle in this process.
|
//! \brief The `ACCESS_MASK` for the handle in this process.
|
||||||
//!
|
//!
|
||||||
//! See
|
//! See
|
||||||
//! http://blogs.msdn.com/b/openspecification/archive/2010/04/01/about-the-access-mask-structure.aspx
|
//! https://blogs.msdn.microsoft.com/openspecification/2010/04/01/about-the-access_mask-structure/
|
||||||
//! for more information.
|
//! for more information.
|
||||||
uint32_t granted_access;
|
uint32_t granted_access;
|
||||||
|
|
||||||
@ -188,9 +188,9 @@ class ProcessInfo {
|
|||||||
// the presumed alignment and emits SSE instructions that require aligned
|
// the presumed alignment and emits SSE instructions that require aligned
|
||||||
// storage. clang-cl should relax (unfortunately), but in the mean time, this
|
// storage. clang-cl should relax (unfortunately), but in the mean time, this
|
||||||
// provides aligned storage. See https://crbug.com/564691 and
|
// provides aligned storage. See https://crbug.com/564691 and
|
||||||
// http://llvm.org/PR25779.
|
// https://llvm.org/PR25779.
|
||||||
//
|
//
|
||||||
// TODO(mark): Remove this workaround when http://llvm.org/PR25779 is fixed
|
// TODO(mark): Remove this workaround when https://llvm.org/PR25779 is fixed
|
||||||
// and the fix is present in the clang-cl that compiles this code.
|
// and the fix is present in the clang-cl that compiles this code.
|
||||||
MemoryBasicInformation64Vector memory_info_;
|
MemoryBasicInformation64Vector memory_info_;
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ struct PEB {
|
|||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct NT_TIB {
|
struct NT_TIB {
|
||||||
union {
|
union {
|
||||||
// See https://msdn.microsoft.com/en-us/library/dn424783.aspx.
|
// See https://msdn.microsoft.com/library/dn424783.aspx.
|
||||||
typename Traits::Pointer Wow64Teb;
|
typename Traits::Pointer Wow64Teb;
|
||||||
struct {
|
struct {
|
||||||
typename Traits::Pointer ExceptionList;
|
typename Traits::Pointer ExceptionList;
|
||||||
@ -306,7 +306,7 @@ struct NT_TIB {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// See https://msdn.microsoft.com/en-us/library/gg750647.aspx.
|
// See https://msdn.microsoft.com/library/gg750647.aspx.
|
||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct CLIENT_ID {
|
struct CLIENT_ID {
|
||||||
typename Traits::Pointer UniqueProcess;
|
typename Traits::Pointer UniqueProcess;
|
||||||
@ -314,8 +314,8 @@ struct CLIENT_ID {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// This is a partial definition of the TEB, as we do not currently use many
|
// This is a partial definition of the TEB, as we do not currently use many
|
||||||
// fields of it. See http://www.nirsoft.net/kernel_struct/vista/TEB.html, and
|
// fields of it. See https://nirsoft.net/kernel_struct/vista/TEB.html, and the
|
||||||
// the (arch-specific) definition of _TEB in winternl.h.
|
// (arch-specific) definition of _TEB in winternl.h.
|
||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct TEB {
|
struct TEB {
|
||||||
NT_TIB<Traits> NtTib;
|
NT_TIB<Traits> NtTib;
|
||||||
@ -334,7 +334,7 @@ struct TEB {
|
|||||||
typename Traits::Pointer TlsExpansionSlots;
|
typename Traits::Pointer TlsExpansionSlots;
|
||||||
};
|
};
|
||||||
|
|
||||||
// See https://msdn.microsoft.com/en-us/library/gg750724.aspx.
|
// See https://msdn.microsoft.com/library/gg750724.aspx.
|
||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct SYSTEM_THREAD_INFORMATION {
|
struct SYSTEM_THREAD_INFORMATION {
|
||||||
union {
|
union {
|
||||||
@ -400,7 +400,7 @@ struct VM_COUNTERS<internal::Traits64> {
|
|||||||
SIZE_T PrivateUsage;
|
SIZE_T PrivateUsage;
|
||||||
};
|
};
|
||||||
|
|
||||||
// See http://undocumented.ntinternals.net/source/usermode/undocumented%20functions/system%20information/structures/system_process_information.html
|
// https://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/System%20Information/Structures/SYSTEM_PROCESS_INFORMATION.html
|
||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct SYSTEM_PROCESS_INFORMATION {
|
struct SYSTEM_PROCESS_INFORMATION {
|
||||||
ULONG NextEntryOffset;
|
ULONG NextEntryOffset;
|
||||||
@ -436,7 +436,7 @@ struct SYSTEM_PROCESS_INFORMATION {
|
|||||||
SYSTEM_THREAD_INFORMATION<Traits> Threads[1];
|
SYSTEM_THREAD_INFORMATION<Traits> Threads[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
// http://undocumented.ntinternals.net/source/usermode/structures/thread_basic_information.html
|
// https://undocumented.ntinternals.net/source/usermode/structures/THREAD_BASIC_INFORMATION.html
|
||||||
template <class Traits>
|
template <class Traits>
|
||||||
struct THREAD_BASIC_INFORMATION {
|
struct THREAD_BASIC_INFORMATION {
|
||||||
union {
|
union {
|
||||||
|
@ -137,7 +137,7 @@ const void* GetSecurityDescriptorForNamedPipeInstance(size_t* size) {
|
|||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
static constexpr struct SecurityDescriptorBlob {
|
static constexpr struct SecurityDescriptorBlob {
|
||||||
// See https://msdn.microsoft.com/en-us/library/cc230366.aspx.
|
// See https://msdn.microsoft.com/library/cc230366.aspx.
|
||||||
SECURITY_DESCRIPTOR_RELATIVE sd_rel;
|
SECURITY_DESCRIPTOR_RELATIVE sd_rel;
|
||||||
struct {
|
struct {
|
||||||
ACL acl;
|
ACL acl;
|
||||||
|
@ -24,14 +24,14 @@ enum {
|
|||||||
//!
|
//!
|
||||||
//! Requesting `PROCESS_ALL_ACCESS` with the value defined when building
|
//! Requesting `PROCESS_ALL_ACCESS` with the value defined when building
|
||||||
//! against a Vista+ SDK results in `ERROR_ACCESS_DENIED` when running on XP.
|
//! against a Vista+ SDK results in `ERROR_ACCESS_DENIED` when running on XP.
|
||||||
//! See https://msdn.microsoft.com/en-ca/library/windows/desktop/ms684880.aspx
|
//! See https://msdn.microsoft.com/library/ms684880.aspx.
|
||||||
kXPProcessAllAccess = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF,
|
kXPProcessAllAccess = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF,
|
||||||
|
|
||||||
//! \brief This is the XP-suitable value of `THREAD_ALL_ACCESS`.
|
//! \brief This is the XP-suitable value of `THREAD_ALL_ACCESS`.
|
||||||
//!
|
//!
|
||||||
//! Requesting `THREAD_ALL_ACCESS` with the value defined when building
|
//! Requesting `THREAD_ALL_ACCESS` with the value defined when building
|
||||||
//! against a Vista+ SDK results in `ERROR_ACCESS_DENIED` when running on XP.
|
//! against a Vista+ SDK results in `ERROR_ACCESS_DENIED` when running on XP.
|
||||||
//! See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686769.aspx
|
//! See https://msdn.microsoft.com/library/ms686769.aspx.
|
||||||
kXPThreadAllAccess = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF,
|
kXPThreadAllAccess = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user