On 01/18/2017 01:13 AM, Christoph Groth wrote: > Christoph Groth wrote: >> Chris Murphy wrote: >>> On Tue, Jan 17, 2017 at 1:25 PM, Christoph Groth >>> <[email protected]> wrote: >>>> Any ideas on what could be done? If you need help to debug the >>>> problem with >>>> btrfs-image, please tell me what I should do. I can keep the broken >>>> file >>>> system around until an image can be created at some later time. >>> >>> Try 4.9, or even 4.8.5, tons of bugs have been fixed since 4.7.3 >>> although I don't know off hand if this particular bug is fixed. I did >>> recently do a btrfs-image with btrfs-progs v4.9 with -s and did not >>> get a segfault. >> >> I compiled btrfs-image.static from btrfs-tools 4.9 (from git) and >> started it from Debian testing's initramfs. The exact command that I >> use is: >> >> /mnt/btrfs-image.static -c3 -s /dev/sda2 /mnt/mim-s.bim >> >> It runs for a couple of seconds (enough to write 20263936 bytes of >> output) and then quits with >> >> *** Error in `/mnt/btrfs-image.static`: double free or corruption >> (!prev): 0x00000000009f0940 *** >> ====== Backtrace: ====== >> [0x45fb97] >> [0x465442] >> [0x465c1e] >> [0x402694] >> [0x402dcb] >> [0x4031fe] >> [0x4050ff] >> [0x405783] >> [0x44cb73] >> [0x44cdfe] >> [0x400b2a] >> >> (I had to type the above off the other screen, but I double checked >> that there are no errors.) >> >> The executable that I used can be downloaded from >> http://groth.fr/btrfs-image.static >> Its md5sum is 48abbc82ac6d3c0cb88cba1e5edb85fd. >> >> I hope that this can help someone to see what's going on. > > I ran the same executable under gdb from a live system. The log is > attached. >
Thanks Christoph for the backtrace. I am unable to reproduce it, but
looking at your backtrace, I found a bug. Would you be able to give it a
try and check if it fixes the problem?
diff --git a/image/main.c b/image/main.c
index 58dcecb..0158844 100644
--- a/image/main.c
+++ b/image/main.c
@@ -550,7 +550,7 @@ static void sanitize_name(struct metadump_struct
*md, u8 *dst,
return;
}
- memcpy(eb->data, dst, eb->len);
+ memcpy(eb->data, src->data, src->len);
switch (key->type) {
case BTRFS_DIR_ITEM_KEY:
--
Goldwyn
signature.asc
Description: OpenPGP digital signature
