Fwd: Bug#1050663: dar option --on-fly-isolate creates catalogue with broken slice_layout

Thomas <dar.support.ml-202308-Tv/[email protected]> Sun, 27 Aug 2023 22:41:52 +0200
Newsgroups gmane.comp.sysutils.backup.dar.support
Message-ID <[email protected]>
Dear DAR-support!

I use Debian and found the following bug in DAR.
I sent the report to the Debian maintainer whom asked me to forward the
report upstream via this mailing list.

Thank you for your time.

Tom

Subject: Bug#1050663: dar option --on-fly-isolate creates catalogue with broken slice_layout

> Package: dar
> Version: 2.7.10-2+b2
>
> Dear Maintainer,
>
> I try to do a differential backup with an earlier on-fly-isolated
> catalogue. It seems dar can't read the isolated catalogues anymore.
>
> ,---- [ Error ]
> | Final memory cleanup...
> | ---- exception type = [BUG] ----------
> | [source]
> |         File ../../../src/libdar/slice_layout.cpp line 48 : it seems to be a bug here
> |         stack dump :
> | /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar4EbugC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi+0x140)
> | [0x7f4ff3f79d50]
> |         stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(+0xf83bb) [0x7f4ff3ef83bb]
> |         stack dump :
> | /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar14header_version4readERNS_12generic_fileERNS_16user_interactionEb+0x264)
> | [0x7f4ff3fbc944]
> |         stack dump :
> | /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar24macro_tools_open_archiveERKSt10shared_ptrINS_16user_interactionEERKS0_INS_8entrepotEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_8limitintImEESG_NS_11crypto_algoERKNS_11secu_stringEjRNS_4pileERNS_14header_versionESG_SG_SG_RSI_bbbbRNS9_4listINS_8signatorESaISV_EEERNS_12slice_layoutEmmb+0x3aa)
> | [0x7f4ff3fe526a]
> |         stack dump :
> | /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar7archive9i_archiveC1ERKSt10shared_ptrINS_16user_interactionEERKNS_4pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESH_RKNS_20archive_options_readE+0x44f)
> | [0x7f4ff3fc1d6f]
> |         stack dump :
> | /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar7archiveC2ERKSt10shared_ptrINS_16user_interactionEERKNS_4pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESG_RKNS_20archive_options_readE+0xd6)
> | [0x7f4ff3f248c6]
> |         stack dump : dar(+0x49306) [0x560a2c6b1306]
> |         stack dump : dar(+0x5158c) [0x560a2c6b958c]
> |         stack dump : dar(+0x247d1) [0x560a2c68c7d1]
> |         stack dump : /lib/x86_64-linux-gnu/libc.so.6(+0x276ca) [0x7f4ff38456ca]
> |         stack dump : /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85) [0x7f4ff3845785]
> |         stack dump : dar(+0x24821) [0x560a2c68c821]
> | [most outside call]
> | -----------------------------------
> `----
>
> Reproduce the error
> ====================
> This is a minimal example to reproduce the error.
>
> ### Create som structure to backup
> $ export BASE=/tmp/dar_debug
> $ mkdir -p ${BASE}/bak ${BASE}/cat ${BASE}/files
> $ touch ${BASE}/files/file1
>
> ### Create the backup and the on-fly-isolation
> $ dar --create ${BASE}/bak/full --fs-root ${BASE}/files/ --aux ${BASE}/cat/full_onthefly
>
> ### Do a manual isolation after the backup is done
> $ dar --ref ${BASE}/bak/full --isolate ${BASE}/cat/full_isolate
>
> ### As described in the man page on-fly-isolation is always compressed so
> ### lets do this manually, too
> $ dar --ref ${BASE}/bak/full --compression=bzip2 --isolate ${BASE}/cat/full_isolate_compressed
>
> ### checking the results
> # the backup itself and the after backup-catalogues are working:
> $ dar --list ${BASE}/bak/full
> [Data ][D][ EA  ][FSA][Compr][S]| Permission | User  | Group | Size    |          Date                 |    filename
> --------------------------------+------------+-------+-------+---------+-------------------------------+------------
> [Saved][ ]       [-L-][     ][ ]  -rw-r--r--   thomas	thomas	0	Sun Aug 27 18:45:31 2023	file1
>
> $ dar --list ${BASE}/cat/full_isolate
> [Data ][D][ EA  ][FSA][Compr][S]| Permission | User  | Group | Size    |          Date                 |    filename
> --------------------------------+------------+-------+-------+---------+-------------------------------+------------
> [InRef][ ]       [-L-][-----][ ]  -rw-r--r--   thomas	thomas	0	Sun Aug 27 18:45:31 2023	file1
>
> $ dar --list ${BASE}/cat/full_isolate_compressed
> [Data ][D][ EA  ][FSA][Compr][S]| Permission | User  | Group | Size    |          Date                 |    filename
> --------------------------------+------------+-------+-------+---------+-------------------------------+------------
> [InRef][ ]       [-L-][-----][ ]  -rw-r--r--   thomas	thomas	0	Sun Aug 27 18:45:31 2023	file1
>
>
> # dar can't read the on-fly-catalogue and reports the error above:
> $ dar --list ${BASE}/cat/full_onthefly
> Final memory cleanup...
> ---- exception type = [BUG] ----------
> [source]
> 	File ../../../src/libdar/slice_layout.cpp line 48 : it seems to be a bug here
> 	stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar4EbugC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi+0x140) [0x7f4ff3f79d50]
> 	stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(+0xf83bb) [0x7f4ff3ef83bb]
> 	stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar14header_version4readERNS_12generic_fileERNS_16user_interactionEb+0x264) [0x7f4ff3fbc944]
> 	stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar24macro_tools_open_archiveERKSt10shared_ptrINS_16user_interactionEERKS0_INS_8entrepotEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_8limitintImEESG_NS_11crypto_algoERKNS_11secu_stringEjRNS_4pileERNS_14header_versionESG_SG_SG_RSI_bbbbRNS9_4listINS_8signatorESaISV_EEERNS_12slice_layoutEmmb+0x3aa) [0x7f4ff3fe526a]
> 	stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar7archive9i_archiveC1ERKSt10shared_ptrINS_16user_interactionEERKNS_4pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESH_RKNS_20archive_options_readE+0x44f) [0x7f4ff3fc1d6f]
> 	stack dump : /lib/x86_64-linux-gnu/libdar64.so.6000(_ZN6libdar7archiveC2ERKSt10shared_ptrINS_16user_interactionEERKNS_4pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESG_RKNS_20archive_options_readE+0xd6) [0x7f4ff3f248c6]
> 	stack dump : dar(+0x49306) [0x560a2c6b1306]
> 	stack dump : dar(+0x5158c) [0x560a2c6b958c]
> 	stack dump : dar(+0x247d1) [0x560a2c68c7d1]
> 	stack dump : /lib/x86_64-linux-gnu/libc.so.6(+0x276ca) [0x7f4ff38456ca]
> 	stack dump : /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85) [0x7f4ff3845785]
> 	stack dump : dar(+0x24821) [0x560a2c68c821]
> [most outside call]
> -----------------------------------
>
> What more did I test?
> =======================
> * If I do this example on Debian stable with dar 2.7.8 everything works
>   fine inclusive reading the on-fly-catalogue.
>   $ dar --list ${BASE}/cat/full_onthefly
>   [Data ][D][ EA  ][FSA][Compr][S]| Permission | User  | Group | Size    |          Date                 |    filename
>   --------------------------------+------------+-------+-------+---------+-------------------------------+------------
>   [InRef][ ]       [-L-][-----][ ]  -rw-r--r--   thomas	thomas	0	Sun Aug 27 18:31:20 2023	file1
>
> * I copied the defect on-fly-catalogue above to a stable maskin and tried
>   to read it with dar 2.7.8. I got the same error stack as shown above.
>
> * I checked /var/log/apt/history.log
>   * I had version 2.7.8-1+b3 installed when I did the last working
>     catalogue.
>   * I had version 2.7.9-2 installed with the first failing catalogue.
>   * Versions 2.7.10-2+b1 and 2.7.10-2+b2 generating failing catalogues,
>     too.
>
>
> Summary
> ========
> I seems to me that something with the on-fly-isolation in dar 2.7.9 is
> broken.
>
> Keep in touch if you need more information.
>
> Tom
>
> -- System Information:
> Debian Release: trixie/sid
>   APT prefers testing
>   APT policy: (500, 'testing')
> Architecture: amd64 (x86_64)
>
> Kernel: Linux 6.4.0-1-amd64 (SMP w/4 CPU threads; PREEMPT)
> Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE not set
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)
>
> Versions of packages dar depends on:
> ii  libc6            2.37-6
> ii  libcurl4         7.88.1-10
> ii  libdar64-6000    2.7.10-2+b2
> ii  libgcc-s1        13.1.0-9
> ii  libgpgme11       1.18.0-3+b1
> ii  libstdc++6       13.1.0-9
> ii  libthreadar1000  1.4.0-2
>
> dar recommends no packages.
>
> Versions of packages dar suggests:
> pn  dar-docs  <none>
> pn  par2      <none>
>
> -- no debconf information