diff --git a/.gitignore b/.gitignore index b9d0233..8e5b802 100644 --- a/.gitignore +++ b/.gitignore @@ -555,3 +555,5 @@ firefox-3.6.4.source.tar.bz2 /firefox-langpacks-108.0.2-20230112.tar.xz /firefox-109.0.source.tar.xz /firefox-langpacks-109.0-20230111.tar.xz +/firefox-109.0.1.source.tar.xz +/firefox-langpacks-109.0.1-20230201.tar.xz diff --git a/firefox.spec b/firefox.spec index fc61f0d..69bd9e3 100644 --- a/firefox.spec +++ b/firefox.spec @@ -172,13 +172,13 @@ ExcludeArch: i686 Summary: Mozilla Firefox Web browser Name: firefox -Version: 109.0 -Release: 4%{?pre_tag}%{?dist} +Version: 109.0.1 +Release: 1%{?pre_tag}%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz %if %{with langpacks} -Source1: firefox-langpacks-%{version}%{?pre_version}-20230111.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20230201.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source10: firefox-mozconfig @@ -251,6 +251,7 @@ Patch408: mozilla-1663844.patch Patch415: mozilla-1670333.patch Patch416: D164651.diff Patch417: D166324.diff +Patch418: mozilla-1813500.patch # PGO/LTO patches Patch600: pgo.patch @@ -527,6 +528,7 @@ This package contains results of tests executed during build. %patch415 -p1 -b .1670333 %patch416 -p1 -b .D164651 %patch417 -p1 -b .D166324 +%patch418 -p1 -b .1813500 # PGO patches %if %{build_with_pgo} @@ -1080,6 +1082,10 @@ fi #--------------------------------------------------------------------- %changelog +* Wed Feb 1 2023 Martin Stransky - 109.0.1-1 +- Updated to 109.0.1 +- Added fix for rhbz#2147344 / mzbz#1813500. + * Thu Jan 19 2023 Martin Stransky - 109.0-4 - Removed mozbz#1809162 diff --git a/mozilla-1813500.patch b/mozilla-1813500.patch new file mode 100644 index 0000000..565d27d --- /dev/null +++ b/mozilla-1813500.patch @@ -0,0 +1,94 @@ +changeset: 651243:ff57728124c6 +tag: tip +parent: 651233:dd0fdd1daa69 +user: stransky +date: Tue Jan 31 15:53:38 2023 +0100 +files: widget/gtk/GfxInfo.cpp +description: +Bug 1813500 [Linux] Don't hang Firefox when glxtest process hangs r?emilio,rmader + +Differential Revision: https://phabricator.services.mozilla.com/D168385 + + +diff --git a/widget/gtk/GfxInfo.cpp b/widget/gtk/GfxInfo.cpp +--- a/widget/gtk/GfxInfo.cpp ++++ b/widget/gtk/GfxInfo.cpp +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -29,6 +30,9 @@ + #include "WidgetUtilsGtk.h" + #include "MediaCodecsSupport.h" + ++// How long we wait for data from glxtest process in milliseconds. ++#define GLXTEST_TIMEOUT 4000 ++ + #define EXIT_STATUS_BUFFER_TOO_SMALL 2 + #ifdef DEBUG + bool fire_glxtest_process(); +@@ -99,12 +103,28 @@ void GfxInfo::GetData() { + // information in a separate process to protect against bad drivers. + + // if glxtest_pipe == -1, that means that we already read the information +- if (glxtest_pipe == -1) return; ++ if (glxtest_pipe == -1) { ++ return; ++ } ++ ++ const TimeStamp deadline = ++ TimeStamp::Now() + TimeDuration::FromMilliseconds(GLXTEST_TIMEOUT); + + enum { buf_size = 2048 }; + char buf[buf_size]; +- ssize_t bytesread = read(glxtest_pipe, &buf, +- buf_size - 1); // -1 because we'll append a zero ++ ssize_t bytesread = 0; ++ ++ struct pollfd pfd {}; ++ pfd.fd = glxtest_pipe; ++ pfd.events = POLLIN; ++ auto ret = poll(&pfd, 1, GLXTEST_TIMEOUT); ++ if (ret <= 0) { ++ gfxCriticalNote << "glxtest: failed to read data from glxtest, we may " ++ "fallback to software rendering\n"; ++ } else { ++ // -1 because we'll append a zero ++ bytesread = read(glxtest_pipe, &buf, buf_size - 1); ++ } + close(glxtest_pipe); + glxtest_pipe = -1; + +@@ -129,9 +149,9 @@ void GfxInfo::GetData() { + int waitpid_errno = 0; + while (wait_for_glxtest_process) { + wait_for_glxtest_process = false; +- if (waitpid(glxtest_pid, &glxtest_status, 0) == -1) { ++ if (waitpid(glxtest_pid, &glxtest_status, WNOHANG) == -1) { + waitpid_errno = errno; +- if (waitpid_errno == EINTR) { ++ if (waitpid_errno == EAGAIN || waitpid_errno == EINTR) { + wait_for_glxtest_process = true; + } else { + // Bug 718629 +@@ -142,6 +162,15 @@ void GfxInfo::GetData() { + waiting_for_glxtest_process_failed = (waitpid_errno != ECHILD); + } + } ++ if (wait_for_glxtest_process) { ++ if (TimeStamp::Now() > deadline) { ++ gfxCriticalNote << "glxtest: glxtest process hangs\n"; ++ waiting_for_glxtest_process_failed = true; ++ break; ++ } ++ // Wait 100ms to another waitpid() check. ++ usleep(100000); ++ } + } + + int exit_code = EXIT_FAILURE; + diff --git a/sources b/sources index fcf64d5..96ba157 100644 --- a/sources +++ b/sources @@ -2,3 +2,5 @@ SHA512 (cbindgen-vendor.tar.xz) = 0d45c1decfd7aaee853748745c9f5a907c0c6a0cf809c2 SHA512 (mochitest-python.tar.gz) = e0a2c569dafe013b6a4c073516388549a8f398d8aa4538a3bc69dcda44737a3a3cf070285e9fa040a15d7a62446665c6158d42a1b6dc3e8d7f4680bc2ef17a16 SHA512 (firefox-langpacks-109.0-20230111.tar.xz) = 8a07111d28ae40a4761ffec839b51cb391291befd45adc18bbd6e20ded1e89aedbe69ae54f47aaf354cdd70f92d22833cf254ec1405930c9cd6d785e9d5c0daf SHA512 (firefox-109.0.source.tar.xz) = 9e2b6e20353e414da3d2eb9dcd3d77757664a98a4438a8e84f19a1c7c203e40136b08bf96a458fac05ddc627347217d32f1f6337980c5ca918874993657a58e7 +SHA512 (firefox-109.0.1.source.tar.xz) = 58b21449a16a794152888f50e7fe9488c28739a7e067729acdc1de9f2e8384e6316cffdfe89f690f0d211189668d940825b4f8a26b8100468ae120772df99d72 +SHA512 (firefox-langpacks-109.0.1-20230201.tar.xz) = d8497c53466650d06db44382b6e8a1ac337205c820f67b9a635a7ecc7001eaa4b9391de3f7e88e2f3602510150c54e128723915366438c296f7e15e729f87fb2