[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#858224: unblock: lizardfs/3.10.4+dfsg-4



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Affects: -1 lizardfs

Please unblock lizardfs/3.10.4+dfsg-4

This upload fixes serious run-time regression preventing master node from 
synchronising with other nodes and/or loading metadata after upgrade.

It is crucial to include this fix in order to avoid upgrade problems.

Thank you.

-- 
Cheers,
 Dmitry Smirnov
 GPG key : 4096R/52B6BBD953968D1B
diff --git a/debian/changelog b/debian/changelog
index 22ea9ae..eb8e428 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+lizardfs (3.10.4+dfsg-4) unstable; urgency=high
+
+  * New backported "526_gcc6.2.patch" to fix serious run-time regression.
+
+ -- Dmitry Smirnov <onlyjob@debian.org>  Sat, 11 Mar 2017 14:35:50 +1100
+
 lizardfs (3.10.4+dfsg-3) unstable; urgency=medium
 
   * Build-Depends: libgtest-dev --> googletest (Closes: #844893).
diff --git a/debian/patches/526_gcc6.2.patch b/debian/patches/526_gcc6.2.patch
new file mode 100644
index 0000000..7b0b7d0
--- /dev/null
+++ b/debian/patches/526_gcc6.2.patch
@@ -0,0 +1,54 @@
+Last-Update: 2017-03-11
+Forwarded: not-needed
+Bug-Upstream: https://github.com/lizardfs/lizardfs/issues/526
+Origin: upstream, https://github.com/lizardfs/lizardfs/commit/422175eb1aa8c2a1e4d0727ee3fe8190e1ae1340
+From: Hazeman <hazeman@skytechnology.pl>
+Date: Mon, 6 Mar 2017 13:57:16 +0100
+Description: common: Fix aliasing issue in compact_vector
+ This commit fixes pointer/data storage aliasing issue that occurs in gcc 6.2.
+
+ Change-Id: I39307532f168eabfc1b39b81e6c1fbb8eb1b3fce
+
+--- a/src/common/compact_vector.h
++++ b/src/common/compact_vector.h
+@@ -162,10 +162,10 @@
+ 	}
+ 
+ private:
+ 	union {
+-		pointer   ptr_;
+-		uint8_t   data_[sizeof(pointer)];
++		volatile pointer ptr_;
++		uint8_t data_[sizeof(pointer)];
+ 	};
+ 	size_type size_;
+ };
+ 
+@@ -278,10 +278,10 @@
+ 	}
+ 
+ private:
+ 	union {
+-		uint64_t ptr_;
+-		uint8_t  data_[8];
++		volatile uint64_t ptr_;
++		uint8_t data_[8];
+ 	};
+ #if !defined(NDEBUG) || defined(LIZARDFS_TEST_POINTER_OBFUSCATION)
+ 	pointer debug_ptr_;
+ #endif
+--- a/src/common/compact_vector_unittest.cc
++++ b/src/common/compact_vector_unittest.cc
+@@ -179,4 +179,12 @@
+ 
+ 	vec1.assign(6, 1);
+ 	EXPECT_NE(vec1.data(), (uint8_t *)&vec1);
+ }
++
++TEST(CompactVectorTest, GCC6) {
++	compact_vector<uint32_t> sessionid;
++	uint32_t val = 1978;
++
++	sessionid.push_back(val);
++	EXPECT_EQ(sessionid[0], val);
++}
diff --git a/debian/patches/series b/debian/patches/series
index 5d1ed75..bcb035e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,5 @@
 2749_69686d59.diff
+526_gcc6.2.patch
 #build-hurd.patch
 conf-add-mfshdd-comment.patch
 conf-default-ignoregid.patch

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: