[regression] symbol lookup error: /usr/lib/arm-linux-gnueabihf/libmirserver.so.24: undefined symbol: _ZTIN7android7RefBaseE (libmirserver 0.6.1 doesn't work with libmircommon 0.7.0)

Bug #1364890 reported by Michał Sawicz
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Daniel van Vugt
0.7
Won't Fix
High
Unassigned
mir (Ubuntu)
Fix Released
High
Unassigned
mir (Ubuntu RTM)
Fix Released
High
Unassigned

Bug Description

I'm getting:

unity-system-compositor: symbol lookup error: /usr/lib/arm-linux-gnueabihf/libmirserver.so.24: undefined symbol: _ZTIN7android7RefBaseE

$ system-image-cli -i
current build number: 13
device name: krillin
channel: ubuntu-touch/ubuntu-rtm/14.09-proposed
last update: 2014-09-03 07:58:22
version version: 13
version ubuntu: 20140903
version device: 20140902-42bae3c

Installing unity8-autopilot from a silo pulled in libmircommon1 (see attached excerpt from apt history.log), but I'm left with a mix of Mir 0.6.1 and 0.7.0:

$ LANG=C apt-cache policy libmirserver24 libmircommon1 libmirclient8
libmirserver24:
  Installed: 0.6.1+14.10.20140814-0ubuntu1
  Candidate: 0.6.1+14.10.20140814-0ubuntu1
  Version table:
 *** 0.6.1+14.10.20140814-0ubuntu1 0
        500 http://derived.archive.canonical.com/ubuntu-rtm/ 14.09/main armhf Packages
        100 /var/lib/dpkg/status
libmircommon1:
  Installed: 0.7.0+14.10.20140829~rtm-0ubuntu1
  Candidate: 0.7.0+14.10.20140829~rtm-0ubuntu1
  Version table:
 *** 0.7.0+14.10.20140829~rtm-0ubuntu1 0
        500 http://derived.archive.canonical.com/ubuntu-rtm/ 14.09/main armhf Packages
        100 /var/lib/dpkg/status
libmirclient8:
  Installed: 0.6.1+14.10.20140814-0ubuntu1
  Candidate: 0.7.0+14.10.20140829~rtm-0ubuntu1
  Version table:
     0.7.0+14.10.20140829~rtm-0ubuntu1 0
        500 http://derived.archive.canonical.com/ubuntu-rtm/ 14.09/main armhf Packages
 *** 0.6.1+14.10.20140814-0ubuntu1 0
        100 /var/lib/dpkg/status

ProblemType: Bug
DistroRelease: Ubuntu RTM 14.09
Package: libmircommon1 0.7.0+14.10.20140829~rtm-0ubuntu1
Uname: Linux 3.4.67 armv7l
ApportVersion: 2.14.7-0ubuntu1
Architecture: armhf
Date: Wed Sep 3 10:33:53 2014
InstallationDate: Installed on 2014-09-03 (0 days ago)
InstallationMedia: Ubuntu Utopic Unicorn (development branch) - armhf (20140903-030204)
SourcePackage: mir
UpgradeStatus: No upgrade log present (probably fresh install)

------
The package that was upgraded pulled in a new version of qtdeclarative5-qtmir-plugin which pulled in the new version of mircommon1 but not the current version of mirserver. The qtmir plugin only contains the qml bindings to mir server and hence only needs mircommon (compared to the qtmir-{desktop,android} packages). So the system ends up with a 0.7 mircommon1 and 0.6.1 mirserver.

With the last mircommon1 exported symbols were further reduced. The missing symbol is the intrusive android shared pointer base class constructor.

Related branches

Revision history for this message
Michał Sawicz (saviq) wrote :
description: updated
summary: - Some dependency or missed SONAME bump causes missing symbols
+ [regression] Some dependency or missed SONAME bump causes missing
+ symbols
summary: - [regression] Some dependency or missed SONAME bump causes missing
- symbols
+ [regression] symbol lookup error: /usr/lib/arm-linux-
+ gnueabihf/libmirserver.so.24: undefined symbol: _ZTIN7android7RefBaseE
Changed in mir:
milestone: none → 0.8.0
importance: Undecided → High
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: [regression] symbol lookup error: /usr/lib/arm-linux-gnueabihf/libmirserver.so.24: undefined symbol: _ZTIN7android7RefBaseE

This only seems to be a problem on devices with a mix of Mir 0.6 and 0.7. If you flash devel-proposed for example you'll get pure Mir 0.7.0 and no problem.

If the problem is indeed just that we failed to bump MIRCOMMON_ABI then that's understandable. In fact I did bump it and the change got reverted because there wasn't strong evidence of it actually being necessary. Needs more investigation, although it would be relatively harmless to just bump MIRCOMMON_ABI on development-branch right now.

description: updated
summary: [regression] symbol lookup error: /usr/lib/arm-linux-
gnueabihf/libmirserver.so.24: undefined symbol: _ZTIN7android7RefBaseE
+ (libmirserver 0.6.1 doesn't work with libmircommon 0.7.0)
tags: added: regression
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

A simple workaround *should* be to just ensure the version of the libmirserver package is the same as libmircommon. That should be possible to force...?

Changed in mir:
assignee: nobody → Daniel van Vugt (vanvugt)
Changed in mir:
status: New → In Progress
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

The trivial fix (an ABI bump in Mir 0.8) can't be backported to 0.7 for obvious reasons. And Saviq agrees a fix in 0.7 isn't strictly required, so "Won't Fix" in 0.7.

Changed in mir (Ubuntu):
status: New → Triaged
importance: Undecided → High
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir/devel at revision None, scheduled for release in mir, milestone Unknown

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
status: Fix Committed → Fix Released
Changed in mir (Ubuntu RTM):
importance: Undecided → High
status: New → Triaged
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (5.5 KiB)

This bug was fixed in the package mir - 0.8.0+14.10.20141010-0ubuntu1

---------------
mir (0.8.0+14.10.20141010-0ubuntu1) utopic; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.8.0 (https://launchpad.net/mir/+milestone/0.8.0)
    - Enhancements:
      . Less sensitivity to ABI breaks - many headers unused by external
        projects are now hidden and not installed by -dev packaes. If you
        require any headers that are missing, just ask.
      . Touchspots: --enable-touchspots to servers; visually shows touch
        locations (warning: This affects performance LP: #1373692).
      . Client performance reporting: Any Mir client can now get accurate
        performance information (frame rate, render time, buffer lag etc)
        logged to stdout. Just set env MIR_CLIENT_PERF_REPORT=log
      . Further improved touch responsiveness, with less lag and smoother
        scrolling (so long as you don't enable touchspots).
      . Slightly faster builds using precompiled headers.
      . Turn hardware overlays on by default. When in use, this halves the
        CPU usage of a Mir server. Already enabled in unity-system-compositor.
      . More scripting to detect ABI breaks.
      . Improved src/ tree consistency (renamed "src/shared" to "src/common").
      . Improved fatal signal design: Changed from SIGTERM to SIGHUP delivered
        to clients on unexpected server disconnection.
      . Improved library/package design to allow concurrent installations
        of different Mir versions without conflicts.
      . Fd reception code is now common to client and server.
    - ABI summary: Servers need rebuilding, but clients do not;
      . Mirclient ABI unchanged at 8
      . Mircommon ABI bumped to 2
      . Mirplatform ABI bumped to 3
      . Mirserver ABI bumped to 26
    - API changes between Mir 0.7 and 0.8:
      . Lots of headers removed from the public SDK! We have only hidden
        headers not known to be used by any known projects. Please let us
        know if anything is missing - https://bugs.launchpad.net/mir/+filebug
      . graphics::Platform - interface changed significantly.
      . Lots of server API changes to support touchspots.
      . File descriptors now passed as type Fd instead of int32_t.
    - Bug fixes:
      . [regression] Mir deb packages with versioned names cannot be installed
        simultaneously any more (LP: #1293944)
      . A frozen client can hang the whole server (LP: #1350207)
      . QtMir FTBFS: fatal error: mir/input/input_channel.h: No such file or
        directory (LP: #1365934)
      . [regression] platform-api fails to build against Mir 0.8 (LP: #1368354)
      . Mir FTBFS with gcc 4.9.1-14 (utopic update):
        auto_unblock_thread.h:44:46: error: no matching function for call to
        ‘std::thread::thread(<brace-enclosed initializer list>)’ (LP: #1369389)
      . [regression] Compositing is jerky and stutters during touch events
        (LP: #1372850)
      . unit test fails: AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_
        frameskipping (LP: #1373826)
      . intermittent hang in TestClientInput (LP: #1338612)
      . TestClientInput.scene_obscure_mo...

Read more...

Changed in mir (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (5.4 KiB)

This bug was fixed in the package mir - 0.8.0+14.10.20141005-0ubuntu1

---------------
mir (0.8.0+14.10.20141005-0ubuntu1) 14.09; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.8.0 (https://launchpad.net/mir/+milestone/0.8.0)
    - Enhancements:
      . Less sensitivity to ABI breaks - many headers unused by external
        projects are now hidden and not installed by -dev packaes. If you
        require any headers that are missing, just ask.
      . Touchspots: --enable-touchspots to servers; visually shows touch
        locations (warning: This affects performance LP: #1373692).
      . Client performance reporting: Any Mir client can now get accurate
        performance information (frame rate, render time, buffer lag etc)
        logged to stdout. Just set env MIR_CLIENT_PERF_REPORT=log
      . Further improved touch responsiveness, with less lag and smoother
        scrolling (so long as you don't enable touchspots).
      . Slightly faster builds using precompiled headers.
      . Turn hardware overlays on by default. When in use, this halves the
        CPU usage of a Mir server. Already enabled in unity-system-compositor.
      . More scripting to detect ABI breaks.
      . Improved src/ tree consistency (renamed "src/shared" to "src/common").
      . Improved fatal signal design: Changed from SIGTERM to SIGHUP delivered
        to clients on unexpected server disconnection.
      . Improved library/package design to allow concurrent installations
        of different Mir versions without conflicts.
      . Fd reception code is now common to client and server.
    - ABI summary: Servers need rebuilding, but clients do not;
      . Mirclient ABI unchanged at 8
      . Mircommon ABI bumped to 2
      . Mirplatform ABI bumped to 3
      . Mirserver ABI bumped to 26
    - API changes between Mir 0.7 and 0.8:
      . Lots of headers removed from the public SDK! We have only hidden
        headers not known to be used by any known projects. Please let us
        know if anything is missing - https://bugs.launchpad.net/mir/+filebug
      . graphics::Platform - interface changed significantly.
      . Lots of server API changes to support touchspots.
      . File descriptors now passed as type Fd instead of int32_t.
    - Bug fixes:
      . [regression] Mir deb packages with versioned names cannot be installed
        simultaneously any more (LP: #1293944)
      . A frozen client can hang the whole server (LP: #1350207)
      . QtMir FTBFS: fatal error: mir/input/input_channel.h: No such file or
        directory (LP: #1365934)
      . [regression] platform-api fails to build against Mir 0.8 (LP: #1368354)
      . Mir FTBFS with gcc 4.9.1-14 (utopic update):
        auto_unblock_thread.h:44:46: error: no matching function for call to
        ‘std::thread::thread(<brace-enclosed initializer list>)’ (LP: #1369389)
      . [regression] Compositing is jerky and stutters during touch events
        (LP: #1372850)
      . unit test fails: AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_
        frameskipping (LP: #1373826)
      . intermittent hang in TestClientInput (LP: #1338612)
      . TestClientInput.scene_obscure_mot...

Read more...

Changed in mir (Ubuntu RTM):
status: Triaged → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.