X-Ryl669 / Frost

A backup program that does deduplication, compression, encryption
MIT License
28 stars 3 forks source link

Bug: multichunk size #5

Closed pbtrung closed 9 years ago

pbtrung commented 9 years ago

I have found a bug: ./Frost --backup dir --compression bsc --index index --remote remote

Compressing multichunk * Error in `./Frost': munmap_chunk(): invalid pointer: 0x00000000040e23c0 * ======= Backtrace: ========= /usr/lib/libc.so.6(+0x7198e)[0x7f2c499c698e] /usr/lib/libc.so.6(+0x76dee)[0x7f2c499cbdee] ./Frost[0x4403ac] ./Frost[0x41a435] ./Frost[0x41c731] ./Frost[0x41ccfb] ./Frost[0x495218] ./Frost[0x4320c0] ./Frost[0x46ae6b] ./Frost[0x499691] ./Frost[0x494498] ./Frost[0x494964] ./Frost[0x4714d8] ./Frost[0x48408b] ./Frost[0x486364] /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7f2c49975800] ./Frost[0x405d99] ======= Memory map: ======== 00400000-0054f000 r-xp 00000000 08:11 9569354 /home/trung/data/tmp/Frost 0074e000-00751000 rw-p 0014e000 08:11 9569354 /home/trung/data/tmp/Frost 00751000-00755000 rw-p 00000000 00:00 0 00c37000-0608e000 rw-p 00000000 00:00 0 [heap] 7f2c46f97000-7f2c48898000 rw-p 00000000 00:00 0 7f2c48898000-7f2c488cd000 r-xp 00000000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f2c488cd000-7f2c48acc000 ---p 00035000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f2c48acc000-7f2c48acd000 r--p 00034000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f2c48acd000-7f2c48ace000 rw-p 00035000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f2c48ace000-7f2c48add000 r-xp 00000000 08:01 3414129 /usr/lib/libbz2.so.1.0.6 7f2c48add000-7f2c48cdc000 ---p 0000f000 08:01 3414129 /usr/lib/libbz2.so.1.0.6 7f2c48cdc000-7f2c48cde000 rw-p 0000e000 08:01 3414129 /usr/lib/libbz2.so.1.0.6 7f2c48cde000-7f2c48d4c000 r-xp 00000000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f2c48d4c000-7f2c48f4b000 ---p 0006e000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f2c48f4b000-7f2c48f4c000 r--p 0006d000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f2c48f4c000-7f2c48f4d000 rw-p 0006e000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f2c48f4d000-7f2c48f62000 r-xp 00000000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f2c48f62000-7f2c49161000 ---p 00015000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f2c49161000-7f2c49162000 r--p 00014000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f2c49162000-7f2c49163000 rw-p 00015000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f2c49163000-7f2c4917f000 r-xp 00000000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f2c4917f000-7f2c4937e000 ---p 0001c000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f2c4937e000-7f2c49380000 r--p 0001b000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f2c49380000-7f2c49381000 rw-p 0001d000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f2c49381000-7f2c4943d000 r-xp 00000000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 7f2c4943d000-7f2c4963d000 ---p 000bc000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 7f2c4963d000-7f2c49643000 r--p 000bc000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 .......................

I can post the complete trace if you want, while, e.g., --multichunk 10M works.

X-Ryl669 commented 9 years ago

Since this is likely dependent on the data you are trying to backup, can you rebuild Frost with the this specific sequence:

make clean
make CFLAGS="-g -O0" CXXFLAGS="-g -O0"

Then please retry so you get a complete and useful trace for me. Thanks

pbtrung commented 9 years ago

Rebuild and run

Compressing multichunk * Error in `./Frost': munmap_chunk(): invalid pointer: 0x000000000522a3c0 * ======= Backtrace: ========= /usr/lib/libc.so.6(+0x7198e)[0x7f53efffb98e] /usr/lib/libc.so.6(+0x76dee)[0x7f53f0000dee] ./Frost[0x440a3c] ./Frost[0x41a407] ./Frost[0x41c725] ./Frost[0x41ccef] ./Frost[0x497ae8] ./Frost[0x4323c4] ./Frost[0x46b80b] ./Frost[0x49c3f9] ./Frost[0x496c34] ./Frost[0x497100] ./Frost[0x472564] ./Frost[0x486251] ./Frost[0x488588] /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7f53effaa800] ./Frost[0x405d69] ======= Memory map: ======== 00400000-00556000 r-xp 00000000 08:11 18087940 /home/trung/data/tmp/Frost 00756000-00759000 rw-p 00156000 08:11 18087940 /home/trung/data/tmp/Frost 00759000-0075d000 rw-p 00000000 00:00 0 01d7f000-071d6000 rw-p 00000000 00:00 0 [heap] 7f53ed5cc000-7f53eeecd000 rw-p 00000000 00:00 0 7f53eeecd000-7f53eef02000 r-xp 00000000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f53eef02000-7f53ef101000 ---p 00035000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f53ef101000-7f53ef102000 r--p 00034000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f53ef102000-7f53ef103000 rw-p 00035000 08:01 3432553 /usr/lib/libpng16.so.16.16.0 7f53ef103000-7f53ef112000 r-xp 00000000 08:01 3414129 /usr/lib/libbz2.so.1.0.6 7f53ef112000-7f53ef311000 ---p 0000f000 08:01 3414129 /usr/lib/libbz2.so.1.0.6 7f53ef311000-7f53ef313000 rw-p 0000e000 08:01 3414129 /usr/lib/libbz2.so.1.0.6 7f53ef313000-7f53ef381000 r-xp 00000000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f53ef381000-7f53ef580000 ---p 0006e000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f53ef580000-7f53ef581000 r--p 0006d000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f53ef581000-7f53ef582000 rw-p 0006e000 08:01 3418627 /usr/lib/libpcre.so.1.2.4 7f53ef582000-7f53ef597000 r-xp 00000000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f53ef597000-7f53ef796000 ---p 00015000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f53ef796000-7f53ef797000 r--p 00014000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f53ef797000-7f53ef798000 rw-p 00015000 08:01 3414137 /usr/lib/libz.so.1.2.8 7f53ef798000-7f53ef7b4000 r-xp 00000000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f53ef7b4000-7f53ef9b3000 ---p 0001c000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f53ef9b3000-7f53ef9b5000 r--p 0001b000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f53ef9b5000-7f53ef9b6000 rw-p 0001d000 08:01 3432568 /usr/lib/libgraphite2.so.3.0.1 7f53ef9b6000-7f53efa72000 r-xp 00000000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 7f53efa72000-7f53efc72000 ---p 000bc000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 7f53efc72000-7f53efc78000 r--p 000bc000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 7f53efc78000-7f53efc7c000 rw-p 000c2000 08:01 3410372 /usr/lib/libfreetype.so.6.11.4 7f53efc7c000-7f53efd88000 r-xp 00000000 08:01 3418840 /usr/lib/libglib-2.0.so.0.4200.2 7f53efd88000-7f53eff87000 ---p 0010c000 08:01 3418840 /usr/lib/libglib-2.0.so.0.4200.2 7f53eff87000-7f53eff88000 r--p 0010b000 08:01 3418840 /usr/lib/libglib-2.0.so.0.4200.2 7f53eff88000-7f53eff89000 rw-p 0010c000 08:01 3418840 /usr/lib/libglib-2.0.so.0.4200.2 7f53eff89000-7f53eff8a000 rw-p 00000000 00:00 0 7f53eff8a000-7f53f0123000 r-xp 00000000 08:01 3411047 /usr/lib/libc-2.21.so 7f53f0123000-7f53f0323000 ---p 00199000 08:01 3411047 /usr/lib/libc-2.21.so 7f53f0323000-7f53f0327000 r--p 00199000 08:01 3411047 /usr/lib/libc-2.21.so 7f53f0327000-7f53f0329000 rw-p 0019d000 08:01 3411047 /usr/lib/libc-2.21.so 7f53f0329000-7f53f032d000 rw-p 00000000 00:00 0 7f53f032d000-7f53f0343000 r-xp 00000000 08:01 3411401 /usr/lib/libgcc_s.so.1 7f53f0343000-7f53f0542000 ---p 00016000 08:01 3411401 /usr/lib/libgcc_s.so.1 7f53f0542000-7f53f0543000 rw-p 00015000 08:01 3411401 /usr/lib/libgcc_s.so.1 7f53f0543000-7f53f0646000 r-xp 00000000 08:01 3411095 /usr/lib/libm-2.21.so 7f53f0646000-7f53f0846000 ---p 00103000 08:01 3411095 /usr/lib/libm-2.21.so 7f53f0846000-7f53f0847000 r--p 00103000 08:01 3411095 /usr/lib/libm-2.21.so 7f53f0847000-7f53f0848000 rw-p 00104000 08:01 3411095 /usr/lib/libm-2.21.so 7f53f0848000-7f53f084a000 r-xp 00000000 08:01 3411077 /usr/lib/libdl-2.21.so 7f53f084a000-7f53f0a4a000 ---p 00002000 08:01 3411077 /usr/lib/libdl-2.21.so 7f53f0a4a000-7f53f0a4b000 r--p 00002000 08:01 3411077 /usr/lib/libdl-2.21.so 7f53f0a4b000-7f53f0a4c000 rw-p 00003000 08:01 3411077 /usr/lib/libdl-2.21.so 7f53f0a4c000-7f53f0a53000 r-xp 00000000 08:01 3411068 /usr/lib/librt-2.21.so 7f53f0a53000-7f53f0c52000 ---p 00007000 08:01 3411068 /usr/lib/librt-2.21.so 7f53f0c52000-7f53f0c53000 r--p 00006000 08:01 3411068 /usr/lib/librt-2.21.so 7f53f0c53000-7f53f0c54000 rw-p 00007000 08:01 3411068 /usr/lib/librt-2.21.so 7f53f0c54000-7f53f0d17000 r-xp 00000000 08:01 3431754 /usr/lib/libsqlite3.so.0.8.6 7f53f0d17000-7f53f0f17000 ---p 000c3000 08:01 3431754 /usr/lib/libsqlite3.so.0.8.6 7f53f0f17000-7f53f0f19000 r--p 000c3000 08:01 3431754 /usr/lib/libsqlite3.so.0.8.6 7f53f0f19000-7f53f0f1c000 rw-p 000c5000 08:01 3431754 /usr/lib/libsqlite3.so.0.8.6 7f53f0f1c000-7f53f116a000 r-xp 00000000 08:01 3416111 /usr/lib/libcrypto.so.1.0.0 7f53f116a000-7f53f1369000 ---p 0024e000 08:01 3416111 /usr/lib/libcrypto.so.1.0.0 7f53f1369000-7f53f1388000 r--p 0024d000 08:01 3416111 /usr/lib/libcrypto.so.1.0.0 7f53f1388000-7f53f1394000 rw-p 0026c000 08:01 3416111 /usr/lib/libcrypto.so.1.0.0 7f53f1394000-7f53f1398000 rw-p 00000000 00:00 0 7f53f1398000-7f53f1407000 r-xp 00000000 08:01 3416112 /usr/lib/libssl.so.1.0.0 7f53f1407000-7f53f1606000 ---p 0006f000 08:01 3416112 /usr/lib/libssl.so.1.0.0 7f53f1606000-7f53f160c000 r--p 0006e000 08:01 3416112 /usr/lib/libssl.so.1.0.0 7f53f160c000-7f53f1613000 rw-p 00074000 08:01 3416112 /usr/lib/libssl.so.1.0.0 7f53f1613000-7f53f162b000 r-xp 00000000 08:01 3411067 /usr/lib/libpthread-2.21.so 7f53f162b000-7f53f182a000 ---p 00018000 08:01 3411067 /usr/lib/libpthread-2.21.so 7f53f182a000-7f53f182b000 r--p 00017000 08:01 3411067 /usr/lib/libpthread-2.21.so 7f53f182b000-7f53f182c000 rw-p 00018000 08:01 3411067 /usr/lib/libpthread-2.21.so 7f53f182c000-7f53f1830000 rw-p 00000000 00:00 0 7f53f1830000-7f53f1887000 r-xp 00000000 08:01 3432580 /usr/lib/libharfbuzz.so.0.938.0 7f53f1887000-7f53f1a86000 ---p 00057000 08:01 3432580 /usr/lib/libharfbuzz.so.0.938.0 7f53f1a86000-7f53f1a88000 r--p 00056000 08:01 3432580 /usr/lib/libharfbuzz.so.0.938.0 7f53f1a88000-7f53f1a89000 rw-p 00058000 08:01 3432580 /usr/lib/libharfbuzz.so.0.938.0 7f53f1a89000-7f53f1b79000 r-xp 00000000 08:01 3411406 /usr/lib/libstdc++.so.6.0.20 7f53f1b79000-7f53f1d79000 ---p 000f0000 08:01 3411406 /usr/lib/libstdc++.so.6.0.20 7f53f1d79000-7f53f1d81000 r--p 000f0000 08:01 3411406 /usr/lib/libstdc++.so.6.0.20 7f53f1d81000-7f53f1d83000 rw-p 000f8000 08:01 3411406 /usr/lib/libstdc++.so.6.0.20 7f53f1d83000-7f53f1d98000 rw-p 00000000 00:00 0 7f53f1d98000-7f53f1dba000 r-xp 00000000 08:01 3411091 /usr/lib/ld-2.21.so 7f53f1f8d000-7f53f1f97000 rw-p 00000000 00:00 0 7f53f1fb4000-7f53f1fb9000 rw-p 00000000 00:00 0 7f53f1fb9000-7f53f1fba000 r--p 00021000 08:01 3411091 /usr/lib/ld-2.21.so 7f53f1fba000-7f53f1fbb000 rw-p 00022000 08:01 3411091 /usr/lib/ld-2.21.so 7f53f1fbb000-7f53f1fbc000 rw-p 00000000 00:00 0 7ffc1f8af000-7ffc1f8d0000 rw-p 00000000 00:00 0 [stack] 7ffc1f8fa000-7ffc1f8fc000 r--p 00000000 00:00 0 [vvar] 7ffc1f8fc000-7ffc1f8fe000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]

