Package: mrpt
Version: 1:1.5.3-1
Severity: normal
Tags: patch
User: [email protected]
Usertags: origin-ubuntu bionic ubuntu-patch

Hi José Luis,

The new upstream release of mrpt fails to build on armhf in Ubuntu, because
it assumes unaligned reads are allowed.  This is not a portable assumption;
specifically, on armhf this may raise a SIGBUS depending on the CPU and the
kernel configuration.

The Ubuntu infrastructure does raise SIGBUS, so I've uploaded the attached
patch to Ubuntu to fix the failure.  Please consider applying this in Debian
as well, where it make affect some number of users even if it doesn't
trigger on Debian infrastructure.

Thanks,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
[email protected]                                     [email protected]
diff -Nru mrpt-1.5.3/debian/patches/no-unaligned-access 
mrpt-1.5.3/debian/patches/no-unaligned-access
--- mrpt-1.5.3/debian/patches/no-unaligned-access       1969-12-31 
16:00:00.000000000 -0800
+++ mrpt-1.5.3/debian/patches/no-unaligned-access       2017-10-30 
23:29:50.000000000 -0700
@@ -0,0 +1,19 @@
+Description: use alignment-safe buffers for our timevals.
+ Casting a char* to anything larger is not universally safe due to alignment
+ constraints on some platforms.  So declare our buffer in terms of a 64-bit
+ type to ensure architecture-appropriate alignment from the compiler.
+Author: Steve Langasek <[email protected]>
+
+Index: mrpt-1.5.3/libs/base/include/mrpt/utils/CTicTac.h
+===================================================================
+--- mrpt-1.5.3.orig/libs/base/include/mrpt/utils/CTicTac.h
++++ mrpt-1.5.3/libs/base/include/mrpt/utils/CTicTac.h
+@@ -28,7 +28,7 @@
+               void   Tic();  //!< Starts the stopwatch. \sa Tac
+               double Tac();  //!< Stops the stopwatch.  \return Returns the 
ellapsed time in seconds.  \sa Tic
+       private:
+-              unsigned char largeInts[64];
++              unsigned long long largeInts[8];
+       }; // End of class def.
+ 
+ } // End of namespace
diff -Nru mrpt-1.5.3/debian/patches/series mrpt-1.5.3/debian/patches/series
--- mrpt-1.5.3/debian/patches/series    1969-12-31 16:00:00.000000000 -0800
+++ mrpt-1.5.3/debian/patches/series    2017-10-30 23:29:38.000000000 -0700
@@ -0,0 +1 @@
+no-unaligned-access

Reply via email to