On 07/27/2016 03:59 PM, Anatoly Pugachev wrote: > Program received signal SIGBUS, Bus error. > 0x000000000015e160 in write_raid56_with_parity (info=0x2b17b0, > eb=0x2c7fe0, multi=0x2c2870, stripe_len=65536, raid_map=0x2c2570) at > volumes.c:2156 > 2156 *(unsigned long *)(p_eb->data + i) ^=
Well, that pretty much looks some creative pointer arithmetics that will provoke unaligned access. Just check what the declaration of p_eb->data is. If it's not "unsigned long", then you know why the code breaks here. You should be able to fix this issue by replacing the code line with: unsigned long tmp; memcpy(&tmp, &(ebs[j]->data + i), sizeof(unsigned long)); tmp ^= tmp; memcpy(&(p_eb->data + i), &tmp, sizeof(unsigned long)); I'm currently not sure whether this can be done more elegantly without provoking unaligned access due to the bitwise XOR (^). In either case, your problem is the casting and using memcpy() should fix the problem. Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer - glaub...@debian.org `. `' Freie Universitaet Berlin - glaub...@physik.fu-berlin.de `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913