Accepting request 796191 from home:Vogtinator:qt5.15

- Refresh fix1163766.patch

- Add fix1163766.patch to fix opensuse-welcome on i686 (boo#1163766)
  * QTBUG-81574.patch

- Fix a deadlock causing audio/video playback to fail (boo#1163744):
  * QTBUG-82186.patch

- Fix an issue with selections breaking replying in KMail:
  * QTBUG-81574.patch

OBS-URL: https://build.opensuse.org/request/show/796191
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt:5.15/libqt5-qtwebengine?expand=0&rev=7
This commit is contained in:
Christophe Giboudeaux 2020-04-23 11:15:04 +00:00 committed by Git OBS Bridge
parent 4209cab104
commit 5dd6614659
4 changed files with 126 additions and 0 deletions

48
QTBUG-82186.patch Normal file
View File

@ -0,0 +1,48 @@
From c729361f9f8f6c0602d401d5e230ba63ab11a682 Mon Sep 17 00:00:00 2001
From: Jüri Valdmann <juri.valdmann@qt.io>
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<LocaltimeRFunction>(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;

56
fix1163766.patch Normal file
View File

@ -0,0 +1,56 @@
Author Bernhard M. Wiedemann <bwiedemann suse de>
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)

View File

@ -4,6 +4,12 @@ Tue Apr 14 06:47:59 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- 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 <bwiedemann@suse.com>
- Add fix1163766.patch to fix opensuse-welcome on i686 (boo#1163766)
-------------------------------------------------------------------
Mon Mar 30 13:49:40 UTC 2020 - Fabian Vogt <fvogt@suse.com>
@ -26,6 +32,19 @@ Fri Feb 28 09:59:24 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
* No changelog available
- Drop patches, now upstream:
* fix-missing-designerplugin.patch
* QTBUG-81574.patch
-------------------------------------------------------------------
Fri Feb 21 13:36:31 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Fix a deadlock causing audio/video playback to fail (boo#1163744):
* QTBUG-82186.patch
-------------------------------------------------------------------
Fri Feb 21 09:25:44 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Fix an issue with selections breaking replying in KMail:
* QTBUG-81574.patch
-------------------------------------------------------------------
Wed Feb 19 10:17:00 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>

View File

@ -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