mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-29 20:07:30 +09:00
Remove base conditional code for crash reporter and injector.
This commit is contained in:
parent
87fa26d31e
commit
434f3590e3
131 changed files with 39 additions and 4139 deletions
|
|
@ -9,9 +9,6 @@
|
|||
#include "mozilla/Sprintf.h"
|
||||
#include "mozilla/SyncRunnable.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
# include "nsICrashService.h"
|
||||
#endif
|
||||
|
||||
namespace mozilla {
|
||||
namespace ipc {
|
||||
|
|
@ -24,105 +21,5 @@ CrashReporterHost::CrashReporterHost(GeckoProcessType aProcessType,
|
|||
{
|
||||
}
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
void
|
||||
CrashReporterHost::GenerateCrashReport(RefPtr<nsIFile> aCrashDump)
|
||||
{
|
||||
nsString dumpID;
|
||||
if (!CrashReporter::GetIDFromMinidump(aCrashDump, dumpID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
CrashReporter::AnnotationTable notes;
|
||||
|
||||
nsAutoCString type;
|
||||
switch (mProcessType) {
|
||||
case GeckoProcessType_Content:
|
||||
type = NS_LITERAL_CSTRING("content");
|
||||
break;
|
||||
case GeckoProcessType_Plugin:
|
||||
case GeckoProcessType_GMPlugin:
|
||||
type = NS_LITERAL_CSTRING("plugin");
|
||||
break;
|
||||
case GeckoProcessType_GPU:
|
||||
type = NS_LITERAL_CSTRING("gpu");
|
||||
break;
|
||||
default:
|
||||
NS_ERROR("unknown process type");
|
||||
break;
|
||||
}
|
||||
notes.Put(NS_LITERAL_CSTRING("ProcessType"), type);
|
||||
|
||||
char startTime[32];
|
||||
SprintfLiteral(startTime, "%lld", static_cast<long long>(mStartTime));
|
||||
notes.Put(NS_LITERAL_CSTRING("StartupTime"), nsDependentCString(startTime));
|
||||
|
||||
CrashReporterMetadataShmem::ReadAppNotes(mShmem, ¬es);
|
||||
|
||||
CrashReporter::AppendExtraData(dumpID, notes);
|
||||
NotifyCrashService(mProcessType, dumpID, ¬es);
|
||||
}
|
||||
|
||||
/* static */ void
|
||||
CrashReporterHost::NotifyCrashService(GeckoProcessType aProcessType,
|
||||
const nsString& aChildDumpID,
|
||||
const AnnotationTable* aNotes)
|
||||
{
|
||||
if (!NS_IsMainThread()) {
|
||||
RefPtr<Runnable> runnable = NS_NewRunnableFunction([=] () -> void {
|
||||
CrashReporterHost::NotifyCrashService(aProcessType, aChildDumpID, aNotes);
|
||||
});
|
||||
RefPtr<nsIThread> mainThread = do_GetMainThread();
|
||||
SyncRunnable::DispatchToThread(mainThread, runnable);
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!aChildDumpID.IsEmpty());
|
||||
|
||||
nsCOMPtr<nsICrashService> crashService =
|
||||
do_GetService("@mozilla.org/crashservice;1");
|
||||
if (!crashService) {
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t processType;
|
||||
int32_t crashType = nsICrashService::CRASH_TYPE_CRASH;
|
||||
|
||||
nsCString telemetryKey;
|
||||
|
||||
switch (aProcessType) {
|
||||
case GeckoProcessType_Content:
|
||||
processType = nsICrashService::PROCESS_TYPE_CONTENT;
|
||||
telemetryKey.AssignLiteral("content");
|
||||
break;
|
||||
case GeckoProcessType_Plugin: {
|
||||
processType = nsICrashService::PROCESS_TYPE_PLUGIN;
|
||||
telemetryKey.AssignLiteral("plugin");
|
||||
nsAutoCString val;
|
||||
if (aNotes->Get(NS_LITERAL_CSTRING("PluginHang"), &val) &&
|
||||
val.Equals(NS_LITERAL_CSTRING("1"))) {
|
||||
crashType = nsICrashService::CRASH_TYPE_HANG;
|
||||
telemetryKey.AssignLiteral("pluginhang");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GeckoProcessType_GMPlugin:
|
||||
processType = nsICrashService::PROCESS_TYPE_GMPLUGIN;
|
||||
telemetryKey.AssignLiteral("gmplugin");
|
||||
break;
|
||||
case GeckoProcessType_GPU:
|
||||
processType = nsICrashService::PROCESS_TYPE_GPU;
|
||||
telemetryKey.AssignLiteral("gpu");
|
||||
break;
|
||||
default:
|
||||
NS_ERROR("unknown process type");
|
||||
return;
|
||||
}
|
||||
|
||||
crashService->AddCrash(processType, crashType, aChildDumpID);
|
||||
Telemetry::Accumulate(Telemetry::SUBPROCESS_CRASHES_WITH_DUMP, telemetryKey, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace ipc
|
||||
} // namespace mozilla
|
||||
|
|
|
|||
|
|
@ -28,26 +28,6 @@ class CrashReporterHost
|
|||
public:
|
||||
CrashReporterHost(GeckoProcessType aProcessType, const Shmem& aShmem);
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
void GenerateCrashReport(base::ProcessId aPid) {
|
||||
RefPtr<nsIFile> crashDump;
|
||||
if (!XRE_TakeMinidumpForChild(aPid, getter_AddRefs(crashDump), nullptr)) {
|
||||
return;
|
||||
}
|
||||
GenerateCrashReport(crashDump);
|
||||
}
|
||||
|
||||
// This is a static helper function to notify the crash service that a
|
||||
// crash has occurred. When PCrashReporter is removed, we can make this
|
||||
// a member function. This can be called from any thread, and if not
|
||||
// called from the main thread, will post a synchronous message to the
|
||||
// main thread.
|
||||
static void NotifyCrashService(
|
||||
GeckoProcessType aProcessType,
|
||||
const nsString& aChildDumpID,
|
||||
const AnnotationTable* aNotes);
|
||||
#endif
|
||||
|
||||
private:
|
||||
void GenerateCrashReport(RefPtr<nsIFile> aCrashDump);
|
||||
|
||||
|
|
|
|||
|
|
@ -208,28 +208,5 @@ private:
|
|||
EntryType mEntryType;
|
||||
};
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
void
|
||||
CrashReporterMetadataShmem::ReadAppNotes(const Shmem& aShmem, CrashReporter::AnnotationTable* aNotes)
|
||||
{
|
||||
for (MetadataShmemReader reader(aShmem); !reader.Done(); reader.Next()) {
|
||||
switch (reader.Type()) {
|
||||
case EntryType::Annotation: {
|
||||
nsCString key, value;
|
||||
if (!reader.Read(key) || !reader.Read(value)) {
|
||||
return;
|
||||
}
|
||||
|
||||
aNotes->Put(key, value);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
NS_ASSERTION(false, "Unknown metadata entry type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace ipc
|
||||
} // namespace mozilla
|
||||
|
|
|
|||
|
|
@ -28,10 +28,6 @@ public:
|
|||
void AnnotateCrashReport(const nsCString& aKey, const nsCString& aData);
|
||||
void AppendAppNotes(const nsCString& aData);
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
static void ReadAppNotes(const Shmem& aShmem, CrashReporter::AnnotationTable* aNotes);
|
||||
#endif
|
||||
|
||||
private:
|
||||
void SyncNotesToShmem();
|
||||
|
||||
|
|
|
|||
|
|
@ -307,12 +307,6 @@ GeckoChildProcessHost::GetUniqueID()
|
|||
void
|
||||
GeckoChildProcessHost::PrepareLaunch()
|
||||
{
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
if (CrashReporter::GetEnabled()) {
|
||||
CrashReporter::OOPInit();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
if (mProcessType == GeckoProcessType_Plugin) {
|
||||
InitWindowsGroupID();
|
||||
|
|
@ -902,26 +896,6 @@ GeckoChildProcessHost::PerformAsyncLaunchInternal(std::vector<std::string>& aExt
|
|||
|
||||
childArgv.push_back(pidstring);
|
||||
|
||||
#if defined(MOZ_CRASHREPORTER)
|
||||
# if defined(OS_LINUX) || defined(OS_BSD)
|
||||
int childCrashFd, childCrashRemapFd;
|
||||
if (!CrashReporter::CreateNotificationPipeForChild(
|
||||
&childCrashFd, &childCrashRemapFd))
|
||||
return false;
|
||||
if (0 <= childCrashFd) {
|
||||
mFileMap.push_back(std::pair<int,int>(childCrashFd, childCrashRemapFd));
|
||||
// "true" == crash reporting enabled
|
||||
childArgv.push_back("true");
|
||||
}
|
||||
else {
|
||||
// "false" == crash reporting disabled
|
||||
childArgv.push_back("false");
|
||||
}
|
||||
# elif defined(MOZ_WIDGET_COCOA)
|
||||
childArgv.push_back(CrashReporter::GetChildNotificationPipe());
|
||||
# endif // OS_LINUX
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_WIDGET_COCOA
|
||||
// Add a mach port to the command line so the child can communicate its
|
||||
// 'task_t' back to the parent.
|
||||
|
|
@ -1139,11 +1113,6 @@ GeckoChildProcessHost::PerformAsyncLaunchInternal(std::vector<std::string>& aExt
|
|||
// Process id
|
||||
cmdLine.AppendLooseValue(UTF8ToWide(pidstring));
|
||||
|
||||
#if defined(MOZ_CRASHREPORTER)
|
||||
cmdLine.AppendLooseValue(
|
||||
UTF8ToWide(CrashReporter::GetChildNotificationPipe()));
|
||||
#endif
|
||||
|
||||
// Process type
|
||||
cmdLine.AppendLooseValue(UTF8ToWide(childProcessType));
|
||||
|
||||
|
|
|
|||
|
|
@ -25,9 +25,6 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
#include "nsExceptionHandler.h"
|
||||
#endif
|
||||
#include "nsID.h"
|
||||
#include "nsIWidget.h"
|
||||
#include "nsMemory.h"
|
||||
|
|
@ -127,16 +124,8 @@ struct EnumSerializer {
|
|||
static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult) {
|
||||
uintParamType value;
|
||||
if (!ReadParam(aMsg, aIter, &value)) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("IPCReadErrorReason"),
|
||||
NS_LITERAL_CSTRING("Bad iter"));
|
||||
#endif
|
||||
return false;
|
||||
} else if (!EnumValidator::IsLegalValue(paramType(value))) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("IPCReadErrorReason"),
|
||||
NS_LITERAL_CSTRING("Illegal value"));
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
*aResult = paramType(value);
|
||||
|
|
|
|||
|
|
@ -19,10 +19,6 @@
|
|||
#include "mozilla/ipc/Neutering.h"
|
||||
#endif // defined(OS_WIN)
|
||||
#include "mozilla/ipc/Transport.h"
|
||||
#if defined(MOZ_CRASHREPORTER) && defined(OS_WIN)
|
||||
#include "mozilla/mozalloc_oom.h"
|
||||
#include "nsExceptionHandler.h"
|
||||
#endif
|
||||
#include "MessageLink.h"
|
||||
|
||||
#include <deque>
|
||||
|
|
|
|||
|
|
@ -14,9 +14,6 @@
|
|||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/DebugOnly.h"
|
||||
#include "nsDebug.h"
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
#include "nsExceptionHandler.h"
|
||||
#endif
|
||||
#include "nsISupportsImpl.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
|
||||
|
|
@ -135,10 +132,6 @@ void
|
|||
ProcessLink::SendMessage(Message *msg)
|
||||
{
|
||||
if (msg->size() > IPC::Channel::kMaximumMessageSize) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("IPCMessageName"), nsDependentCString(msg->name()));
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("IPCMessageSize"), nsPrintfCString("%d", msg->size()));
|
||||
#endif
|
||||
MOZ_CRASH("IPC message size is too large");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,13 +25,6 @@
|
|||
#include "mozilla/sandboxTarget.h"
|
||||
#endif
|
||||
|
||||
#if defined(MOZ_CRASHREPORTER) && defined(XP_WIN)
|
||||
#include "aclapi.h"
|
||||
#include "sddl.h"
|
||||
|
||||
#include "mozilla/TypeTraits.h"
|
||||
#endif
|
||||
|
||||
#include "nsAutoPtr.h"
|
||||
|
||||
using namespace IPC;
|
||||
|
|
@ -42,16 +35,6 @@ using base::ProcessId;
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
#if defined(MOZ_CRASHREPORTER) && defined(XP_WIN)
|
||||
// Generate RAII classes for LPTSTR and PSECURITY_DESCRIPTOR.
|
||||
MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedLPTStr, \
|
||||
RemovePointer<LPTSTR>::Type, \
|
||||
::LocalFree)
|
||||
MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedPSecurityDescriptor, \
|
||||
RemovePointer<PSECURITY_DESCRIPTOR>::Type, \
|
||||
::LocalFree)
|
||||
#endif
|
||||
|
||||
namespace ipc {
|
||||
|
||||
class ChannelOpened : public IPC::Message
|
||||
|
|
@ -195,11 +178,6 @@ bool DuplicateHandle(HANDLE aSourceHandle,
|
|||
FALSE,
|
||||
aTargetProcessId));
|
||||
if (!targetProcess) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
CrashReporter::AnnotateCrashReport(
|
||||
NS_LITERAL_CSTRING("IPCTransportFailureReason"),
|
||||
NS_LITERAL_CSTRING("Failed to open target process."));
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -209,34 +187,6 @@ bool DuplicateHandle(HANDLE aSourceHandle,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
void
|
||||
AnnotateSystemError()
|
||||
{
|
||||
int64_t error = 0;
|
||||
#if defined(XP_WIN)
|
||||
error = ::GetLastError();
|
||||
#elif defined(OS_POSIX)
|
||||
error = errno;
|
||||
#endif
|
||||
if (error) {
|
||||
CrashReporter::AnnotateCrashReport(
|
||||
NS_LITERAL_CSTRING("IPCSystemError"),
|
||||
nsPrintfCString("%lld", error));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(MOZ_CRASHREPORTER) && defined(XP_MACOSX)
|
||||
void
|
||||
AnnotateCrashReportWithErrno(const char* tag, int error)
|
||||
{
|
||||
CrashReporter::AnnotateCrashReport(
|
||||
nsCString(tag),
|
||||
nsPrintfCString("%d", error));
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
LogMessageForProtocol(const char* aTopLevelProtocol, base::ProcessId aOtherPid,
|
||||
const char* aContextDescription,
|
||||
|
|
@ -274,18 +224,6 @@ FatalError(const char* aProtocolName, const char* aMsg, bool aIsParent)
|
|||
formattedMessage.AppendLiteral("]: \"");
|
||||
formattedMessage.AppendASCII(aMsg);
|
||||
if (aIsParent) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
// We're going to crash the parent process because at this time
|
||||
// there's no other really nice way of getting a minidump out of
|
||||
// this process if we're off the main thread.
|
||||
formattedMessage.AppendLiteral("\". Intentionally crashing.");
|
||||
NS_ERROR(formattedMessage.get());
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("IPCFatalErrorProtocol"),
|
||||
nsDependentCString(aProtocolName));
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("IPCFatalErrorMsg"),
|
||||
nsDependentCString(aMsg));
|
||||
AnnotateSystemError();
|
||||
#endif
|
||||
MOZ_CRASH("IPC FatalError in the parent process!");
|
||||
} else {
|
||||
formattedMessage.AppendLiteral("\". abort()ing as a result.");
|
||||
|
|
@ -540,12 +478,9 @@ IToplevelProtocol::SetOtherProcessId(base::ProcessId aOtherPid)
|
|||
bool
|
||||
IToplevelProtocol::TakeMinidump(nsIFile** aDump, uint32_t* aSequence)
|
||||
{
|
||||
/*** STUB ***/
|
||||
MOZ_RELEASE_ASSERT(GetSide() == ParentSide);
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
return XRE_TakeMinidumpForChild(OtherPid(), aDump, aSequence);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -472,14 +472,10 @@ DuplicateHandle(HANDLE aSourceHandle,
|
|||
#endif
|
||||
|
||||
/**
|
||||
* Annotate the crash reporter with the error code from the most recent system
|
||||
* call. Returns the system error.
|
||||
* Hist: Annotated the crash reporter with the error code from the most
|
||||
* recent system call. Returned the system error.
|
||||
*/
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
void AnnotateSystemError();
|
||||
#else
|
||||
#define AnnotateSystemError() do { } while (0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* An endpoint represents one end of a partially initialized IPDL channel. To
|
||||
|
|
@ -599,12 +595,8 @@ private:
|
|||
ProtocolId mProtocolId;
|
||||
};
|
||||
|
||||
#if defined(MOZ_CRASHREPORTER) && defined(XP_MACOSX)
|
||||
void AnnotateCrashReportWithErrno(const char* tag, int error);
|
||||
#else
|
||||
static inline void AnnotateCrashReportWithErrno(const char* tag, int error)
|
||||
{}
|
||||
#endif
|
||||
|
||||
// This function is used internally to create a pair of Endpoints. See the
|
||||
// comment above Endpoint for a description of how it might be used.
|
||||
|
|
|
|||
|
|
@ -2610,13 +2610,6 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
|||
'"'+ _protocolHeaderName(self.protocol, self.side) +'.h"') ]
|
||||
+ setToIncludes(self.externalIncludes))
|
||||
|
||||
if self.protocol.decl.type.isToplevel():
|
||||
cf.addthings([
|
||||
CppDirective('ifdef', 'MOZ_CRASHREPORTER'),
|
||||
CppDirective(' include', '"nsXULAppAPI.h"'),
|
||||
CppDirective('endif')
|
||||
])
|
||||
|
||||
cppheaders = [CppDirective('include', '"%s"' % filename)
|
||||
for filename in ipdl.builtin.CppIncludes]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue