Bug 1741108 - libQT5WebEngineCore.so seems to be built with older version of re2 (unable to link with ldd)
Summary: libQT5WebEngineCore.so seems to be built with older version of re2 (unable to...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: re2
Version: 29
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Rex Dieter
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1741316 1741878 (view as bug list)
Depends On:
Blocks: 1741316
TreeView+ depends on / blocked
 
Reported: 2019-08-14 09:43 UTC by Julien Pagès
Modified: 2019-08-25 08:41 UTC (History)
7 users (show)

Fixed In Version: re2-20160401-11.fc29 re2-20160401-11.fc30
Clone Of:
Environment:
Last Closed: 2019-08-17 04:37:58 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Julien Pagès 2019-08-14 09:43:15 UTC
Description of problem:

I can not build a custom application using qtwebengine anymore. I have the following errors:

  /usr/bin/ld: /usr/lib64/libQt5WebEngineCore.so.5.12.2: undefined reference to `re2::RE2::Arg::parse_int(char const*, int, void*)'
  /usr/bin/ld: /usr/lib64/libQt5WebEngineCore.so.5.12.2: undefined reference to `re2::RE2::Arg::parse_string(char const*, int, void*)'

The issue seems to be that the re2 lib has been updated recently, but qtwebengine has been built against an older version. Look at the objdump output:

]$ objdump -TC /usr/lib64/libre2.so | grep parse_int
000000000003c0e0 g    DF .text  0000000000000061  Base        re2::RE2::Arg::parse_int_radix(char const*, unsigned long, void*, int)
000000000003c430 g    DF .text  000000000000000e  Base        re2::RE2::Arg::parse_int_octal(char const*, unsigned long, void*)
000000000003c410 g    DF .text  000000000000000e  Base        re2::RE2::Arg::parse_int(char const*, unsigned long, void*)
000000000003c440 g    DF .text  000000000000000b  Base        re2::RE2::Arg::parse_int_cradix(char const*, unsigned long, void*)
000000000003c420 g    DF .text  000000000000000e  Base        re2::RE2::Arg::parse_int_hex(char const*, unsigned long, void*)

As you can see, the signature is different (unsigned long instead of int).



Version-Release number of selected component (if applicable):

$ dnf info qt5-qtwebengine-devel re2
Last metadata expiration check: 0:33:00 ago on Wed Aug 14 11:06:37 2019.
Installed Packages
Name         : qt5-qtwebengine-devel
Version      : 5.12.2
Release      : 1.fc29
Architecture : x86_64
Size         : 312 k
Source       : qt5-qtwebengine-5.12.2-1.fc29.src.rpm
Repository   : @System
From repo    : updates
Summary      : Development files for qt5-qtwebengine
URL          : http://www.qt.io
License      : (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and
             : LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and
             : OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
Description  : Development files for qt5-qtwebengine.

Name         : re2
Version      : 20190801
Release      : 1.fc29
Architecture : x86_64
Size         : 479 k
Source       : re2-20190801-1.fc29.src.rpm
Repository   : @System
From repo    : updates
Summary      : C++ fast alternative to backtracking RE engines
URL          : http://github.com/google/re2/
License      : BSD
Description  : RE2 is a C++ library providing a fast, safe, thread-friendly
             : alternative to backtracking regular expression engines like those
             : used in PCRE, Perl, and Python.
             : 
             : Backtracking engines are typically full of features and
             : convenient syntactic sugar but can be forced into taking
             : exponential amounts of time on even small inputs.
             : 
             : In contrast, RE2 uses automata theory to guarantee that regular
             : expression searches run in time linear in the size of the input,
             : at the expense of some missing features (e.g back references and
             : generalized assertions).

Available Packages
Name         : qt5-qtwebengine-devel
Version      : 5.12.2
Release      : 1.fc29
Architecture : i686
Size         : 71 k
Source       : qt5-qtwebengine-5.12.2-1.fc29.src.rpm
Repository   : updates
Summary      : Development files for qt5-qtwebengine
URL          : http://www.qt.io
License      : (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and
             : LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and
             : OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
Description  : Development files for qt5-qtwebengine.

Name         : re2
Version      : 20190801
Release      : 1.fc29
Architecture : i686
Size         : 188 k
Source       : re2-20190801-1.fc29.src.rpm
Repository   : updates
Summary      : C++ fast alternative to backtracking RE engines
URL          : http://github.com/google/re2/
License      : BSD
Description  : RE2 is a C++ library providing a fast, safe, thread-friendly
             : alternative to backtracking regular expression engines like those
             : used in PCRE, Perl, and Python.
             : 
             : Backtracking engines are typically full of features and
             : convenient syntactic sugar but can be forced into taking
             : exponential amounts of time on even small inputs.
             : 
             : In contrast, RE2 uses automata theory to guarantee that regular
             : expression searches run in time linear in the size of the input,
             : at the expense of some missing features (e.g back references and
             : generalized assertions).



How reproducible:
build a minimal qt webengine application I guess and try to compile/link with standard f29 packages (from the updates repository).


Actual results:
can't link against libQt5WebEngineCore.so due to an error linking to libre2.so

Expected results:
link is possible.

Comment 1 Julien Pagès 2019-08-14 09:53:24 UTC
I forgot to mention, I checked on another fedora 29 computer less recently updated. The installed version of re2 is 20160401, and everything is working fine.

objdump output on this computer now have the "right" signature:

0000000000039b10 g    DF .text  000000000000000e  Base        re2::RE2::Arg::parse_int(char const*, int, void*)

Comment 2 Kevin Kofler 2019-08-14 11:28:18 UTC
The broken re2 update was pushed ignoring Bodhi feedback:
https://bodhi.fedoraproject.org/updates/FEDORA-2019-0f5dd9fe0d

Please sort out your mess! You will probably need to bump the re2 Epoch and revert on F29, then bump the Epoch also on F30, F31 (Branched) and Rawhide for upgrade path.

Comment 3 Kevin Kofler 2019-08-14 11:32:51 UTC
There is also a Bodhi bug involved: https://github.com/fedora-infra/bodhi/issues/3459 but if the maintainer had actually bothered reading the feedback and unpushing the update, this would probably not have happened.

Comment 4 Kevin Kofler 2019-08-14 11:35:59 UTC
For the user, the immediate workaround is:

sudo dnf --disablerepo=updates --disablerepo=updates-testing distro-sync re2

and then --exclude=re2 on all further updates until this is fixed.

Comment 5 Kevin Kofler 2019-08-14 11:41:57 UTC
For those wondering how the workaround works: Yes, it is possible to distro-sync individual packages. (Make sure you do not forget the "re2" at the end or you will downgrade everything to a non-updated ("GA") Fedora 29, whereas you want to downgrade only the "re2" package.) Those --disablerepo commands ensure that it will pick the version from Fedora 29 "GA" (the original release without updates). There was no previous re2 update anyway, so that is the previous version of re2 before the bad update.

Comment 6 Denis Arnaud 2019-08-14 13:34:00 UTC
(In reply to Kevin Kofler from comment #3)
> There is also a Bodhi bug involved:
> https://github.com/fedora-infra/bodhi/issues/3459 but if the maintainer had
> actually bothered reading the feedback and unpushing the update, this would
> probably not have happened.

Deep sorry for that mess! I thought that the update would not be (automatically) pushed to stable as it received negative karma on all the stable branches... Hard lesson learned: the updates are still automatically pushed to stable even with negative karma.
I was off far away with limited internet access, and could not easily launch all the rebuilds myself. Any patch/pull request is welcome to help revert to a stable situation.

Comment 7 Kevin Kofler 2019-08-14 13:40:02 UTC
(In reply to Denis Arnaud from comment #6)
> Deep sorry for that mess! I thought that the update would not be
> (automatically) pushed to stable as it received negative karma on all the
> stable branches... Hard lesson learned: the updates are still automatically
> pushed to stable even with negative karma.

To be fair, this was not SUPPOSED to be the case. This is the already mentioned Bodhi bug:
https://github.com/fedora-infra/bodhi/issues/3459

Comment 8 Rex Dieter 2019-08-14 16:17:00 UTC
I just went ahead and applied fixes to git to revert things back to working versions, will be submitting updates shortly.

Comment 9 Fedora Update System 2019-08-14 16:19:47 UTC
FEDORA-2019-d2ea4920a4 has been submitted as an update to Fedora 30. https://bodhi.fedoraproject.org/updates/FEDORA-2019-d2ea4920a4

Comment 10 Fedora Update System 2019-08-14 16:20:25 UTC
FEDORA-2019-605dfb7384 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2019-605dfb7384

Comment 11 Rex Dieter 2019-08-16 16:22:13 UTC
*** Bug 1741878 has been marked as a duplicate of this bug. ***

Comment 12 Fedora Update System 2019-08-16 19:50:31 UTC
re2-20160401-11.fc30 has been pushed to the Fedora 30 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-d2ea4920a4

Comment 13 Fedora Update System 2019-08-16 20:12:29 UTC
re2-20160401-11.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-605dfb7384

Comment 14 Fedora Update System 2019-08-17 04:37:58 UTC
re2-20160401-11.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.

Comment 15 Fedora Update System 2019-08-24 01:02:55 UTC
re2-20160401-11.fc30 has been pushed to the Fedora 30 stable repository. If problems still persist, please make note of it in this bug report.

Comment 16 Christian Krause 2019-08-25 08:41:26 UTC
*** Bug 1741316 has been marked as a duplicate of this bug. ***


Note You need to log in before you can comment on or make changes to this bug.