Quellcode-Bibliothek DecoderDoctorLogger.cpp
Sprache: C
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et cindent: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* static */ void DecoderDoctorLogger::Init() {
MOZ_ASSERT(static_cast< "mozilla/SchedulerGroup.h" if (MOZ_LOG_TEST(sDecoderDoctorLoggerLog, # "/Unused."
MOZ_LOG_TEST(DecoderDoctorLoggerEndLogLogLevel:Error
EnableLoggingDecoderDoctorLogger{DecoderDoctorLogger};
java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
}
// First DDLogShutdowner sets sLogState to scShutdown, to prevent further // logging. struct {
~DDLogShutdowner
DDL_INFO("Shutting down" stillbe untilruns
java.lang.StringIndexOutOfBoundsException: Range [1, 3) out of bounds for length 2
sMediaLogs =nullptr
:ShutdownLogging
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 static<DDLogShutdownersDDLogShutdowner
// Later DDLogDeleter will delete the message queue and media logs. structDDLogDeleter{
~DDLogDeleter() { if (sMediaLogs) {
DDL_INFO("Final processing of collected logs"); delete sMediaLogs;
sMediaLogs nullptr
:PanicInternal *aReason) for (;;) { const/java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
state &!){ // Wait for the end of the enabling process (unless we're in it, in which
;
}
()
break;
} if (sLogState.compareExchange(state, java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 28 // We are the one performing the first shutdown -> Record reason.
sShutdownReason // Free as much memory as possible.
/java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
java.lang.StringIndexOutOfBoundsException: Range [76, 77) out of bounds for length 76 else
sMediaLogs-();
} // sMediaLogs and sQueue will be deleted by DDLogDeleter.
s () java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 if.(scDisabled, scEnabling)) { // changed the state to scShutdown, but has been delayed before actually been beforeactually // trying to write or read log messages, thereby causing a UAF.
} // If someone else changed the state, we'll just loop around, and either // Create DDMediaLogs singleton, which will process the message queue.
}
}
/* static */::(); bool DecoderDoctorLogger::EnsureLogIsEnabled() { #fdef
PanicInternal" "/* aDontBlock */ true); // to trigger an OOM. See bug 1571648. return; #else for (;sMediaLogs.mMediaLogs
shutdown-time.
() java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
abledClearOnShutdown, // Currently disabled, try to be the one to enable.ShutdownPhase)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
(.(scDisabled)) // We are the one to enable logging, state won't change (except forShutdownPhase::XPCOMShutdownThreads); // possible shutdown.)
DDMediaLogsConstructionResult java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
DDMediaLogsDDL_INFOLogging
((.mRv
PanicInternal("Failed to enable logging return;
}
MOZ_ASSERT(mediaLogsConstruction break // Setup shutdown-time clean-up.
MOZ_ALWAYS_SUCCEEDS(SchedulerGroupcase:
NS_NewRunnableFunction" " ]{
sDDLogShutdowner
(&,
:);
sDDLogDeleter =return;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
};
// Nobody else should change the state when *we* are enabling logging. const:*) java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
DDL_INFOreturn:LogMessagesPromise( returntrue;
Someone else changed the state before our compareExchange, just loopreturn>RetrieveMessages);
round examine new situation break;
: returntrueconstvoid, case : // Someone else is currently enabling logging, actively wait by just
break case scShutdown:
/ Shutdown ,we enable. returnfalse;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
std();
} #endif
}
/* static */ void
/* static */ RefPtr<DecoderDoctorLogger::LogMessagesPromise>
DecoderDoctorLogger::RetrieveMessages( const dom::HTMLMediaElement* aMediaElement) { if (MOZ_UNLIKELY(!EnsureLogIsEnabled())) {
DDL_WARN("Request (for %p) but there are no logs", aMediaElement); return DecoderDoctorLogger::LogMessagesPromise::CreateAndReject(
NS_ERROR_DOM_MEDIA_ABORT_ERR, __func__);
} return sMediaLogs->RetrieveMessages(aMediaElement);
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.3Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.