pbtrung commented 9 years ago

It did not build cleanly

In file included from ./ClassPath/src/Variant/../../include/Variant/UTIImpl.hpp:5:0, from ./ClassPath/src/Variant/UTIImpl.inc:2, from ./ClassPath/src/Variant/UTIImpl.cpp:2: ./ClassPath/src/Variant/../../include/Variant/../../include/Variant/UTI.hpp: In instantiation of ‘struct UniversalTypeIdentifier::Private::isEnum<bool, void>’: ./ClassPath/src/Variant/../../include/Variant/../../include/Variant/UTI.hpp:203:14: required from ‘struct UniversalTypeIdentifier::IsEnum<bool, void>’ ./ClassPath/src/Variant/../../include/Variant/../../include/Variant/Variant.hpp:224:35: required from ‘static Type::VarT::VirtualTable* Type::VarT::getTable(T) [with T = bool ; Policy = Type::ObjectCopyPolicy]’ ./ClassPath/src/Variant/../../include/Variant/../../include/Variant/Variant.hpp:325:29: required from ‘void Type::VarT::Init(const T&) [with T = bool; Policy = Type::ObjectCopyPolicy] ’ ./ClassPath/src/Variant/../../include/Variant/../../include/Variant/Variant.hpp:309:84: required from ‘Type::VarT::VarT(const T&) [with T = bool; Policy = Type::ObjectCopyPolicy]’ ./ClassPath/src/Variant/UTIImpl.cpp:63:5: required from here ./ClassPath/src/Variant/../../include/Variant/../../include/Variant/UTI.hpp:171:46: warning: converting ‘false’ to pointer type for argument 1 of ‘static UniversalTypeIdentifier::Private::Type2 UniversalTypeIdentifier::Private::isEnum<E, >::checkI(UniversalTypeIdentifier::Private::isEnum<E, >::nullsink) [with E = bool; <template-para meter-1-2> = void]’ [-Wconversion-null] enum { Result = sizeof(checkI(E())) == sizeof(Type1) ^

Compiling Frost.cpp Compiling bstrlib.c Compiling easyzlib.c Linking build/Frost build/./ClassPath/src/File/File.o: In function `File::Info::setMetaData(Bstrlib::String)': /home/trung/data/download/Frost/./ClassPath/src/File/File.cpp:884: warning: lchmod is not implemented and will always fail Built Frost version: 419 make CFLAGS="-g -O0" CXXFLAGS="-g -O0"

X-Ryl669 commented 9 years ago

Well, sorry. It built correctly (the warning, I can't get rid of, it's GCC only, since the behavior in the warning is exactly what I testing for). Can you run under gdb now that you have debug symbols ?

$ gdb --args ./Frost --backup dir --compression bsc --index index --remote remote
*whatever gdb says*
(gdb) run
* Crash happens here *
(gdb) bt
* Copy and paste what you get here *
X-Ryl669 commented 9 years ago

I'm not able to reproduce it. A run with valgrind does not report any memory error either. Likely, it's data related. The content of "dir" in your example is interesting to me (or the gdb stack trace, provided you can provide any of these). Thanks

pbtrung commented 9 years ago

I do not have time to do it now. I will not follow this anymore. Let's close this for now.