Mir

Merge lp:~andreas-pokorny/mir/0.14-fix-abi-problems into lp:mir/0.14

Proposed by Andreas Pokorny
Status: Merged
Approved by: Andreas Pokorny
Approved revision: no longer in the source branch.
Merged at revision: 2709
Proposed branch: lp:~andreas-pokorny/mir/0.14-fix-abi-problems
Merge into: lp:mir/0.14
Diff against target: 114 lines (+12/-12)
8 files modified
debian/control (+5/-5)
debian/mir-platform-graphics-android3.install (+1/-1)
debian/mir-platform-graphics-mesa-kms3.install (+1/-1)
src/platform/symbols.map (+1/-1)
src/platforms/CMakeLists.txt (+1/-1)
src/platforms/android/server/symbols.map (+1/-1)
src/platforms/mesa/server/kms/symbols.map (+1/-1)
tests/mir_test_framework/symbols-server.map (+1/-1)
To merge this branch: bzr merge lp:~andreas-pokorny/mir/0.14-fix-abi-problems
Reviewer Review Type Date Requested Status
Chris Halse Rogers Approve
Daniel van Vugt Approve
Review via email: mp+265328@code.launchpad.net

Commit message

Bump the server graphics platform ABI and fix the symbols in libmirplatform.so.8 (LP: #1474773)

Description of the change

This change bumps the server graphics platform ABI, since even with proper symbol naming inside libmirplatform.so.8 we run into stack smashing problems as soon as mirserver31 (0.13.3) tries to draw with android-graphics.so.2 (0.14.0).

To post a comment you must log in.
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Is it necessary to bump both ABIs to fix the problem?

Is the stack smashing just due to the mixup of symbols from bug 1474773?

review: Needs Information
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Sorry, just read the description again. It sounds like we broke the ABI of android-graphics.so.2 in the past but failed to notice and bump it.

Reminder: If these ABIs are higher in 0.14 then we'll need to bump them higher yet again in 0.15 where we've broken them differently.

review: Approve
Revision history for this message
Chris Halse Rogers (raof) wrote :

Seems reasonable. Do we know how we broke the graphics platform ABI?

review: Approve
Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

I could not figure out what change in particular caused this. But it corrupts the stack when we attempt to draw. Client connecting creating buffers and some initial redraws seem to work fine, but as soon as we try to draw to screen the process is killed.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

ABI bumps are free. If it works, land it.

Still remember to try and automate ABI checking ASAP... :P

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/control'
--- debian/control 2015-07-20 20:38:44 +0000
+++ debian/control 2015-07-20 21:59:30 +0000
@@ -268,7 +268,7 @@
268 Contains the shared libraries required for the Mir server and client.268 Contains the shared libraries required for the Mir server and client.
269269
270# Longer-term these drivers should move out-of-tree270# Longer-term these drivers should move out-of-tree
271Package: mir-platform-graphics-mesa-kms2271Package: mir-platform-graphics-mesa-kms3
272Section: libs272Section: libs
273Architecture: linux-any273Architecture: linux-any
274Multi-Arch: same274Multi-Arch: same
@@ -287,14 +287,14 @@
287Package: mir-platform-graphics-mesa2287Package: mir-platform-graphics-mesa2
288Section: oldlibs288Section: oldlibs
289Architecture: linux-any289Architecture: linux-any
290Depends: mir-platform-graphics-mesa-kms2,290Depends: mir-platform-graphics-mesa-kms3,
291 ${misc:Depends},291 ${misc:Depends},
292 ${shlibs:Depends},292 ${shlibs:Depends},
293Description: transitional dummy package293Description: transitional dummy package
294 This is a transitional dummy package created due to package renaming.294 This is a transitional dummy package created due to package renaming.
295 It can safely be removed.295 It can safely be removed.
296296
297Package: mir-platform-graphics-android2297Package: mir-platform-graphics-android3
298Section: libs298Section: libs
299Architecture: i386 amd64 armhf299Architecture: i386 amd64 armhf
300Multi-Arch: same300Multi-Arch: same
@@ -356,7 +356,7 @@
356Multi-Arch: same356Multi-Arch: same
357Pre-Depends: ${misc:Pre-Depends}357Pre-Depends: ${misc:Pre-Depends}
358Depends: ${misc:Depends},358Depends: ${misc:Depends},
359 mir-platform-graphics-mesa-kms2,359 mir-platform-graphics-mesa-kms3,
360 mir-client-platform-mesa2,360 mir-client-platform-mesa2,
361Description: Display server for Ubuntu - desktop driver metapackage361Description: Display server for Ubuntu - desktop driver metapackage
362 Mir is a display server running on linux systems, with a focus on efficiency,362 Mir is a display server running on linux systems, with a focus on efficiency,
@@ -371,7 +371,7 @@
371Multi-Arch: same371Multi-Arch: same
372Pre-Depends: ${misc:Pre-Depends}372Pre-Depends: ${misc:Pre-Depends}
373Depends: ${misc:Depends},373Depends: ${misc:Depends},
374 mir-platform-graphics-android2,374 mir-platform-graphics-android3,
375 mir-client-platform-android2,375 mir-client-platform-android2,
376Description: Display server for Ubuntu - android driver metapackage376Description: Display server for Ubuntu - android driver metapackage
377 Mir is a display server running on linux systems, with a focus on efficiency,377 Mir is a display server running on linux systems, with a focus on efficiency,
378378
=== renamed file 'debian/mir-platform-graphics-android2.install' => 'debian/mir-platform-graphics-android3.install'
--- debian/mir-platform-graphics-android2.install 2015-06-17 05:20:42 +0000
+++ debian/mir-platform-graphics-android3.install 2015-07-20 21:59:30 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/mir/server-platform/graphics-android.so.21usr/lib/*/mir/server-platform/graphics-android.so.3
22
=== renamed file 'debian/mir-platform-graphics-mesa-kms2.install' => 'debian/mir-platform-graphics-mesa-kms3.install'
--- debian/mir-platform-graphics-mesa-kms2.install 2015-06-17 05:20:42 +0000
+++ debian/mir-platform-graphics-mesa-kms3.install 2015-07-20 21:59:30 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/mir/server-platform/graphics-mesa-kms.so.21usr/lib/*/mir/server-platform/graphics-mesa-kms.so.3
22
=== modified file 'src/platform/symbols.map'
--- src/platform/symbols.map 2015-06-17 05:20:42 +0000
+++ src/platform/symbols.map 2015-07-20 21:59:30 +0000
@@ -1,4 +1,4 @@
1MIRPLATFORM_7 {1MIRPLATFORM_8 {
2 global:2 global:
3 extern "C++" {3 extern "C++" {
4# The following symbols come from running a script over the generated docs. Vis:4# The following symbols come from running a script over the generated docs. Vis:
55
=== modified file 'src/platforms/CMakeLists.txt'
--- src/platforms/CMakeLists.txt 2015-06-17 05:20:42 +0000
+++ src/platforms/CMakeLists.txt 2015-07-20 21:59:30 +0000
@@ -7,7 +7,7 @@
7set(MIR_SERVER_INPUT_PLATFORM_ABI ${MIR_SERVER_INPUT_PLATFORM_ABI} PARENT_SCOPE)7set(MIR_SERVER_INPUT_PLATFORM_ABI ${MIR_SERVER_INPUT_PLATFORM_ABI} PARENT_SCOPE)
8set(MIR_SERVER_INPUT_PLATFORM_VERSION "MIR_INPUT_PLATFORM_${MIR_SERVER_INPUT_PLATFORM_ABI}")8set(MIR_SERVER_INPUT_PLATFORM_VERSION "MIR_INPUT_PLATFORM_${MIR_SERVER_INPUT_PLATFORM_ABI}")
9set(MIR_SERVER_INPUT_PLATFORM_VERSION ${MIR_SERVER_INPUT_PLATFORM_VERSION} PARENT_SCOPE)9set(MIR_SERVER_INPUT_PLATFORM_VERSION ${MIR_SERVER_INPUT_PLATFORM_VERSION} PARENT_SCOPE)
10set(MIR_SERVER_GRAPHICS_PLATFORM_ABI 2)10set(MIR_SERVER_GRAPHICS_PLATFORM_ABI 3)
11set(MIR_SERVER_GRAPHICS_PLATFORM_ABI ${MIR_SERVER_GRAPHICS_PLATFORM_ABI} PARENT_SCOPE)11set(MIR_SERVER_GRAPHICS_PLATFORM_ABI ${MIR_SERVER_GRAPHICS_PLATFORM_ABI} PARENT_SCOPE)
12set(MIR_SERVER_GRAPHICS_PLATFORM_VERSION "MIR_GRAPHICS_PLATFORM_${MIR_SERVER_GRAPHICS_PLATFORM_ABI}")12set(MIR_SERVER_GRAPHICS_PLATFORM_VERSION "MIR_GRAPHICS_PLATFORM_${MIR_SERVER_GRAPHICS_PLATFORM_ABI}")
13set(MIR_SERVER_GRAPHICS_PLATFORM_VERSION ${MIR_SERVER_GRAPHICS_PLATFORM_VERSION} PARENT_SCOPE)13set(MIR_SERVER_GRAPHICS_PLATFORM_VERSION ${MIR_SERVER_GRAPHICS_PLATFORM_VERSION} PARENT_SCOPE)
1414
=== modified file 'src/platforms/android/server/symbols.map'
--- src/platforms/android/server/symbols.map 2015-04-28 07:54:10 +0000
+++ src/platforms/android/server/symbols.map 2015-07-20 21:59:30 +0000
@@ -1,4 +1,4 @@
1MIR_GRAPHICS_PLATFORM_2 {1MIR_GRAPHICS_PLATFORM_3 {
2 global:2 global:
3 add_graphics_platform_options;3 add_graphics_platform_options;
4 create_host_platform;4 create_host_platform;
55
=== modified file 'src/platforms/mesa/server/kms/symbols.map'
--- src/platforms/mesa/server/kms/symbols.map 2015-06-17 05:20:42 +0000
+++ src/platforms/mesa/server/kms/symbols.map 2015-07-20 21:59:30 +0000
@@ -1,4 +1,4 @@
1MIR_GRAPHICS_PLATFORM_2 {1MIR_GRAPHICS_PLATFORM_3 {
2 global:2 global:
3 add_graphics_platform_options;3 add_graphics_platform_options;
4 create_host_platform;4 create_host_platform;
55
=== modified file 'tests/mir_test_framework/symbols-server.map'
--- tests/mir_test_framework/symbols-server.map 2015-04-28 07:54:10 +0000
+++ tests/mir_test_framework/symbols-server.map 2015-07-20 21:59:30 +0000
@@ -1,4 +1,4 @@
1MIR_GRAPHICS_PLATFORM_2 {1MIR_GRAPHICS_PLATFORM_3 {
2 global:2 global:
3 add_graphics_platform_options;3 add_graphics_platform_options;
4 create_host_platform;4 create_host_platform;

Subscribers

People subscribed via source and target branches