diff --git a/QTBUG-82186.patch b/QTBUG-82186.patch new file mode 100644 index 0000000..9af1d43 --- /dev/null +++ b/QTBUG-82186.patch @@ -0,0 +1,48 @@ +From c729361f9f8f6c0602d401d5e230ba63ab11a682 Mon Sep 17 00:00:00 2001 +From: Jüri Valdmann +Date: Wed, 19 Feb 2020 14:15:34 +0100 +Subject: [PATCH] Fix recursive deadlock in sandbox::InitLibcLocaltimeFunctions + +QtWebEngineProcess overrides the C library's localtime* functions by redefining +the symbols in src/process/main.cpp and then using dlsym(RTLD_NEXT, ...) to +fetch the original symbols in //sandbox/linux/services/libc_interceptor.cc. The +functions InitLibcLocaltimeFunctions{,Impl} use pthread_once to guarantee that +this symbol resolution happens only once. + +If dlsym fails, for example because the C library is earlier in the search path +than QtWebEngineCore, then InitLibcLocaltimeFunctionsImpl tries to print an +error message with LOG(ERROR). However, printing a log message involves also +printing the timestamp in the local time zone, using, of course, localtime_r. +Thus, InitLibcLocaltimeFunctions depends on localtime_r depends on +InitLibcLocaltimeFunctions, and we get a deadlock due to the recursive use of +pthread_once. + +This deadlock happens only for utility processes and not for zygotes or +renderers, since the latter proxy the localtime* calls back to the main process. +(See service_manager::ZygoteMain, where the first function call is to +sandbox::SetAmZygoteOrRenderer, and compare with content::UtilityMain) + +Task-number: QTBUG-82186 +Change-Id: I32009e8482b2634c47082a4c89393dc61c22507e +--- + +diff --git a/src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc b/chromium/sandbox/linux/services/libc_interceptor.cc +index ed4dd02..fad77f9 100644 +--- a/src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc ++++ b/src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc +@@ -199,6 +199,7 @@ + g_libc_funcs->localtime64_r = + reinterpret_cast(dlsym(RTLD_NEXT, "localtime64_r")); + ++#if !defined(TOOLKIT_QT) + if (!g_libc_funcs->localtime || !g_libc_funcs->localtime_r) { + // https://bugs.chromium.org/p/chromium/issues/detail?id=16800 + // +@@ -210,6 +211,7 @@ + " time related functions to misbehave. " + "https://bugs.chromium.org/p/chromium/issues/detail?id=16800"; + } ++#endif + + if (!g_libc_funcs->localtime) + g_libc_funcs->localtime = gmtime; diff --git a/fix1163766.patch b/fix1163766.patch new file mode 100644 index 0000000..8477d3d --- /dev/null +++ b/fix1163766.patch @@ -0,0 +1,56 @@ +Author Bernhard M. Wiedemann +Date: 2020-04-07 + +https://bugzilla.opensuse.org/show_bug.cgi?id=1163766 + +seccomp filters disallow a new kernel syscall to get time +used on i586 + +Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h +=================================================================== +--- qtwebengine-everywhere-src-5.15.0-beta3.orig/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h ++++ qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h +@@ -1710,5 +1710,13 @@ + #define __NR_clone3 435 + #endif + ++#if !defined(__NR_clock_gettime64) ++#define __NR_clock_gettime64 403 ++#endif ++ ++#if !defined(__NR_clock_nanosleep_time64) ++#define __NR_clock_nanosleep_time64 407 ++#endif ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_ + +Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +=================================================================== +--- qtwebengine-everywhere-src-5.15.0-beta3.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc ++++ qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +@@ -151,6 +151,11 @@ ResultExpr EvaluateSyscallImpl(int fs_de + if (sysno == __NR_clock_gettime || sysno == __NR_clock_nanosleep) { + return RestrictClockID(); + } ++#if defined(__NR_clock_gettime64) ++ if (sysno == __NR_clock_gettime64 || sysno == __NR_clock_nanosleep_time64) { ++ return RestrictClockID(); ++ } ++#endif + + if (sysno == __NR_clone) { + return RestrictCloneToThreadsAndEPERMFork(); +Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_ime_policy_linux.cc +=================================================================== +--- qtwebengine-everywhere-src-5.15.0-beta3.orig/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_ime_policy_linux.cc ++++ qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_ime_policy_linux.cc +@@ -31,6 +31,9 @@ ResultExpr ImeProcessPolicy::EvaluateSys + #if defined(__NR_clock_gettime) + case __NR_clock_gettime: + #endif ++#if defined(__NR_clock_gettime64) ++ case __NR_clock_gettime64: ++#endif + return Allow(); + // https://crbug.com/991435 + #if defined(__NR_getrusage) diff --git a/libqt5-qtwebengine.changes b/libqt5-qtwebengine.changes index b9a303e..22f659f 100644 --- a/libqt5-qtwebengine.changes +++ b/libqt5-qtwebengine.changes @@ -4,6 +4,12 @@ Tue Apr 14 06:47:59 UTC 2020 - Fabian Vogt - Update to 5.15.0-beta3: * New bugfix release * No changelog available +- Refresh fix1163766.patch + +------------------------------------------------------------------- +Thu Apr 9 08:21:02 UTC 2020 - Bernhard Wiedemann + +- Add fix1163766.patch to fix opensuse-welcome on i686 (boo#1163766) ------------------------------------------------------------------- Mon Mar 30 13:49:40 UTC 2020 - Fabian Vogt @@ -26,6 +32,19 @@ Fri Feb 28 09:59:24 UTC 2020 - Fabian Vogt * No changelog available - Drop patches, now upstream: * fix-missing-designerplugin.patch + * QTBUG-81574.patch + +------------------------------------------------------------------- +Fri Feb 21 13:36:31 UTC 2020 - Fabian Vogt + +- Fix a deadlock causing audio/video playback to fail (boo#1163744): + * QTBUG-82186.patch + +------------------------------------------------------------------- +Fri Feb 21 09:25:44 UTC 2020 - Fabian Vogt + +- Fix an issue with selections breaking replying in KMail: + * QTBUG-81574.patch ------------------------------------------------------------------- Wed Feb 19 10:17:00 UTC 2020 - Fabian Vogt diff --git a/libqt5-qtwebengine.spec b/libqt5-qtwebengine.spec index bbd23cf..c19f957 100644 --- a/libqt5-qtwebengine.spec +++ b/libqt5-qtwebengine.spec @@ -53,8 +53,11 @@ Patch1: armv6-ffmpeg-no-thumb.patch Patch2: disable-gpu-when-using-nouveau-boo-1005323.diff # PATCH-FIX-UPSTREAM 0001-fix-build-after-y2038-changes-in-glibc.patch Patch3: 0001-fix-build-after-y2038-changes-in-glibc.patch +# PATCH-FIX-UPSTREAM https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/291216 +Patch5: QTBUG-82186.patch # PATCH-FIX-OPENSUSE Patch6: some-more-includes-gcc10.patch +Patch7: fix1163766.patch # http://www.chromium.org/blink not ported to PowerPC ExcludeArch: ppc ppc64 ppc64le s390 s390x # Try to fix i586 MemoryErrors with rpmlint