Diff
Modified: trunk/ChangeLog (283468 => 283469)
--- trunk/ChangeLog 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/ChangeLog 2021-10-03 17:19:59 UTC (rev 283469)
@@ -1,3 +1,15 @@
+2021-10-03 Basuke Suzuki <[email protected]>
+
+ Enable release log to stderr
+ https://bugs.webkit.org/show_bug.cgi?id=230725
+ <rdar://problem/83740529>
+
+ Reviewed by Michael Catanzaro.
+
+ Introduced new flags, USE_LOG_STDERR for release logging to stderr.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
2021-10-02 Philippe Normand <[email protected]>
[GTK][WPE] Enable bwrap launcher build on bots
Modified: trunk/Source/WTF/ChangeLog (283468 => 283469)
--- trunk/Source/WTF/ChangeLog 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/ChangeLog 2021-10-03 17:19:59 UTC (rev 283469)
@@ -1,3 +1,20 @@
+2021-10-03 Basuke Suzuki <[email protected]>
+
+ Enable release log to stderr
+ https://bugs.webkit.org/show_bug.cgi?id=230725
+ <rdar://problem/83740529>
+
+ Reviewed by Michael Catanzaro.
+
+ Define new compiler definitions, USE_LOG_STDERR for release logging. We don't have
+ modern logging backend so that dumping out to stdout/stderr is still very valuable.
+
+ * wtf/Assertions.cpp:
+ * wtf/Assertions.h:
+ * wtf/Logger.h:
+ (WTF::Logger::log):
+ (WTF::Logger::logVerbose):
+
2021-10-02 Philippe Normand <[email protected]>
[GLib] Media session manager unable to handle more than one session
Modified: trunk/Source/WTF/wtf/Assertions.cpp (283468 => 283469)
--- trunk/Source/WTF/wtf/Assertions.cpp 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/wtf/Assertions.cpp 2021-10-03 17:19:59 UTC (rev 283469)
@@ -59,7 +59,7 @@
#include <unistd.h>
#endif
-#if USE(JOURNALD)
+#if !RELEASE_LOG_DISABLED && !USE(OS_LOG)
#include <wtf/StringPrintStream.h>
#endif
@@ -601,7 +601,7 @@
os_log(channel->osLogChannel, "%-3d %p %{public}s", frameNumber, stackFrame, demangled->mangledName());
else
os_log(channel->osLogChannel, "%-3d %p", frameNumber, stackFrame);
-#elif USE(JOURNALD)
+#else
StringPrintStream out;
if (demangled && demangled->demangledName())
out.printf("%-3d %p %s", frameNumber, stackFrame, demangled->demangledName());
@@ -609,8 +609,12 @@
out.printf("%-3d %p %s", frameNumber, stackFrame, demangled->mangledName());
else
out.printf("%-3d %p", frameNumber, stackFrame);
+#if USE(JOURNALD)
sd_journal_send("WEBKIT_SUBSYSTEM=%s", channel->subsystem, "WEBKIT_CHANNEL=%s", channel->name, "MESSAGE=%s", out.toCString().data(), nullptr);
+#else
+ fprintf(stderr, "[%s:%s:-] %s\n", channel->subsystem, channel->name, out.toCString().data());
#endif
+#endif
}
}
}
Modified: trunk/Source/WTF/wtf/Assertions.h (283468 => 283469)
--- trunk/Source/WTF/wtf/Assertions.h 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/wtf/Assertions.h 2021-10-03 17:19:59 UTC (rev 283469)
@@ -95,7 +95,9 @@
#define LOG_DISABLED !ASSERT_ENABLED
#endif
-#ifndef RELEASE_LOG_DISABLED
+#if ENABLE(RELEASE_LOG)
+#define RELEASE_LOG_DISABLED 0
+#else
#define RELEASE_LOG_DISABLED !(USE(OS_LOG) || USE(JOURNALD))
#endif
@@ -163,10 +165,10 @@
WTFLogLevel level;
#if !RELEASE_LOG_DISABLED
const char* subsystem;
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#if USE(OS_LOG)
__unsafe_unretained os_log_t osLogChannel;
#endif
+#endif
} WTFLogChannel;
#define LOG_CHANNEL(name) JOIN_LOG_CHANNEL_WITH_PREFIX(LOG_CHANNEL_PREFIX, name)
@@ -178,6 +180,8 @@
#define LOG_CHANNEL_WEBKIT_SUBSYSTEM "WebKitGTK"
#elif PLATFORM(WPE)
#define LOG_CHANNEL_WEBKIT_SUBSYSTEM "WPEWebKit"
+#elif PLATFORM(PLAYSTATION)
+#define LOG_CHANNEL_WEBKIT_SUBSYSTEM "SceNKWebKit"
#else
#define LOG_CHANNEL_WEBKIT_SUBSYSTEM "com.apple.WebKit"
#endif
@@ -189,12 +193,10 @@
#if RELEASE_LOG_DISABLED
#define DEFINE_LOG_CHANNEL_WITH_DETAILS(name, initialState, level, subsystem) \
WTFLogChannel LOG_CHANNEL(name) = { initialState, #name, level };
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
#define DEFINE_LOG_CHANNEL_WITH_DETAILS(name, initialState, level, subsystem) \
WTFLogChannel LOG_CHANNEL(name) = { initialState, #name, level, subsystem, OS_LOG_DEFAULT };
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#else
#define DEFINE_LOG_CHANNEL_WITH_DETAILS(name, initialState, level, subsystem) \
WTFLogChannel LOG_CHANNEL(name) = { initialState, #name, level, subsystem };
#endif
@@ -528,6 +530,7 @@
/* RELEASE_LOG */
#if RELEASE_LOG_DISABLED
+
#define PUBLIC_LOG_STRING "s"
#define PRIVATE_LOG_STRING "s"
#define RELEASE_LOG(channel, ...) ((void)0)
@@ -543,9 +546,9 @@
#define RELEASE_LOG_WITH_LEVEL_IF(isAllowed, channel, level, ...) do { if (isAllowed) RELEASE_LOG_WITH_LEVEL(channel, level, __VA_ARGS__); } while (0)
#define RELEASE_LOG_STACKTRACE(channel) ((void)0)
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
+
#define PUBLIC_LOG_STRING "{public}s"
#define PRIVATE_LOG_STRING "{private}s"
#define RELEASE_LOG(channel, ...) os_log(LOG_CHANNEL(channel).osLogChannel, __VA_ARGS__)
@@ -561,9 +564,9 @@
if ((isAllowed) && LOG_CHANNEL(channel).level >= (logLevel)) \
os_log(LOG_CHANNEL(channel).osLogChannel, __VA_ARGS__); \
} while (0)
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#elif USE(JOURNALD)
+
#define PUBLIC_LOG_STRING "s"
#define PRIVATE_LOG_STRING "s"
#define SD_JOURNAL_SEND(channel, priority, file, line, function, ...) do { \
@@ -587,6 +590,32 @@
if ((isAllowed) && LOG_CHANNEL(channel).level >= (logLevel)) \
SD_JOURNAL_SEND(channel, LOG_INFO, __FILE__, _STRINGIFY(__LINE__), __func__, __VA_ARGS__); \
} while (0)
+
+#else
+
+#define PUBLIC_LOG_STRING "s"
+#define PRIVATE_LOG_STRING "s"
+#define LOGF(channel, priority, fmt, ...) do { \
+ auto& logChannel = LOG_CHANNEL(channel); \
+ if (logChannel.state != WTFLogChannelState::Off) \
+ fprintf(stderr, "[%s:%s:%i] " fmt "\n", logChannel.subsystem, logChannel.name, priority, ##__VA_ARGS__); \
+} while (0)
+
+#define RELEASE_LOG(channel, ...) LOGF(channel, 4, __VA_ARGS__)
+#define RELEASE_LOG_ERROR(channel, ...) LOGF(channel, 1, __VA_ARGS__)
+#define RELEASE_LOG_FAULT(channel, ...) LOGF(channel, 2, __VA_ARGS__)
+#define RELEASE_LOG_INFO(channel, ...) LOGF(channel, 3, __VA_ARGS__)
+
+#define RELEASE_LOG_WITH_LEVEL(channel, logLevel, ...) do { \
+ if (LOG_CHANNEL(channel).level >= (logLevel)) \
+ LOGF(channel, logLevel, __VA_ARGS__); \
+} while (0)
+
+#define RELEASE_LOG_WITH_LEVEL_IF(isAllowed, channel, logLevel, ...) do { \
+ if ((isAllowed) && LOG_CHANNEL(channel).level >= (logLevel)) \
+ LOGF(channel, logLevel, __VA_ARGS__); \
+} while (0)
+
#endif
#if !RELEASE_LOG_DISABLED
Modified: trunk/Source/WTF/wtf/Logger.h (283468 => 283469)
--- trunk/Source/WTF/wtf/Logger.h 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/wtf/Logger.h 2021-10-03 17:19:59 UTC (rev 283469)
@@ -25,6 +25,7 @@
#pragma once
+#include <wtf/Assertions.h>
#include <wtf/Lock.h>
#include <wtf/ThreadSafeRefCounted.h>
#include <wtf/text/StringBuilder.h>
@@ -311,12 +312,12 @@
#if RELEASE_LOG_DISABLED
WTFLog(&channel, "%s", logMessage.utf8().data());
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
os_log(channel.osLogChannel, "%{public}s", logMessage.utf8().data());
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#elif USE(JOURNALD)
sd_journal_send("WEBKIT_SUBSYSTEM=%s", channel.subsystem, "WEBKIT_CHANNEL=%s", channel.name, "MESSAGE=%s", logMessage.utf8().data(), nullptr);
+#else
+ fprintf(stderr, "[%s:%s:-] %s\n", channel.subsystem, channel.name, logMessage.utf8().data());
#endif
if (channel.state == WTFLogChannelState::Off || level > channel.level)
@@ -337,17 +338,17 @@
#if RELEASE_LOG_DISABLED
WTFLogVerbose(file, line, function, &channel, "%s", logMessage.utf8().data());
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
os_log(channel.osLogChannel, "%{public}s", logMessage.utf8().data());
UNUSED_PARAM(file);
UNUSED_PARAM(line);
UNUSED_PARAM(function);
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#elif USE(JOURNALD)
auto fileString = makeString("CODE_FILE=", file);
auto lineString = makeString("CODE_LINE=", line);
sd_journal_send_with_location(fileString.utf8().data(), lineString.utf8().data(), function, "WEBKIT_SUBSYSTEM=%s", channel.subsystem, "WEBKIT_CHANNEL=%s", channel.name, "MESSAGE=%s", logMessage.utf8().data(), nullptr);
+#else
+ fprintf(stderr, "[%s:%s:-] %s FILE=%s:%d %s\n", channel.subsystem, channel.name, logMessage.utf8().data(), file, line, function);
#endif
if (channel.state == WTFLogChannelState::Off || level > channel.level)
Modified: trunk/Source/WebCore/ChangeLog (283468 => 283469)
--- trunk/Source/WebCore/ChangeLog 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WebCore/ChangeLog 2021-10-03 17:19:59 UTC (rev 283469)
@@ -1,3 +1,23 @@
+2021-10-03 Basuke Suzuki <[email protected]>
+
+ Enable release log to stderr
+ https://bugs.webkit.org/show_bug.cgi?id=230725
+ <rdar://problem/83740529>
+
+ Reviewed by Michael Catanzaro.
+
+ SQLiteDatabase uses hard-coded %{public} format specifiers. Replace them with defined
+ macro.
+
+ No new tests because there is no behavior change.
+
+ * platform/sql/SQLiteDatabase.cpp:
+ (WebCore::SQLiteDatabase::close):
+ (WebCore::SQLiteDatabase::prepareStatementSlow):
+ (WebCore::SQLiteDatabase::prepareStatement):
+ (WebCore::SQLiteDatabase::prepareHeapStatementSlow):
+ (WebCore::SQLiteDatabase::prepareHeapStatement):
+
2021-10-03 Simon Fraser <[email protected]>
REGRESSION (r283335): rubber-banding no longer locks to an axis
Modified: trunk/Source/WebCore/platform/sql/SQLiteDatabase.cpp (283468 => 283469)
--- trunk/Source/WebCore/platform/sql/SQLiteDatabase.cpp 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WebCore/platform/sql/SQLiteDatabase.cpp 2021-10-03 17:19:59 UTC (rev 283469)
@@ -261,7 +261,7 @@
closeResult = sqlite3_close(db);
if (closeResult != SQLITE_OK)
- RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::close: Failed to close database (%d) - %{public}s", closeResult, lastErrorMsg());
+ RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::close: Failed to close database (%d) - %" PUBLIC_LOG_STRING, closeResult, lastErrorMsg());
}
if (shouldSetErrorState == ShouldSetErrorState::Yes) {
@@ -717,7 +717,7 @@
CString query = queryString.stripWhiteSpace().utf8();
auto sqlStatement = constructAndPrepareStatement(*this, query.data(), query.length());
if (!sqlStatement) {
- RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %{public}s", query.data());
+ RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.data());
return makeUnexpected(sqlStatement.error());
}
return SQLiteStatement { *this, sqlStatement.value() };
@@ -727,7 +727,7 @@
{
auto sqlStatement = constructAndPrepareStatement(*this, query.characters(), query.length());
if (!sqlStatement) {
- RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %{public}s", query.characters());
+ RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.characters());
return makeUnexpected(sqlStatement.error());
}
return SQLiteStatement { *this, sqlStatement.value() };
@@ -738,7 +738,7 @@
CString query = queryString.stripWhiteSpace().utf8();
auto sqlStatement = constructAndPrepareStatement(*this, query.data(), query.length());
if (!sqlStatement) {
- RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %{public}s", query.data());
+ RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.data());
return makeUnexpected(sqlStatement.error());
}
return UniqueRef<SQLiteStatement>(*new SQLiteStatement(*this, sqlStatement.value()));
@@ -748,7 +748,7 @@
{
auto sqlStatement = constructAndPrepareStatement(*this, query.characters(), query.length());
if (!sqlStatement) {
- RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %{public}s", query.characters());
+ RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.characters());
return makeUnexpected(sqlStatement.error());
}
return UniqueRef<SQLiteStatement>(*new SQLiteStatement(*this, sqlStatement.value()));
Modified: trunk/Source/cmake/WebKitFeatures.cmake (283468 => 283469)
--- trunk/Source/cmake/WebKitFeatures.cmake 2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/cmake/WebKitFeatures.cmake 2021-10-03 17:19:59 UTC (rev 283469)
@@ -195,6 +195,7 @@
WEBKIT_OPTION_DEFINE(ENABLE_PICTURE_IN_PICTURE_API "Toggle Picture-in-Picture API support" PRIVATE OFF)
WEBKIT_OPTION_DEFINE(ENABLE_POINTER_LOCK "Toggle pointer lock support" PRIVATE OFF)
WEBKIT_OPTION_DEFINE(ENABLE_PUBLIC_SUFFIX_LIST "Toggle public suffix list support" PRIVATE ON)
+ WEBKIT_OPTION_DEFINE(ENABLE_RELEASE_LOG "Toggle release log support" PRIVATE OFF)
WEBKIT_OPTION_DEFINE(ENABLE_REMOTE_INSPECTOR "Toggle remote inspector support" PRIVATE ON)
WEBKIT_OPTION_DEFINE(ENABLE_RESOURCE_USAGE "Toggle resource usage support" PRIVATE OFF)
WEBKIT_OPTION_DEFINE(ENABLE_RUBBER_BANDING "Toggle rubber banding support" PRIVATE OFF)