tags 653653 +patch
thanks

peter green wrote:
Unfortunately the test still fails with a bus error and I can't seem to figure out how to run the test manually to get a new backtrace. The executable "./integrity" simply doesn't seem to exist after the build process ends.
Ok fixed that issue too (thanks jurij for the help getting a new backtrace), and the package now builds successfully.

Patch is attatched.
diff -ur nbd-3.0/nbd-tester-client.c nbd-3.0.new/nbd-tester-client.c
--- nbd-3.0/nbd-tester-client.c	2011-10-01 10:28:58.000000000 +0000
+++ nbd-3.0.new/nbd-tester-client.c	2012-04-14 22:31:20.000000000 +0000
@@ -714,8 +714,8 @@
 }
 		
 static inline int checkbuf(char *buf, uint64_t seq, uint64_t blknum) {
-	char cmp[512];
-	makebuf(cmp, seq, blknum);
+	uint64_t cmp[64]; // 512/8 = 64
+	makebuf((char *)cmp, seq, blknum);
 	return memcmp(cmp, buf, 512)?-1:0;
 }
 
@@ -1100,13 +1100,15 @@
 				goto err_open;
 			}
 				
-			prc = g_hash_table_lookup(handlehash, rep.handle);
+			uint64_t handle;
+			memcpy(&handle,rep.handle,8);
+			prc = g_hash_table_lookup(handlehash, &handle);
 			if (!prc) {
 				retval=-1;
 				snprintf(errstr, errstr_len, "Unrecognised handle in reply: 0x%llX", *(long long unsigned int*)(rep.handle));
 				goto err_open;
 			}
-			if (!g_hash_table_remove(handlehash, rep.handle)) {
+			if (!g_hash_table_remove(handlehash, &handle)) {
 				retval=-1;
 				snprintf(errstr, errstr_len, "Could not remove handle from hash: 0x%llX", *(long long unsigned int*)(rep.handle));
 				goto err_open;

Reply via email to