Title: [294626] trunk/Source/WebKit/Shared
Revision
294626
Author
[email protected]
Date
2022-05-22 23:31:12 -0700 (Sun, 22 May 2022)

Log Message

Ignore SIGPIPE in subprocesses
https://bugs.webkit.org/show_bug.cgi?id=240444

Reviewed by Adrian Perez de Castro.

One common case where ignoring SIGPIPE is desired is to avoid issues
when logging to journald and it crashes. As stated in
https://www.freedesktop.org/software/systemd/man/systemd-journald.service

"In order to react gracefully in this (journald stopped) case it is
recommended that programs logging to standard output/error ignore such
errors."

* Shared/AuxiliaryProcess.cpp: Avoid default platformInitialize on
Unix.
* Shared/unix/AuxiliaryProcessMain.cpp:
(WebKit::AuxiliaryProcess::platformInitialize): Added, ignore SIGPIPE.

Canonical link: https://commits.webkit.org/250852@main

Modified Paths

Diff

Modified: trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp (294625 => 294626)


--- trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp	2022-05-23 04:43:10 UTC (rev 294625)
+++ trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp	2022-05-23 06:31:12 UTC (rev 294626)
@@ -219,9 +219,12 @@
 }
 
 #if !PLATFORM(COCOA)
+
+#if !OS(UNIX)
 void AuxiliaryProcess::platformInitialize(const AuxiliaryProcessInitializationParameters&)
 {
 }
+#endif
 
 void AuxiliaryProcess::initializeSandbox(const AuxiliaryProcessInitializationParameters&, SandboxInitializationParameters&)
 {

Modified: trunk/Source/WebKit/Shared/unix/AuxiliaryProcessMain.cpp (294625 => 294626)


--- trunk/Source/WebKit/Shared/unix/AuxiliaryProcessMain.cpp	2022-05-23 04:43:10 UTC (rev 294625)
+++ trunk/Source/WebKit/Shared/unix/AuxiliaryProcessMain.cpp	2022-05-23 06:31:12 UTC (rev 294626)
@@ -28,6 +28,7 @@
 
 #include <_javascript_Core/Options.h>
 #include <WebCore/ProcessIdentifier.h>
+#include <signal.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -48,4 +49,13 @@
     return true;
 }
 
+void AuxiliaryProcess::platformInitialize(const AuxiliaryProcessInitializationParameters&)
+{
+    struct sigaction signalAction;
+    memset(&signalAction, 0, sizeof(signalAction));
+    RELEASE_ASSERT(!sigemptyset(&signalAction.sa_mask));
+    signalAction.sa_handler = SIG_IGN;
+    RELEASE_ASSERT(!sigaction(SIGPIPE, &signalAction, nullptr));
+}
+
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to